using System; using System.Collections; using System.Collections.Generic; using TcgEngine.Gameplay; using UnityEngine; using UnityEngine.UI; namespace TcgEngine.UI { public class TaskItem : UIPanel { public string taskID; public Text taskName_text; public Text teskDesc_text; public Slider progressBar_slider; public Text progressBar_text; public Button reward_button; public Image reward_icon; public Image taskEnd_img; private PlayerTask playerTask; private TaskData taskConfig; protected override void Awake() { base.Awake(); Show(); taskEnd_img.gameObject.SetActive(false); } public void SetTask(TaskData config, PlayerTask task) { taskID = config.id; taskConfig = config; playerTask = task; taskName_text.text = taskConfig.name; teskDesc_text.text = taskConfig.desc; progressBar_slider.maxValue = config.value1; progressBar_slider.value = task.progress; progressBar_text.text = task.progress + "/" + taskConfig.value1; progressBar_slider.interactable = false; // 禁用交互性 reward_button.interactable = task.status == TaskStatus.Completed; reward_button.onClick.RemoveAllListeners(); reward_button.onClick.AddListener(OnClickReward); if (task.status == TaskStatus.Expired || task.status == TaskStatus.Claimed) { taskEnd_img.gameObject.SetActive(true); } RefreshStatus(); } private void OnClickReward() { if (playerTask != null && playerTask.status == TaskStatus.Completed) { TaskManager.Instance.ClaimTaskReward(playerTask); RefreshStatus(); } } private void RefreshStatus() { if (playerTask == null) return; progressBar_slider.value = playerTask.progress; progressBar_text.text = playerTask.progress + "/" + taskConfig.value1; } private void RewardColl(Sprite icon) { if (reward_icon != null) { reward_icon.sprite = icon; } } } }