86 lines
2.4 KiB
C#
86 lines
2.4 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 : 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;
|
|
}
|
|
}
|
|
}
|
|
} |