TH1/Unity/Assets/Scripts/TH1_UI/View/Bottom/UIBottomTutorView.cs
2026-02-12 01:24:40 +08:00

103 lines
2.6 KiB
C#

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;
int count = 0;
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;
}
count = taskList == null ? 0 : taskList.Count;
//Step #3逐个设置
for (int i = 0; i < count; i++)
{
if (taskList == null) break;
Table.Instance.PlayerTaskDataAssets.GetPlayerTaskData(taskList[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(taskList[i],data);
}
for(int i = count; i < Rows.Count;i ++)
Rows[i].gameObject.SetActive(false);
}
public void CloseView()
{
//AudioManager.Instance.StopMusic();
}
}
}