Files
JJBB/Assets/Project/Script/GUI/BackPack/ShortCutItem.cs

114 lines
3.0 KiB
C#
Raw Normal View History

2024-08-23 15:49:34 +08:00
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();
}
}
}