diff options
author | chai <chaifix@163.com> | 2021-01-25 14:28:30 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2021-01-25 14:28:30 +0800 |
commit | 6eb915c129fc90c6f4c82ae097dd6ffad5239efc (patch) | |
tree | 7dd2be50edf41f36b60fac84696e731c13afe617 /Client/Assets/Scripts/XMainClient/Selector.cs |
+scripts
Diffstat (limited to 'Client/Assets/Scripts/XMainClient/Selector.cs')
-rw-r--r-- | Client/Assets/Scripts/XMainClient/Selector.cs | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/Client/Assets/Scripts/XMainClient/Selector.cs b/Client/Assets/Scripts/XMainClient/Selector.cs new file mode 100644 index 00000000..71d0c4d9 --- /dev/null +++ b/Client/Assets/Scripts/XMainClient/Selector.cs @@ -0,0 +1,139 @@ +using System;
+using System.Collections.Generic;
+using UILib;
+using UnityEngine;
+using XUtliPoolLib;
+
+namespace XMainClient
+{
+ internal class Selector
+ {
+ public Transform transform
+ {
+ get
+ {
+ return this._transfrom;
+ }
+ }
+
+ public Transform parent
+ {
+ get
+ {
+ return this._parent;
+ }
+ }
+
+ public uint ID = 0u;
+
+ public string Label = "";
+
+ public bool Selected = false;
+
+ public List<Selector> selectors = null;
+
+ public uint SelectorLevel = 0u;
+
+ private Transform _transfrom;
+
+ private Transform _parent;
+
+ private SelectorInvoke _invoke;
+
+ private SelectorBind _bind;
+
+ public void Bind(Transform parent, SelectorBind sBind, SelectorInvoke sInvoke)
+ {
+ this._bind = sBind;
+ this._invoke = sInvoke;
+ this._parent = parent;
+ this.BindData();
+ }
+
+ public void UnBind()
+ {
+ bool flag = this.selectors != null;
+ if (flag)
+ {
+ int i = 0;
+ int count = this.selectors.Count;
+ while (i < count)
+ {
+ this.selectors[i].UnBind();
+ i++;
+ }
+ }
+ this._transfrom = null;
+ this._parent = null;
+ this._invoke = null;
+ this._bind = null;
+ }
+
+ public void Release()
+ {
+ bool flag = this.selectors != null;
+ if (flag)
+ {
+ int i = 0;
+ int count = this.selectors.Count;
+ while (i < count)
+ {
+ this.selectors[i].UnBind();
+ this.selectors[i] = null;
+ i++;
+ }
+ this.selectors.Clear();
+ this.selectors = null;
+ }
+ SelectorPool.Release(this);
+ }
+
+ private void BindData()
+ {
+ bool flag = this._bind == null || this._parent == null;
+ if (flag)
+ {
+ XSingleton<XDebug>.singleton.AddErrorLog("BindData._bind is Null Or BindData._parent is Null", null, null, null, null, null);
+ }
+ else
+ {
+ this._transfrom = this._bind(this.SelectorLevel);
+ IXUILabel ixuilabel = this._transfrom.Find("Label").GetComponent("XUILabel") as IXUILabel;
+ IXUILabel ixuilabel2 = this._transfrom.Find("Selected/Label").GetComponent("XUILabel") as IXUILabel;
+ IXUISprite ixuisprite = this._transfrom.GetComponent("XUISprite") as IXUISprite;
+ ixuisprite.ID = (ulong)this.ID;
+ ixuilabel.SetText(this.Label);
+ ixuilabel2.SetText(this.Label);
+ ixuisprite.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this.OnClickSelector));
+ this._transfrom.parent = this._parent;
+ this._transfrom.localScale = Vector3.one;
+ this._transfrom.localPosition = new Vector3(0f, -((float)this._parent.childCount - 0.5f) * (float)ixuisprite.spriteHeight, 0f);
+ this.BindChildren();
+ }
+ }
+
+ private void BindChildren()
+ {
+ bool flag = this.selectors != null && this.selectors.Count > 0;
+ if (flag)
+ {
+ int i = 0;
+ int count = this.selectors.Count;
+ while (i < count)
+ {
+ this.selectors[i].Bind(this._transfrom, this._bind, this._invoke);
+ i++;
+ }
+ }
+ }
+
+ private void OnClickSelector(IXUISprite sprite)
+ {
+ bool flag = this._invoke != null;
+ if (flag)
+ {
+ this._invoke(this.ID);
+ }
+ }
+ }
+}
|