TH1/Unity/Assets/Scripts/TH1_UI/View/Outside/UIOutsideMenuSettingPanelMono.cs
2026-01-28 18:23:01 +08:00

112 lines
2.7 KiB
C#

using System;
using System.Collections.Generic;
using Animancer;
using Logic;
using Logic.Action;
using Logic.AI;
using Logic.Audio;
using Logic.Config;
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 ConfigManager = TH1_Logic.Config.ConfigManager;
namespace TH1_UI.View.Outside
{
public class UIOutsideMenuSettingPanelMono : MonoBehaviour
{
public AnimancerComponent Animancer;
public Button CloseButton;
public Button BlockButton;
public UIOutsideSelectOptionGroupMono LanguageOptionGroup;
//关闭时执行的委托
public ViDelegateAssisstant.Dele OnBtnCloseClick;
//开始游戏时执行的委托(目前委托内容就是执行controller的Close())
public ViDelegateAssisstant.Dele OnStartGame;
public void OnInit()
{
CloseButton.onClick.RemoveAllListeners();
CloseButton.onClick.AddListener(OnClose);
BlockButton.onClick.RemoveAllListeners();
BlockButton.onClick.AddListener(OnClose);
gameObject.SetActive(false);
}
public void RefreshLanguageOption()
{
var lan = MultilingualManager.Instance.GetCurLanguage();
uint idx = lan switch
{
MultilingualType.ZH => 0,
MultilingualType.TDZH => 1,
MultilingualType.JP => 2,
MultilingualType.EN => 3,
MultilingualType.KR => 4,
_ => 3 //默认英文
};
LanguageOptionGroup.Init(idx);
LanguageOptionGroup.OnOptionClicked = OnLanguageClicked;
}
public void Open()
{
gameObject.SetActive(true);
RefreshLanguageOption();
Animancer.Play(ResourceCache.Instance.AnimCache.UICommonPanelFadeIn);
}
public void OnClose()
{
AnimancerState state = Animancer.Play(ResourceCache.Instance.AnimCache.UICommonPanelFadeOut);
state.Events.OnEnd += () => { gameObject.SetActive(false); };
}
private void OnLanguageClicked(uint idx)
{
// 触发语言切换 0=CN 1=TC 2=JP 3=EN 4=KR
switch (idx)
{
case 0:
MultilingualManager.Instance.ChangedMultilingual(MultilingualType.ZH);
break;
case 1:
MultilingualManager.Instance.ChangedMultilingual(MultilingualType.TDZH);
break;
case 2:
MultilingualManager.Instance.ChangedMultilingual(MultilingualType.JP);
break;
case 3:
MultilingualManager.Instance.ChangedMultilingual(MultilingualType.EN);
break;
case 4:
MultilingualManager.Instance.ChangedMultilingual(MultilingualType.KR);
break;
}
}
}
}