using cfg; using Gameplay; using TMPro; using UnityEngine; using UnityEngine.UI; public class UITaskNode: UINode { public Image imgBg; public Image imgRequirement; public TMP_Text txtTaskDesc; public TMP_Text txtTaskProcess; public Image imgTaskProcess; public Button btnClaim; public Button btnGoTo; public Button btnCantGet; public Button btnClaimed; public GameObject[] itemL; private TaskInfo _taskInfo; public override void OnAwake() { } public override void SetData(object data) { _taskInfo = data as TaskInfo; Refresh(); } public void SetButtons() { ClearBind(btnClaim); ClearBind(btnGoTo); BindButton(btnClaim, _OnClickClaim); BindButton(btnGoTo, _OnClickGoto); } public void Refresh() { if (_taskInfo == null) return; var cfg = _taskInfo.Cfg; _RefreshBg(); _RefreshTaskContent(); _RefreshRewards(); _RefreshButtons(); } private void _RefreshBg() { var color = imgBg.color; var alpha = _taskInfo.Status == TaskState.Claimed ? 127f : 210f; imgBg.color = new Color(color.r, color.b, color.g, alpha); } private void _RefreshTaskContent() { var desc = CommonUtils.GetLocalizeText(_taskInfo.Cfg.Describe); txtTaskDesc.text = desc; TaskManager.Instance.SetTaskRequestCount(_taskInfo, out var curCount, out var maxCount); txtTaskProcess.text = curCount + "/" + maxCount; var process = (float)curCount / maxCount; imgTaskProcess.fillAmount = process; } private async void _RefreshRewards() { var itemIDList = _taskInfo.ItemList; for (int i = 0; i < itemIDList.Count; i++) { var rewardItem = itemIDList[i]; var itemObj = new ItemObj(rewardItem.ID, itemL[i]); await itemObj.Init(); } } private void _RefreshButtons() { var status = _taskInfo.Status; btnClaim.gameObject.SetActive(status == TaskState.Available); btnClaimed.gameObject.SetActive(status == TaskState.Claimed); if (status == TaskState.Uncompleted) { var jumpToType = _taskInfo.Cfg.JumpFunc; btnCantGet.gameObject.SetActive(jumpToType == JumpFuncType.None); btnGoTo.gameObject.SetActive(jumpToType != JumpFuncType.None); } else { btnCantGet.gameObject.SetActive(false); btnGoTo.gameObject.SetActive(false); } } private void _OnClickClaim() { if (_taskInfo.Status == TaskState.Available) { TaskManager.Instance.ClaimTaskReward(_taskInfo.TaskID); } } private void _OnClickGoto() { if (_taskInfo.Status == TaskState.Uncompleted) { var jumpToType = _taskInfo.Cfg.JumpFunc; if (jumpToType == JumpFuncType.None) { return; } JumpToManager.JumpFunc(jumpToType); } } }