76 lines
2.0 KiB
C#
76 lines
2.0 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using TcgEngine.Client;
|
|
using TcgEngine.Gameplay;
|
|
using UnityEngine;
|
|
|
|
namespace TcgEngine.UI
|
|
{
|
|
public class TaskPanel : UIPanel
|
|
{
|
|
public Transform taskListRoot;
|
|
public GameObject taskItemPrefab;
|
|
|
|
private Dictionary<string,TaskItem> taskItems = new Dictionary<string,TaskItem>();
|
|
public Dictionary<string, TaskData> allTaskData = new Dictionary<string, TaskData>();
|
|
protected override void Awake()
|
|
{
|
|
base.Awake();
|
|
// 清除所有子集
|
|
ClearTasks();
|
|
}
|
|
|
|
protected override void Start()
|
|
{
|
|
base.Start();
|
|
Show();
|
|
// UI 准备好后自己请求刷新
|
|
if (TaskManager.Instance != null)
|
|
TaskManager.Instance.ResetUIPanel();
|
|
}
|
|
|
|
public void RefreshTasks(List<PlayerTask> playerTasks)
|
|
{
|
|
if (playerTasks == null) return;
|
|
|
|
ClearTasks();
|
|
|
|
foreach (var playerTask in playerTasks)
|
|
{
|
|
if (!allTaskData.TryGetValue(playerTask.taskId,out TaskData taskConfig))
|
|
{
|
|
Debug.LogWarning($"未找到配置:{playerTask.taskId}");
|
|
continue;
|
|
}
|
|
|
|
GameObject go = Instantiate(taskItemPrefab, taskListRoot);
|
|
TaskItem item = go.GetComponent<TaskItem>();
|
|
if (item != null)
|
|
{
|
|
item.SetTask(taskConfig, playerTask);
|
|
taskItems[playerTask.taskId] = item;
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
private void ClearTasks()
|
|
{
|
|
// 删除已有任务Item
|
|
foreach (Transform child in taskListRoot)
|
|
{
|
|
Destroy(child.gameObject);
|
|
}
|
|
taskItems.Clear();
|
|
}
|
|
|
|
public override void AfterHide()
|
|
{
|
|
base.AfterHide();
|
|
ClearTasks();
|
|
}
|
|
}
|
|
}
|
|
|