TH1/Unity/Assets/Scripts/TH1_UI/View/Bottom/UIBottomTutorView.cs
2026-05-12 13:05:44 +08:00

119 lines
3.1 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using Animancer;
using Logic;
using Logic.Action;
using Logic.Audio;
using Logic.CrashSight;
using Logic.Multilingual;
using RuntimeData;
using TH1_Core.Events;
using TH1_Core.Managers;
using TH1_Logic.Core;
using TH1_Logic.MatchConfig;
using TH1_Logic.Net;
using TH1_Logic.Steam;
using TH1_UI.Components;
using TH1_UI.HintUI;
using TH1_UI.View.Info;
using TH1Renderer;
using TH1Resource;
using TMPro;
using UI.HintUI;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
namespace TH1_UI.View.Bottom
{
public class UIBottomTutorView : Base.View
{
//public Button closeButton;
//public ViDelegateAssisstant.Dele OnBtnCloseClick;
public GameObject RowPrefab;
public Transform RowFather;
//public Button CloseButton;
private List<UIBottomTutorMissionRow> Rows = new List<UIBottomTutorMissionRow>();
protected override void OnInit()
{
base.OnInit();
//CloseButton.onClick.RemoveAllListeners();
//CloseButton.onClick.AddListener(() => { OnBtnCloseClick.Invoke(); });
//CheckPanel.InitStart(RefreshStatus);
}
//通常一局只会set一次,每次都是完全清空,然后绑定新的一个对局的按钮
public void SetContent()
{
//if (Main.Instance.GameLogic.GetCurState() == GameState.Menu) return;
var taskList = new List<PlayerTaskInfo>();
//Step #2 安排好每个row的游戏对象
if (Main.MapData.MatchSettlement.PlayerSettlements.TryGetValue(Main.MapData.PlayerMap.SelfPlayerId,
out var settlement) && settlement.Settlements.Count > 0)
{
var data = settlement.Settlements[0];
taskList = data.Tasks;
}
// 串行任务支持:只展示"已完成"+"当前激活波次"的任务,未来波次完全隐藏。
// activeOrder = 未完成任务中最小 Order全部完成时为 int.MaxValue。
// Order 全为 0 时等价于全部并行展示,保持老行为。
int activeOrder = int.MaxValue;
if (taskList != null)
{
foreach (var t in taskList)
{
if (t.IsSettlement) continue;
if (t.Order < activeOrder) activeOrder = t.Order;
}
}
var visibleTasks = new List<PlayerTaskInfo>();
if (taskList != null)
{
foreach (var t in taskList)
{
if (t.Order <= activeOrder) visibleTasks.Add(t);
}
}
int count = visibleTasks.Count;
//Step #3逐个设置
for (int i = 0; i < count; i++)
{
Table.Instance.PlayerTaskDataAssets.GetPlayerTaskData(visibleTasks[i].TaskType, out var data);
if(Rows.Count <= i)
{
var row = Instantiate(RowPrefab,RowFather);
var t = row.GetComponent<UIBottomTutorMissionRow>();
Rows.Add(t);
}
Rows[i]?.gameObject.SetActive(true);
Rows[i]?.SetContent(visibleTasks[i],data);
}
for(int i = count; i < Rows.Count;i ++)
Rows[i].gameObject.SetActive(false);
}
public void CloseView()
{
//AudioManager.Instance.StopMusic();
}
}
}