TH1/Unity/Assets/Scripts/TH1_UI/View/Top/UITopSettingView.cs
2026-03-11 20:45:29 +08:00

128 lines
3.0 KiB
C#

using Logic.Multilingual;
using TH1_Logic.Config;
using TH1_Logic.Core;
using TH1_UI.View.Outside;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
namespace TH1_UI.View.Top
{
public class UITopSettingView : Base.View
{
//public Button closeButton;
public ViDelegateAssisstant.Dele OnBtnCloseClick;
public Button CloseButton;
public Button BlockButton;
public UIOutsideSelectOptionGroupMono LanguageOptionGroup;
public Toggle KeyMomentToggle;
public Toggle BgmContinuousToggle;
protected override void OnInit()
{
base.OnInit();
CloseButton.onClick.RemoveAllListeners();
CloseButton.onClick.AddListener(() => { OnBtnCloseClick.Invoke(); });
BlockButton.onClick.RemoveAllListeners();
BlockButton.onClick.AddListener(() => { OnBtnCloseClick.Invoke(); });
if (KeyMomentToggle != null)
{
KeyMomentToggle.onValueChanged.RemoveAllListeners();
KeyMomentToggle.onValueChanged.AddListener(OnKeyMomentToggleChanged);
}
if (BgmContinuousToggle != null)
{
BgmContinuousToggle.onValueChanged.RemoveAllListeners();
BgmContinuousToggle.onValueChanged.AddListener(OnBgmContinuousToggleChanged);
}
}
private void OnKeyMomentToggleChanged(bool isOn)
{
ConfigManager.Instance.Config.KeyMomentEnabled = isOn;
}
private void OnBgmContinuousToggleChanged(bool isOn)
{
ConfigManager.Instance.Config.BgmContinuousPlay = isOn;
}
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;
}
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;
}
}
//通常一局只会set一次,每次都是完全清空,然后绑定新的一个对局的按钮
public void SetContent()
{
RefreshLanguageOption();
RefreshKeyMomentToggle();
RefreshBgmContinuousToggle();
}
public void RefreshKeyMomentToggle()
{
if (KeyMomentToggle != null)
{
KeyMomentToggle.isOn = ConfigManager.Instance.Config.KeyMomentEnabled;
}
}
public void RefreshBgmContinuousToggle()
{
if (BgmContinuousToggle != null)
{
BgmContinuousToggle.isOn = ConfigManager.Instance.Config.BgmContinuousPlay;
}
}
public void CloseView()
{
//AudioManager.Instance.StopMusic();
}
}
}