完善Task的UI数据传递和刷新。
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user