Files
tcg-client/Assets/TcgEngine/Scripts/Tasks/TaskItem.cs

73 lines
2.0 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using TcgEngine.Gameplay;
using UnityEngine;
using UnityEngine.UI;
namespace TcgEngine.UI
{
public class TaskItem : MonoBehaviour
{
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;
private PlayerTask playerTask;
private TaskData taskConfig;
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);
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;
}
}
}
}