using System.Collections; using System.Collections.Generic; using UnityEngine; using QFramework; using System; using QFramework.Example; public class TimeTipAction : IAction { public ulong ActionID { get; set; } public bool Deinited { get; set; } public bool Paused { get; set; } public ActionStatus Status { get; set; } private static readonly SimpleObjectPool mPool = new SimpleObjectPool(() => new TimeTipAction(), null, 10); string time; string label; string values; string finishedEvent; string needClick; string reverse; string format; public static TimeTipAction Allocate(string label, Dictionary datas, System.Action onDelayFinish = null) { var retNode = mPool.Allocate(); retNode.ActionID = ActionKit.ID_GENERATOR++; retNode.Deinited = false; retNode.Reset(); retNode.time = datas.ContainsKey("time") ? datas["time"] : ""; retNode.label = label; retNode.values = datas.ContainsKey("values") ? datas["values"] : ""; retNode.finishedEvent = datas.ContainsKey("finishedEvent") ? datas["finishedEvent"] : ""; retNode.needClick = datas.ContainsKey("needClick") ? datas["needClick"] : ""; retNode.reverse = datas.ContainsKey("reverse") ? datas["reverse"] : ""; retNode.format = datas.ContainsKey("format") ? datas["format"] : ""; return retNode; } public void Deinit() { if (!Deinited) { Deinited = true; mPool.Recycle(this); } } public void OnExecute(float dt) { } public void OnFinish() { } public void OnStart() { UITimeTipData data = new UITimeTipData(); data.label = label; float.TryParse(time, out data.time); bool.TryParse(needClick, out data.needClick); bool.TryParse(reverse, out data.reverse); data.format = format; data.finishedEvent = finishedEvent; string[] valueArr = values.Split('|'); foreach (var item in valueArr) { string[] valueStrs = item.Split(','); float startValue = 0; float endValue = 0; float.TryParse(valueStrs[0], out startValue); float.TryParse(valueStrs[1], out endValue); UITimeTipData.ValueItem valueItem = new UITimeTipData.ValueItem(startValue, endValue); data.values.Add(valueItem); } UIKit.OpenPanelAsync(uiData: data, canvasLevel: UILevel.PopUI).ToAction().StartGlobal(() => this.Finish()); } public void Reset() { Status = ActionStatus.NotStart; Paused = false; } }