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.Config; 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; using Random = UnityEngine.Random; namespace TH1_UI.View.Outside { public class UIOutsideMenuView : Base.View { [Header("按钮")] //public Button CloseButton; public Button StartButton; public Button MultiplayButton; public Button ResumeButton; public Button LibraryButton; public Button HistoryButton; public Button TutorButton; public Button StoryButton; public List ButtonList; public Button AnnouncementButton; public Button AboutButton; public Button SettingButton; public Button ShutdownButton; public UIOutsideMenuAnnouncementPanelMono AnnouncementPanel; public UIOutsideMenuAboutPanelMono AboutPanel; public UIOutsideMenuSettingPanelMono SettingPanel; public UIOutsideMenuShutdownPanelMono ShutdownPanel; public TextMeshProUGUI QQHintVersion; [Header("选择列表")] private List _monoList; private Empire _selectEmpire; [Header("详细信息")] [Header("子界面")] public UIOutsideSelectCheckPanelMono SelectCheckPanelMono; //关闭时执行的委托 public ViDelegateAssisstant.Dele OnBtnCloseClick; //开始游戏时执行的委托(目前委托内容就是执行controller的Close()) public ViDelegateAssisstant.Dele OnStartGame; protected override void OnInit() { base.OnInit(); AnnouncementPanel.OnInit(); AboutPanel.OnInit(); SettingPanel.OnInit(); ShutdownPanel.OnInit(); } private void GetRandomGiantList(int count,out List giantTypeList) { var forceList = new List() { ForceEnum.Remilia, ForceEnum.Kaguya, ForceEnum.Kanako }; var chessList = new List() { ChessType.King, ChessType.Knight, ChessType.Queen, ChessType.Rook, ChessType.Bishop }; giantTypeList = new List(); int tct = 0; while (giantTypeList.Count < count && tct < 10000000) { var force = forceList[Random.Range(0, forceList.Count)]; var chess = chessList[Random.Range(0, chessList.Count)]; Table.Instance.UnitTypeDataAssets.GetGiantTypeByChessType(chess, force, out var giantType); bool same = false; foreach(var t in giantTypeList) if (t == giantType) same = true; if(!same) giantTypeList.Add(giantType); tct++; } } public void SetContent(ShowUIOutsideMenu evt) { GetRandomGiantList(ButtonList.Count,out var giantTypeList); for(int i =0;i < ButtonList.Count;i++) ButtonList[i].SetContent(giantTypeList[i]); StartButton.onClick.RemoveAllListeners(); StartButton.onClick.AddListener(OnStartClicked); MultiplayButton.onClick.RemoveAllListeners(); MultiplayButton.onClick.AddListener(OnMultiplayClicked); ResumeButton.onClick.RemoveAllListeners(); ResumeButton.gameObject.SetActive(false); if (Main.Instance.HasArchive()) { ResumeButton.gameObject.SetActive(true); ResumeButton.onClick.AddListener(OnResumeClicked); } TutorButton.onClick.RemoveAllListeners(); TutorButton.onClick.AddListener(OnTutorClicked); LibraryButton.onClick.RemoveAllListeners(); LibraryButton.onClick.AddListener(OnLibraryClicked); HistoryButton.onClick.RemoveAllListeners(); HistoryButton.onClick.AddListener(OnHistoryClicked); StoryButton.onClick.RemoveAllListeners(); StoryButton.onClick.AddListener(OnStoryClicked); SettingButton.onClick.RemoveAllListeners(); SettingButton.onClick.AddListener(OnSettingClicked); AnnouncementButton.onClick.RemoveAllListeners(); AnnouncementButton.onClick.AddListener(OnAnnouncementClicked); AboutButton.onClick.RemoveAllListeners(); AboutButton.onClick.AddListener(OnAboutClicked); ShutdownButton.onClick.RemoveAllListeners(); ShutdownButton.onClick.AddListener(OnShutdownClicked); QQHintVersion.text = "Demo V" + ConfigManager.Instance.VersionCfg.CurVersionInfo.FullVersion; //Step #6 设置BGM AudioManager.Instance.PlayMusic("Main",1f,2f,true); } //在Controller 调用Close的时候,会先调用这个closeview public void OnCloseView() { } public void OnStartClicked() { EventManager.Publish(new ShowUIOutsideSelect()); } public void OnResumeClicked() { if (Main.Instance.HasArchive()) { EventManager.Publish(new ShowUIOutsideLoading()); var fadeinTime = ResourceCache.Instance.AnimCache.UICommonPanelFadeIn.length; var prepareTime = 1f; Timer.Instance.TimerRegister(this,()=>{Main.Instance.ResumeMatch();EventManager.Publish(new HideUIOutsideMenu());},fadeinTime,"MenuResumeClicked1"); Timer.Instance.TimerRegister(this,()=>{EventManager.Publish(new HideUIOutsideAll());},fadeinTime+prepareTime,"MenuResumeClicked2"); } } public void OnLibraryClicked() { EventManager.Publish(new ShowUIOutsideLibrary()); } public void OnMultiplayClicked() { EventManager.Publish(new ShowUIOutsideMultiplay(){}); } public void OnTutorClicked() { EventManager.Publish(new ShowUIOutsideTutor()); } public void OnHistoryClicked() { EventManager.Publish(new ShowUIOutsideHistory(){}); } public void OnAnnouncementClicked() { AnnouncementPanel.Open(); AnnouncementPanel.SetContent(); } public void OnAboutClicked() { AboutPanel.Open(); } public void OnSettingClicked() { SettingPanel.Open(); } public void OnStoryClicked() { EventManager.Publish(new ShowUIOutsideStory(){}); } public void OnShutdownClicked() { ShutdownPanel.Open(); } } }