using UnityEngine; using System.Collections; using UnityEngine.UI; using GCGame.Table; public class ShortCutItem : MonoBehaviour { public Button m_UseButton; public Button m_CloseButton; public Image Icon; public Text desc; public Text _Title; public static ShortCutItem Instance; private void Awake() { Instance = this; } private void OnEnable() { InvokeRepeating("CalculateDis", 1.0f, 0.2f); StartCoroutine(AutoUseItem()); } private void OnDestroy() { Instance = null; } private const float hideDis = 3.0f; private Vector2 m_DesPos = new Vector2(); private Vector2 m_MainPlayerPos = new Vector2(); private int _targetCharModelId = -1; public void SetIconAndDesc(int missionId, int missionIndex) { Tab_MissionBase missionBase = TableManager.GetMissionBaseByID(missionId, 0); if(missionBase == null) { closeShortCutItem(); } Tab_MissionLogic missionLogic = TableManager.GetMissionLogicByID(missionBase.LogicID, 0); if(missionLogic == null) { closeShortCutItem(); } Tab_MissionCollectItem collectItem = TableManager.GetMissionCollectItemByID(missionLogic.GetLogicIDbyIndex(missionIndex), 0); if(collectItem == null) { closeShortCutItem(); } _targetCharModelId = collectItem.CharModelID; if (_Title != null) { _Title.text = collectItem.ItemName; } Tab_MissionDictionary missionDic = TableManager.GetMissionDictionaryByID(missionId , 0); if(missionDic == null) { closeShortCutItem(); } m_DesPos = new Vector2(missionDic.GetTargetNpcPosXbyIndex(missionIndex), missionDic.GetTargetNpcPosZbyIndex(missionIndex)); LoadAssetBundle.Instance.SetImageSprite(Icon, collectItem.ItemIcon); desc.text = collectItem.ItemDesc; } public void closeShortCutItem() { CancelInvoke(); UIManager.CloseUI(UIInfo.CollectionItem); } private int _countTime = 0; IEnumerator AutoUseItem() { while(gameObject.activeInHierarchy) { yield return new WaitForSeconds(1.0f); _countTime++; if(_countTime >= 5) { useMyItem(); } } } public void useMyItem() { StopAllCoroutines(); GameManager.gameManager.MissionManager.MissionCollectItem(_targetCharModelId); closeShortCutItem(); } public void CalculateDis() { if (Singleton.GetInstance().MainPlayer == null) return; m_MainPlayerPos = new Vector2(Singleton.GetInstance().MainPlayer.transform.position.x, Singleton.GetInstance().MainPlayer.transform.position.z); if (Vector2.Distance(m_MainPlayerPos, m_DesPos) >= hideDis) { closeShortCutItem(); } } }