完善Task的UI数据传递和刷新。

This commit is contained in:
YiHan0621
2025-09-10 17:34:28 +08:00
parent bf13498f86
commit d894d16884
5 changed files with 175 additions and 95 deletions

View File

@@ -3,6 +3,7 @@ using System.Collections.Generic;
using UnityEngine;
using TcgEngine.Gameplay;
using TcgEngine.UI;
using System.Linq;
namespace TcgEngine.Client
{
@@ -46,7 +47,10 @@ namespace TcgEngine.Client
// 找 UI 面板
taskPanel = GetComponent<TaskPanel>();
if (taskPanel == null)
{
taskPanel = FindObjectOfType<TaskPanel>();
}
}
private void OnDestroy()
@@ -62,13 +66,13 @@ namespace TcgEngine.Client
if (taskManager != null)
{
taskManager.OnPlayerLogin();
taskPanel.ShowTasks(taskManager.GetAllTasks());
// 强制第一次刷新
OnRefreshTaskPanel(TaskManager.Instance.GetAllTasks());
}
}
private void OnRefreshTaskPanel(List<PlayerTask> tasksList)
{
TaskManager taskManager = TaskManager.Instance;
if (taskManager == null || taskPanel == null)
return;
@@ -77,8 +81,29 @@ namespace TcgEngine.Client
activeTasks = taskManager.GetActiveTasks();
completedTasks = taskManager.GetCompletedTasks();
taskPanel.RefreshTasks(activeTasks);
// 用 tasks 排序
var sortedTasks = tasks
.OrderBy(t => GetTaskSortOrder(t.status))
.ThenBy(t => t.assignedTime)
.ToList();
taskPanel.allTaskData = taskManager.taskConfigs;
taskPanel.RefreshTasks(sortedTasks);
}
private int GetTaskSortOrder(TaskStatus status)
{
switch (status)
{
case TaskStatus.Completed: return 0; // 第一优先
case TaskStatus.Active: return 1;
case TaskStatus.Claimed: return 2;
case TaskStatus.Expired: return 3;
default: return 4;
}
}
}
}