114 lines
3.0 KiB
C#
114 lines
3.0 KiB
C#
|
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<ObjManager>.GetInstance().MainPlayer == null)
|
|||
|
return;
|
|||
|
|
|||
|
m_MainPlayerPos = new Vector2(Singleton<ObjManager>.GetInstance().MainPlayer.transform.position.x, Singleton<ObjManager>.GetInstance().MainPlayer.transform.position.z);
|
|||
|
if (Vector2.Distance(m_MainPlayerPos, m_DesPos) >= hideDis)
|
|||
|
{
|
|||
|
closeShortCutItem();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|