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

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();
}
}
}