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 OnBtnStartClick; public ViDelegateAssisstant.Dele OnBtnWikiClick; public GameObject TutorListRowPrefab; public GameObject TutorListFather; private List tutorListRows = new List(); 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(); 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); } } }