using System; using UnityEngine; using XMainClient.UI; using XUtliPoolLib; namespace XMainClient { internal class XCommandClickEntity : XBaseCommand { private GameObject _finger; private XEntity _target = null; public override bool Execute() { Vector3 zero = Vector3.zero; Transform parent = XSingleton.singleton.UIRoot.Find("TutorialPanel"); bool flag = this._finger == null; if (flag) { this._finger = (XSingleton.singleton.CreateFromPrefab("UI/Common/Quan", true, false) as GameObject); } this._finger.SetActive(false); this._finger.SetActive(true); XSingleton.singleton.AddChild(parent, this._finger.transform); this.UpdateFinger(); XSingleton.singleton.Exculsive = true; XSingleton.singleton.ExculsiveOnEntity = true; return true; } public override void Update() { base.Update(); this.UpdateFinger(); } protected void UpdateFinger() { bool flag = this._target == null || this._finger == null; if (!flag) { Vector3 vector = Vector3.zero; vector = this._target.EngineObject.Position; vector += new Vector3(0f, 0.8f, 0f); Vector3 vector2 = XSingleton.singleton.GameCamera.UnityCamera.WorldToViewportPoint(vector); Vector3 position = XSingleton.singleton.UICamera.ViewportToWorldPoint(vector2); this._finger.transform.position = position; Vector3 localPosition = this._finger.transform.localPosition; localPosition.x = (float)Mathf.FloorToInt(localPosition.x); localPosition.y = (float)Mathf.FloorToInt(localPosition.y); localPosition.z = 0f; this._finger.transform.localPosition = localPosition; } } public override void OnFinish() { this.Stop(); } public override void Stop() { XSingleton.singleton.Exculsive = false; XSingleton.singleton.ExculsiveOnEntity = false; XResourceLoaderMgr.SafeDestroy(ref this._finger, false); base.Stop(); } } }