TH1/Unity/Assets/Scripts/TH1_UI/View/Outside/UIOutsideMenuView.cs
2026-05-13 21:49:44 +08:00

219 lines
6.0 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.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<UIOutsideMenuButtonMono> 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<UIOutsideSelectAvatarMono> _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<GiantType> giantTypeList)
{
var forceList = new List<ForceEnum>() { ForceEnum.Remilia, ForceEnum.Kaguya, ForceEnum.Kanako,ForceEnum.Satori,ForceEnum.Reimu, ForceEnum.Byakuren,ForceEnum.Miko,ForceEnum.Zanmu };
var chessList = new List<ChessType>()
{ ChessType.King, ChessType.Knight, ChessType.Queen, ChessType.Rook, ChessType.Bishop };
giantTypeList = new List<GiantType>();
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)];
if (!Table.Instance.UnitTypeDataAssets.GetGiantTypeByChessType(chess, force, out var giantType))
continue;
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 = "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();
}
}
}