143 lines
3.8 KiB
C#
143 lines
3.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using Animancer;
|
|
using Logic;
|
|
using Logic.Action;
|
|
using Logic.AI;
|
|
using Logic.Audio;
|
|
using Logic.Multilingual;
|
|
using ParadoxNotion;
|
|
using RuntimeData;
|
|
using Steamworks;
|
|
using TH1_Core.Events;
|
|
using TH1_Core.Managers;
|
|
using TH1_Logic.Action;
|
|
using TH1_Logic.Core;
|
|
using TH1_Logic.Net;
|
|
using TH1_Logic.Steam;
|
|
using TH1_UI.View.Announce;
|
|
using TH1Resource;
|
|
using TMPro;
|
|
using Unity.VisualScripting;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
namespace TH1_UI.View.Outside
|
|
{
|
|
|
|
public class UIOutsideTutorView : Base.View
|
|
{
|
|
[Header("按钮")]
|
|
public Button CloseButton;
|
|
public Button CheckButton;
|
|
public Button WikiButton;
|
|
|
|
[Header("关卡详情")]
|
|
public Image LevelBG;
|
|
public TextMeshProUGUI TutorName;
|
|
public TextMeshProUGUI TutorDesc;
|
|
public RectTransform TutorChat1Bubble;
|
|
public RectTransform TutorChat2Bubble;
|
|
public TextMeshProUGUI TutorChat1;
|
|
public TextMeshProUGUI TutorChat2;
|
|
public Image Chat1Avatar;
|
|
public Image Chat2Avatar;
|
|
|
|
|
|
//关闭时执行的委托
|
|
public ViDelegateAssisstant.Dele OnBtnCloseClick;
|
|
public Action<ScenarioPack> OnBtnStartClick;
|
|
public ViDelegateAssisstant.Dele OnBtnWikiClick;
|
|
|
|
public GameObject TutorListRowPrefab;
|
|
public GameObject TutorListFather;
|
|
private List<UIOutsideTutorListRowMono> tutorListRows = new List<UIOutsideTutorListRowMono>();
|
|
|
|
private ScenarioPack _selectScenario;
|
|
|
|
|
|
protected override void OnInit()
|
|
{
|
|
base.OnInit();
|
|
//清空List下的内容
|
|
CheckButton.onClick.RemoveAllListeners();
|
|
CheckButton.onClick.AddListener(StartTutor);
|
|
CloseButton.onClick.RemoveAllListeners();
|
|
CloseButton.onClick.AddListener(()=>{OnBtnCloseClick.Invoke();});
|
|
if (WikiButton != null)
|
|
{
|
|
WikiButton.onClick.RemoveAllListeners();
|
|
WikiButton.onClick.AddListener(() => ViDelegateAssisstant.Invoke(OnBtnWikiClick));
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Update()
|
|
{
|
|
|
|
}
|
|
public void SetContent(ShowUIOutsideTutor evt)
|
|
{
|
|
SetTutorList();
|
|
SetTutorSheet(tutorListRows[0]?.ScenarioData);
|
|
UpdateTutorList(tutorListRows[0]);
|
|
}
|
|
|
|
public void SetTutorList()
|
|
{
|
|
int count = 0;
|
|
var data = Table.Instance.ScenarioDataAssets;
|
|
foreach(var pack in data.ScenarioList)
|
|
if (pack.ScenarioType == ScenarioType.Tutor)
|
|
{
|
|
count++;
|
|
if(count > tutorListRows.Count)
|
|
{
|
|
var obj = GameObject.Instantiate(TutorListRowPrefab, TutorListFather.transform);
|
|
var mono = obj.GetComponent<UIOutsideTutorListRowMono>();
|
|
tutorListRows.Add(mono);
|
|
}
|
|
tutorListRows[count - 1]?.gameObject.SetActive(true);
|
|
tutorListRows[count - 1]?.SetContent(pack,SetTutorSheet,UpdateTutorList);
|
|
|
|
}
|
|
|
|
for(int i = count;i < tutorListRows.Count;i++)
|
|
tutorListRows[i].gameObject.SetActive(false);
|
|
}
|
|
|
|
public void UpdateTutorList(UIOutsideTutorListRowMono selectRow)
|
|
{
|
|
foreach(var row in tutorListRows)
|
|
row.SetColor(row == selectRow);
|
|
|
|
}
|
|
|
|
private void SetTutorSheet(ScenarioPack pack)
|
|
{
|
|
_selectScenario = pack;
|
|
if (pack == null) return;
|
|
LevelBG.sprite = pack.BGImage;
|
|
MultilingualManager.Instance.SetUIText(TutorName,pack.Name);
|
|
MultilingualManager.Instance.SetUIText(TutorDesc,pack.Desc);
|
|
MultilingualManager.Instance.SetUIText(TutorChat1,pack.DiagList[0]?.Diag);
|
|
MultilingualManager.Instance.SetUIText(TutorChat2,pack.DiagList[1]?.Diag);
|
|
LayoutRebuilder.ForceRebuildLayoutImmediate(TutorChat1Bubble);
|
|
LayoutRebuilder.ForceRebuildLayoutImmediate(TutorChat2Bubble);
|
|
Chat1Avatar.sprite = Table.Instance.StoryDataAssets.GetCharSprite(pack.DiagList[0]?.CharName ??StoryCharEnum.None);
|
|
Chat2Avatar.sprite = Table.Instance.StoryDataAssets.GetCharSprite(pack.DiagList[1]?.CharName ??StoryCharEnum.None);
|
|
}
|
|
|
|
public void StartTutor()
|
|
{
|
|
OnBtnStartClick.Invoke(_selectScenario);
|
|
}
|
|
}
|
|
|
|
}
|