修改设置界面
This commit is contained in:
@@ -20,9 +20,8 @@ namespace NBF
|
||||
[AttributeUsage(AttributeTargets.Method)]
|
||||
public class UIExtensionAutoBindAttribute : BaseAttribute
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
[AttributeUsage(AttributeTargets.Field)]
|
||||
public class InputIconAttribute : BaseAttribute
|
||||
{
|
||||
@@ -74,4 +73,19 @@ namespace NBF
|
||||
Sort = sort;
|
||||
}
|
||||
}
|
||||
|
||||
[AttributeUsage(AttributeTargets.Method)]
|
||||
public class InputInvokeAttribute : BaseAttribute
|
||||
{
|
||||
public string Name;
|
||||
public string Key;
|
||||
public bool ShowLeft;
|
||||
|
||||
public InputInvokeAttribute(string name, string key = "", bool showLeft = true)
|
||||
{
|
||||
Name = name;
|
||||
Key = key;
|
||||
ShowLeft = showLeft;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices;
|
||||
using NBC;
|
||||
// using Rewired;
|
||||
@@ -13,6 +14,12 @@ namespace NBF
|
||||
GamePad = 1
|
||||
}
|
||||
|
||||
public struct UIInputInvoke
|
||||
{
|
||||
public object UIObject;
|
||||
public InputInvokeAttribute InputInvoke;
|
||||
}
|
||||
|
||||
public class InputManager : MonoService<InputManager>
|
||||
{
|
||||
public static bool IsOp1;
|
||||
@@ -237,5 +244,20 @@ namespace NBF
|
||||
OnUIPerformed?.Invoke(actionName);
|
||||
OnUICanceled?.Invoke(actionName);
|
||||
}
|
||||
|
||||
#region UI界面按键管理
|
||||
|
||||
private readonly Dictionary<object, List<UIInputInvoke>> _panelActions =
|
||||
new Dictionary<object, List<UIInputInvoke>>();
|
||||
|
||||
public void On(object obj)
|
||||
{
|
||||
}
|
||||
|
||||
public void Off(object obj)
|
||||
{
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,7 @@ namespace NBF.Setting
|
||||
public interface IMultiOption : IOptionBase
|
||||
{
|
||||
List<string> GetOptionNames();
|
||||
bool IsDropdown { get; }
|
||||
}
|
||||
|
||||
public abstract class MultiOption<T> : OptionBase, IMultiOption
|
||||
@@ -21,6 +22,8 @@ namespace NBF.Setting
|
||||
|
||||
public List<string> GetOptionNames() => OptionTable.GetNames();
|
||||
|
||||
public virtual bool IsDropdown => false;
|
||||
|
||||
|
||||
protected void SelectOption(T value, int defaultIndex = 0)
|
||||
{
|
||||
|
||||
@@ -51,13 +51,18 @@ namespace NBF.Setting
|
||||
}
|
||||
|
||||
public ISettings Root { get; private set; }
|
||||
|
||||
|
||||
|
||||
|
||||
public void Initialize(ISettings root)
|
||||
{
|
||||
Root = root;
|
||||
Load();
|
||||
OnInitialize();
|
||||
if (!PlayerPrefs.HasKey(SaveKey))
|
||||
{
|
||||
OnSetDefaultValue();
|
||||
}
|
||||
|
||||
Apply();
|
||||
}
|
||||
|
||||
@@ -85,15 +90,14 @@ namespace NBF.Setting
|
||||
|
||||
public virtual void Cancel()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
public virtual string GetDisplayString()
|
||||
{
|
||||
return GetValue().ToString();
|
||||
}
|
||||
|
||||
|
||||
public virtual int GetValue()
|
||||
{
|
||||
return Value;
|
||||
@@ -109,6 +113,11 @@ namespace NBF.Setting
|
||||
{
|
||||
}
|
||||
|
||||
protected virtual void OnSetDefaultValue()
|
||||
{
|
||||
Value = DefaultValue;
|
||||
SaveValue = DefaultValue;
|
||||
}
|
||||
|
||||
protected abstract void OnApply();
|
||||
}
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
using UnityEngine;
|
||||
using Unity.Collections;
|
||||
using System.Collections;
|
||||
|
||||
namespace NBF.Setting
|
||||
{
|
||||
@@ -20,8 +22,15 @@ namespace NBF.Setting
|
||||
|
||||
protected override void OnApply()
|
||||
{
|
||||
// Screen.fullScreenMode = GetSelectedOption();
|
||||
// Debug.Log($"FullScreenMode: {Screen.fullScreenMode} value: {GetSelectedOption()}");
|
||||
Screen.fullScreenMode = GetSelectedOption();
|
||||
if (Screen.fullScreenMode == FullScreenMode.ExclusiveFullScreen)
|
||||
{
|
||||
Screen.fullScreen = true;
|
||||
}
|
||||
|
||||
var nmsl = KeyCode.Alpha0;
|
||||
|
||||
Debug.Log($"FullScreenMode: {Screen.fullScreenMode} value: {GetSelectedOption()}");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -16,19 +16,84 @@ namespace NBF.Setting
|
||||
public override string Group => SettingsDef.Group.Graphic;
|
||||
protected override int DefaultValue => _defaultResolution;
|
||||
public override string Tab => SettingsDef.Tab.Graphic;
|
||||
public override bool IsDropdown => true;
|
||||
|
||||
|
||||
static readonly (int w, int h)[] Classic16_9 =
|
||||
{
|
||||
(1280, 720),
|
||||
(1600, 900),
|
||||
(1920, 1080),
|
||||
(2560, 1440),
|
||||
(3840, 2160),
|
||||
};
|
||||
|
||||
static readonly (int w, int h)[] Classic16_10 =
|
||||
{
|
||||
(1280, 800),
|
||||
(1680, 1050),
|
||||
(1920, 1200),
|
||||
(2560, 1600),
|
||||
};
|
||||
|
||||
static readonly (int w, int h)[] Classic21_9 =
|
||||
{
|
||||
(2560, 1080),
|
||||
(3440, 1440),
|
||||
(3840, 1600),
|
||||
};
|
||||
|
||||
static readonly (int w, int h)[] Classic32_9 =
|
||||
{
|
||||
(3840, 1080),
|
||||
(5120, 1440),
|
||||
};
|
||||
|
||||
protected override void OnInitialize()
|
||||
{
|
||||
var supportedResolutions = Screen.resolutions
|
||||
.GroupBy(r => $"{r.width}x{r.height}") // 按宽高分组
|
||||
.Select(g => g.OrderByDescending(r => r.refreshRateRatio).First())
|
||||
.ToArray();
|
||||
foreach (var resolution in supportedResolutions)
|
||||
var supported = Screen.resolutions
|
||||
.Select(r => (r.width, r.height))
|
||||
.Distinct()
|
||||
.ToHashSet();
|
||||
|
||||
var mainWindowDisplayInfo = Screen.mainWindowDisplayInfo; // 主窗口所在显示器的信息
|
||||
|
||||
float aspect = (float)Screen.currentResolution.width / Screen.currentResolution.height;
|
||||
|
||||
bool Near(float a, float b, float eps = 0.03f) => Mathf.Abs(a - b) <= eps;
|
||||
|
||||
IEnumerable<(int w, int h)> preferred =
|
||||
Near(aspect, 16f / 9f) ? Classic16_9 :
|
||||
Near(aspect, 16f / 10f) ? Classic16_10 :
|
||||
Near(aspect, 21f / 9f) ? Classic21_9 :
|
||||
Near(aspect, 32f / 9f) ? Classic32_9 :
|
||||
Classic16_9; // 兜底
|
||||
|
||||
|
||||
var list = preferred.Where(supported.Contains).ToList();
|
||||
|
||||
// 兜底:保证原生分辨率一定在列表里(尤其是超宽屏)
|
||||
var native = (Screen.currentResolution.width, Screen.currentResolution.height);
|
||||
if (!list.Contains(native) && supported.Contains(native))
|
||||
list.Add(native);
|
||||
|
||||
// 排序(从小到大或从大到小都行)
|
||||
list = list.OrderBy(x => x.w * x.h).ToList();
|
||||
|
||||
|
||||
foreach (var resolution in list)
|
||||
{
|
||||
if (resolution.width < 720 || resolution.height < 720) continue;
|
||||
AddOption($"{resolution.width}x{resolution.height}", resolution);
|
||||
Log.Info($"Resolution {resolution.width}x{resolution.height}");
|
||||
var w = resolution.w;
|
||||
var h = resolution.h;
|
||||
if (w > mainWindowDisplayInfo.width || h > mainWindowDisplayInfo.height) continue;
|
||||
AddOption($"{w}x{h}", new Resolution()
|
||||
{
|
||||
width = w,
|
||||
height = h,
|
||||
});
|
||||
Log.Info($"Resolution {w}x{h}");
|
||||
}
|
||||
|
||||
|
||||
TryGetIndex(t =>
|
||||
t.width == Screen.currentResolution.width && t.height == Screen.currentResolution.height,
|
||||
@@ -38,7 +103,15 @@ namespace NBF.Setting
|
||||
{
|
||||
_defaultResolution = 0;
|
||||
}
|
||||
|
||||
var n = Value;
|
||||
var nm = SaveValue;
|
||||
if (!PlayerPrefs.HasKey(SaveKey))
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
protected override void OnApply()
|
||||
{
|
||||
|
||||
@@ -10,6 +10,7 @@ namespace NBF
|
||||
public string Key;
|
||||
public string Icon;
|
||||
public bool IsAll;
|
||||
public string Name;
|
||||
|
||||
// 条目可以是任意对象类型
|
||||
public List<object> Items = new List<object>();
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was auto-generated by com.unity.inputsystem:InputActionCodeGenerator
|
||||
// version 1.14.2
|
||||
// version 1.16.0
|
||||
// from Assets/PlayerInputControl.inputactions
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
|
||||
@@ -91,6 +91,8 @@ namespace NBF
|
||||
// loadAssemblies.Add(assembly);
|
||||
// }
|
||||
|
||||
gameObject.AddComponent<Settings>();
|
||||
|
||||
// 1. 初始化 Fantasy 框架
|
||||
await Fantasy.Platform.Unity.Entry.Initialize();
|
||||
|
||||
@@ -151,9 +153,6 @@ namespace NBF
|
||||
|
||||
private void InitUI()
|
||||
{
|
||||
GRoot.inst.SetContentScaleFactor(UIDef.DefaultScreen.Width, UIDef.DefaultScreen.Height,
|
||||
UIContentScaler.ScreenMatchMode.MatchWidthOrHeight);
|
||||
|
||||
Binder.BindAll();
|
||||
UIObjectFactory.SetLoaderExtension(typeof(XGLoader));
|
||||
UIConst.UIPackRootUrl = UIDef.UIRoot;
|
||||
|
||||
@@ -60,7 +60,8 @@ namespace NBF
|
||||
{
|
||||
// await Task.Delay(100);
|
||||
CommonTopPanel.Show();
|
||||
LoginPanel.Show();
|
||||
SettingPanel.Show();
|
||||
// LoginPanel.Show();
|
||||
// PreviewPanel.Show();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ namespace NBF
|
||||
UIObjectFactory.SetPackageItemExtension(ClassifyList.URL, typeof(ClassifyList));
|
||||
UIObjectFactory.SetPackageItemExtension(CommonMenu.URL, typeof(CommonMenu));
|
||||
UIObjectFactory.SetPackageItemExtension(MarqueeTag.URL, typeof(MarqueeTag));
|
||||
UIObjectFactory.SetPackageItemExtension(BtnSubMenuLeft.URL, typeof(BtnSubMenuLeft));
|
||||
UIObjectFactory.SetPackageItemExtension(BtnTextInputControl.URL, typeof(BtnTextInputControl));
|
||||
UIObjectFactory.SetPackageItemExtension(CommonItemList.URL, typeof(CommonItemList));
|
||||
UIObjectFactory.SetPackageItemExtension(BtnTitleInputControl.URL, typeof(BtnTitleInputControl));
|
||||
@@ -22,6 +23,7 @@ namespace NBF
|
||||
UIObjectFactory.SetPackageItemExtension(CommonSubMenu.URL, typeof(CommonSubMenu));
|
||||
UIObjectFactory.SetPackageItemExtension(BtnInputControl.URL, typeof(BtnInputControl));
|
||||
UIObjectFactory.SetPackageItemExtension(ListTitleItem.URL, typeof(ListTitleItem));
|
||||
UIObjectFactory.SetPackageItemExtension(BtnSubMenu.URL, typeof(BtnSubMenu));
|
||||
UIObjectFactory.SetPackageItemExtension(ModelViewer.URL, typeof(ModelViewer));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ namespace NBF
|
||||
if (_panel == null) return;
|
||||
if (!_panel.IsShowing) return;
|
||||
if (!_panel.IsTop) return;
|
||||
|
||||
|
||||
if (action == InputDef.UI.SubPrev)
|
||||
{
|
||||
OnClickBtnPrev();
|
||||
@@ -57,7 +57,7 @@ namespace NBF
|
||||
for (int i = 0; i < subItems.Count; i++)
|
||||
{
|
||||
var tabData = subItems[i];
|
||||
var tabItem = List.AddItemFromPool().asButton;
|
||||
var tabItem = List.AddItemFromPool(i == 0 ? BtnSubMenuLeft.URL : BtnSubMenu.URL).asButton;
|
||||
tabItem.SetLanguage(tabData.Key);
|
||||
|
||||
width += tabItem.width;
|
||||
|
||||
3
Assets/Scripts/UI/Common/Menu/item.meta
Normal file
3
Assets/Scripts/UI/Common/Menu/item.meta
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 21fd308a87b848d7b4a9138f06c4c5f7
|
||||
timeCreated: 1769923363
|
||||
25
Assets/Scripts/UI/Common/Menu/item/BtnSubMenu.Designer.cs
generated
Normal file
25
Assets/Scripts/UI/Common/Menu/item/BtnSubMenu.Designer.cs
generated
Normal file
@@ -0,0 +1,25 @@
|
||||
/**本脚本为自动生成,每次生成会覆盖!请勿手动修改,生成插件文档及项目地址:https://git.whoot.com/whoot-games/whoot.fguieditorplugin**/
|
||||
|
||||
|
||||
using FairyGUI;
|
||||
using FairyGUI.Utils;
|
||||
using NBC;
|
||||
|
||||
namespace NBF
|
||||
{
|
||||
public partial class BtnSubMenu
|
||||
{
|
||||
public const string URL = "ui://6hgkvlauvbojxi";
|
||||
|
||||
public GImage back;
|
||||
|
||||
public override void ConstructFromXML(XML xml)
|
||||
{
|
||||
base.ConstructFromXML(xml);
|
||||
|
||||
back = (GImage)GetChild("back");
|
||||
OnInited();
|
||||
UILanguage.TrySetComponentLanguage(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 670c4d5385c0ad741a5381d10fc7dd15
|
||||
15
Assets/Scripts/UI/Common/Menu/item/BtnSubMenu.cs
Normal file
15
Assets/Scripts/UI/Common/Menu/item/BtnSubMenu.cs
Normal file
@@ -0,0 +1,15 @@
|
||||
// 本脚本只在不存在时会生成一次。组件逻辑写在当前脚本内。已存在不会再次生成覆盖
|
||||
|
||||
using UnityEngine;
|
||||
using FairyGUI;
|
||||
using NBC;
|
||||
|
||||
namespace NBF
|
||||
{
|
||||
public partial class BtnSubMenu : GButton
|
||||
{
|
||||
private void OnInited()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
2
Assets/Scripts/UI/Common/Menu/item/BtnSubMenu.cs.meta
Normal file
2
Assets/Scripts/UI/Common/Menu/item/BtnSubMenu.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5b6a27e3fa4572443afc883702c768f3
|
||||
25
Assets/Scripts/UI/Common/Menu/item/BtnSubMenuLeft.Designer.cs
generated
Normal file
25
Assets/Scripts/UI/Common/Menu/item/BtnSubMenuLeft.Designer.cs
generated
Normal file
@@ -0,0 +1,25 @@
|
||||
/**本脚本为自动生成,每次生成会覆盖!请勿手动修改,生成插件文档及项目地址:https://git.whoot.com/whoot-games/whoot.fguieditorplugin**/
|
||||
|
||||
|
||||
using FairyGUI;
|
||||
using FairyGUI.Utils;
|
||||
using NBC;
|
||||
|
||||
namespace NBF
|
||||
{
|
||||
public partial class BtnSubMenuLeft
|
||||
{
|
||||
public const string URL = "ui://6hgkvlaumbu9y9";
|
||||
|
||||
public GImage back;
|
||||
|
||||
public override void ConstructFromXML(XML xml)
|
||||
{
|
||||
base.ConstructFromXML(xml);
|
||||
|
||||
back = (GImage)GetChild("back");
|
||||
OnInited();
|
||||
UILanguage.TrySetComponentLanguage(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bfb4ffee7088da54d95a349215186ba6
|
||||
15
Assets/Scripts/UI/Common/Menu/item/BtnSubMenuLeft.cs
Normal file
15
Assets/Scripts/UI/Common/Menu/item/BtnSubMenuLeft.cs
Normal file
@@ -0,0 +1,15 @@
|
||||
// 本脚本只在不存在时会生成一次。组件逻辑写在当前脚本内。已存在不会再次生成覆盖
|
||||
|
||||
using UnityEngine;
|
||||
using FairyGUI;
|
||||
using NBC;
|
||||
|
||||
namespace NBF
|
||||
{
|
||||
public partial class BtnSubMenuLeft : GButton
|
||||
{
|
||||
private void OnInited()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5ce6cf183d4b20f4997dd9ca99797135
|
||||
@@ -30,13 +30,14 @@ namespace NBF
|
||||
{
|
||||
await LoginHelper.Login(InputAccount.text);
|
||||
|
||||
await Fishing.Instance.Go(RoleModel.Instance.Info.MapId);
|
||||
// await Fishing.Instance.Go(RoleModel.Instance.Info.MapId);
|
||||
// await MapHelper.EnterMap(mapId, role.RoomCode);
|
||||
|
||||
// BagPanel.Show();
|
||||
// BagSlotPanel.Show();
|
||||
|
||||
// FishingShopPanel.Show();
|
||||
SettingPanel.Show();
|
||||
|
||||
Del();
|
||||
}
|
||||
|
||||
@@ -11,14 +11,12 @@ namespace NBF
|
||||
{
|
||||
public const string URL = "ui://hxr7rc7pe9z89";
|
||||
|
||||
public GTextField TextName;
|
||||
public GTextField TextIntroduce;
|
||||
|
||||
public override void ConstructFromXML(XML xml)
|
||||
{
|
||||
base.ConstructFromXML(xml);
|
||||
|
||||
TextName = (GTextField)GetChild("TextName");
|
||||
TextIntroduce = (GTextField)GetChild("TextIntroduce");
|
||||
OnInited();
|
||||
UILanguage.TrySetComponentLanguage(this);
|
||||
|
||||
12
Assets/Scripts/UI/Settings/SettingItem.Designer.cs
generated
12
Assets/Scripts/UI/Settings/SettingItem.Designer.cs
generated
@@ -16,10 +16,12 @@ namespace NBF
|
||||
public GTextField TextName;
|
||||
public GTextField TextInfo;
|
||||
public GSlider Slider;
|
||||
public BtnInputControl BtnPrev;
|
||||
public BtnInputControl BtnNext;
|
||||
public GTextField TextSliderValue;
|
||||
public SelectPages Pages;
|
||||
public GButton BtnPrev;
|
||||
public GButton BtnNext;
|
||||
public BtnInputControl BtnControl;
|
||||
public GComboBox ComboBox;
|
||||
|
||||
public override void ConstructFromXML(XML xml)
|
||||
{
|
||||
@@ -30,10 +32,12 @@ namespace NBF
|
||||
TextName = (GTextField)GetChild("TextName");
|
||||
TextInfo = (GTextField)GetChild("TextInfo");
|
||||
Slider = (GSlider)GetChild("Slider");
|
||||
BtnPrev = (BtnInputControl)GetChild("BtnPrev");
|
||||
BtnNext = (BtnInputControl)GetChild("BtnNext");
|
||||
TextSliderValue = (GTextField)GetChild("TextSliderValue");
|
||||
Pages = (SelectPages)GetChild("Pages");
|
||||
BtnPrev = (GButton)GetChild("BtnPrev");
|
||||
BtnNext = (GButton)GetChild("BtnNext");
|
||||
BtnControl = (BtnInputControl)GetChild("BtnControl");
|
||||
ComboBox = (GComboBox)GetChild("ComboBox");
|
||||
OnInited();
|
||||
UILanguage.TrySetComponentLanguage(this);
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ namespace NBF
|
||||
BtnPrev.onClick.Set(OnPrev);
|
||||
BtnNext.onClick.Set(OnNext);
|
||||
Slider.onChanged.Set(OnSliderChanged);
|
||||
ComboBox.onChanged.Set(OnComboBoxChanged);
|
||||
}
|
||||
|
||||
public void SetData(OptionBase option)
|
||||
@@ -24,18 +25,34 @@ namespace NBF
|
||||
|
||||
if (option is IMultiOption multiOption)
|
||||
{
|
||||
style.selectedIndex = 0;
|
||||
if (multiOption.IsDropdown)
|
||||
{
|
||||
style.selectedIndex = 2;
|
||||
if (multiOption.IsDropdown)
|
||||
{
|
||||
ComboBox.items = multiOption.GetOptionNames().ToArray();
|
||||
ComboBox.selectedIndex = multiOption.GetValue();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
style.selectedIndex = 1;
|
||||
}
|
||||
}
|
||||
else if (option is RangeOption range)
|
||||
{
|
||||
style.selectedIndex = 1;
|
||||
style.selectedIndex = 3; //进度类型
|
||||
Slider.min = range.MinValue;
|
||||
Slider.max = range.MaxValue;
|
||||
Slider.wholeNumbers = true;
|
||||
}
|
||||
else if (option is KeyBoardOption keyBoardOption)
|
||||
{
|
||||
style.selectedIndex = 2;
|
||||
style.selectedIndex = 4; //按键类型
|
||||
}
|
||||
else
|
||||
{
|
||||
style.selectedIndex = 0;
|
||||
}
|
||||
|
||||
TextName.SetLanguage(Option.Name);
|
||||
@@ -65,7 +82,8 @@ namespace NBF
|
||||
if (Option is ResolutionSetting resolutionSetting)
|
||||
{
|
||||
var res = Screen.resolutions;
|
||||
Debug.LogError($"next index={index} count = {multiOption.GetOptionNames().Count} res={res.Length}");
|
||||
Debug.LogError(
|
||||
$"next index={index} count = {multiOption.GetOptionNames().Count} res={res.Length}");
|
||||
}
|
||||
|
||||
multiOption.SetValue(index);
|
||||
@@ -137,6 +155,15 @@ namespace NBF
|
||||
}
|
||||
}
|
||||
|
||||
private void OnComboBoxChanged()
|
||||
{
|
||||
Debug.Log(ComboBox.selectedIndex);
|
||||
if (Option is IMultiOption multiOption)
|
||||
{
|
||||
multiOption.SetValue(ComboBox.selectedIndex);
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateValueText()
|
||||
{
|
||||
Pages.visible = false;
|
||||
|
||||
@@ -14,16 +14,14 @@ namespace NBF
|
||||
public override string UIPackName => "Main";
|
||||
public override string UIResName => "SettingPanel";
|
||||
|
||||
[AutoFind(Name = "Menu")]
|
||||
public CommonMenu Menu;
|
||||
[AutoFind(Name = "MenuList")]
|
||||
public CommonSubMenu MenuList;
|
||||
[AutoFind(Name = "Introduce")]
|
||||
public IntroduceTag Introduce;
|
||||
[AutoFind(Name = "List")]
|
||||
public GList List;
|
||||
[AutoFind(Name = "BottomMenu")]
|
||||
public BottomMenu BottomMenu;
|
||||
[AutoFind(Name = "BottomLine")]
|
||||
public GImage BottomLine;
|
||||
[AutoFind(Name = "Mask")]
|
||||
public GLabel Mask;
|
||||
[AutoFind(Name = "InputWait")]
|
||||
|
||||
@@ -23,27 +23,28 @@ namespace NBF
|
||||
base.OnInit();
|
||||
IsShowCursor = true;
|
||||
IsDontBack = true;
|
||||
|
||||
//TEXT_SETTINGS_
|
||||
var groupNames = Settings.Instance.GetAllTabs();
|
||||
foreach (var group in groupNames)
|
||||
{
|
||||
var tab = new TabItemData
|
||||
{
|
||||
Key = $"TEXT_SETTINGS_{group}"
|
||||
Key = $"TEXT_SETTINGS_{group}",
|
||||
Name = group
|
||||
};
|
||||
tabList.Add(tab);
|
||||
}
|
||||
|
||||
|
||||
Menu.OnTabChange += ChangeTab;
|
||||
MenuList.OnTabChange += ChangeTab;
|
||||
List.onClickItem.Set(OnClickListItem);
|
||||
}
|
||||
|
||||
protected override void OnShow()
|
||||
{
|
||||
InputManager.Instance.Off(this);
|
||||
Settings.Instance.LoadAllSettings();
|
||||
InputManager.OnUICanceled += OnUICanceled;
|
||||
Menu.SetTabs(tabList);
|
||||
MenuList.SetTabs(tabList);
|
||||
UseBottomMenu();
|
||||
}
|
||||
|
||||
@@ -52,7 +53,7 @@ namespace NBF
|
||||
if (index < 0) return;
|
||||
Log.Info($"Change tab index={index}");
|
||||
var tabListData = tabList[index];
|
||||
_currentTab = tabListData.Key;
|
||||
_currentTab = tabListData.Name;
|
||||
ResetSettingList();
|
||||
}
|
||||
|
||||
@@ -82,35 +83,29 @@ namespace NBF
|
||||
|
||||
|
||||
var url = UIPackage.GetItemURL(UIPackName, "SettingSubTitleItem");
|
||||
var groupIndex = 0;
|
||||
foreach (var key in groupOptions.Keys)
|
||||
{
|
||||
var value = groupOptions[key];
|
||||
if (List.AddItemFromPool(url) is GLabel label)
|
||||
if (groupIndex > 0)
|
||||
{
|
||||
label.SetLanguage(key);
|
||||
if (List.AddItemFromPool(url) is GLabel label)
|
||||
{
|
||||
label.SetLanguage(key);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var option in value)
|
||||
{
|
||||
if (option is InputOption)
|
||||
if (List.AddItemFromPool() is SettingItem item)
|
||||
{
|
||||
if (List.AddItemFromPool(SettingInputItem.URL) is SettingInputItem item)
|
||||
{
|
||||
item.SetData(option as InputOption);
|
||||
var index = List.GetChildIndex(item);
|
||||
_canSelectIndex.Add(index);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (List.AddItemFromPool() is SettingItem item)
|
||||
{
|
||||
item.SetData(option);
|
||||
var index = List.GetChildIndex(item);
|
||||
_canSelectIndex.Add(index);
|
||||
}
|
||||
item.SetData(option);
|
||||
var index = List.GetChildIndex(item);
|
||||
_canSelectIndex.Add(index);
|
||||
}
|
||||
}
|
||||
|
||||
groupIndex++;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -119,16 +114,6 @@ namespace NBF
|
||||
BottomMenu.Use(this);
|
||||
}
|
||||
|
||||
private void OnApplySettings()
|
||||
{
|
||||
var options = Settings.Instance.GetOptionsByTab(_currentTab);
|
||||
Log.Info("OnApplySettings");
|
||||
foreach (var option in options)
|
||||
{
|
||||
option.Apply();
|
||||
}
|
||||
Notices.Success("TEXT_OP_SUCCESS");
|
||||
}
|
||||
|
||||
private void OnResetSettings()
|
||||
{
|
||||
@@ -138,51 +123,10 @@ namespace NBF
|
||||
{
|
||||
option.Reset();
|
||||
}
|
||||
|
||||
ResetSettingList();
|
||||
|
||||
Notices.Success("TEXT_OP_SUCCESS");
|
||||
}
|
||||
|
||||
private void OnUICanceled(string action)
|
||||
{
|
||||
if (action == InputDef.UI.SubPrev)
|
||||
{
|
||||
if (List.GetChildAt(List.selectedIndex) is SettingItem item)
|
||||
{
|
||||
item.OnPrev();
|
||||
}
|
||||
}
|
||||
else if (action == InputDef.UI.SubNext)
|
||||
{
|
||||
if (List.GetChildAt(List.selectedIndex) is SettingItem item)
|
||||
{
|
||||
item.OnNext();
|
||||
}
|
||||
}
|
||||
else if (action == InputDef.UI.Up)
|
||||
{
|
||||
ChangeListSelected();
|
||||
}
|
||||
else if (action == InputDef.UI.Down)
|
||||
{
|
||||
ChangeListSelected(false);
|
||||
}
|
||||
else if (action == InputDef.UI.Back)
|
||||
{
|
||||
OnBack();
|
||||
}
|
||||
else if (action == InputDef.UI.Enter)
|
||||
{
|
||||
OnApplySettings();
|
||||
}
|
||||
else if (action == InputDef.UI.Reset)
|
||||
{
|
||||
MessageBox.Show("是否重置为默认?", (ret) =>
|
||||
{
|
||||
if (ret) OnResetSettings();
|
||||
});
|
||||
}
|
||||
ResetSettingList();
|
||||
|
||||
Notices.Success("TEXT_OP_SUCCESS");
|
||||
}
|
||||
|
||||
|
||||
@@ -225,12 +169,62 @@ namespace NBF
|
||||
var settingItem = List.GetChildAt(index);
|
||||
if (settingItem is SettingItem item)
|
||||
{
|
||||
Introduce.TextName.SetLanguage(item.Option.Name);
|
||||
// Introduce.TextName.SetLanguage(item.Option.Name);
|
||||
Introduce.TextIntroduce.SetLanguage(item.Option.Name);
|
||||
// Introduce.
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void CancelAndBack()
|
||||
{
|
||||
var groupNames = Settings.Instance.GetAllTabs();
|
||||
foreach (var group in groupNames)
|
||||
{
|
||||
var options = Settings.Instance.GetOptionsByTab(group);
|
||||
foreach (var option in options)
|
||||
{
|
||||
if (option.HaveNotApple())
|
||||
{
|
||||
option.Cancel();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#region Input Evnet
|
||||
|
||||
[InputInvoke(InputDef.UI.SubPrev)]
|
||||
private void OnSubPrev()
|
||||
{
|
||||
if (List.GetChildAt(List.selectedIndex) is SettingItem item)
|
||||
{
|
||||
item.OnPrev();
|
||||
}
|
||||
}
|
||||
|
||||
[InputInvoke(InputDef.UI.SubNext)]
|
||||
private void OnSubNext()
|
||||
{
|
||||
if (List.GetChildAt(List.selectedIndex) is SettingItem item)
|
||||
{
|
||||
item.OnNext();
|
||||
}
|
||||
}
|
||||
|
||||
[InputInvoke(InputDef.UI.Up)]
|
||||
private void OnUp()
|
||||
{
|
||||
ChangeListSelected();
|
||||
}
|
||||
|
||||
[InputInvoke(InputDef.UI.Down)]
|
||||
private void OnDown()
|
||||
{
|
||||
ChangeListSelected(false);
|
||||
}
|
||||
|
||||
[InputInvoke(InputDef.UI.Back)]
|
||||
private void OnBack()
|
||||
{
|
||||
if (Settings.Instance.HaveNotAppleSettings())
|
||||
@@ -250,33 +244,40 @@ namespace NBF
|
||||
}
|
||||
}
|
||||
|
||||
private void CancelAndBack()
|
||||
[InputInvoke(InputDef.UI.Enter)]
|
||||
private void OnApplySettings()
|
||||
{
|
||||
|
||||
var groupNames = Settings.Instance.GetAllTabs();
|
||||
foreach (var group in groupNames)
|
||||
var options = Settings.Instance.GetOptionsByTab(_currentTab);
|
||||
Log.Info("OnApplySettings");
|
||||
foreach (var option in options)
|
||||
{
|
||||
var options = Settings.Instance.GetOptionsByTab(group);
|
||||
foreach (var option in options)
|
||||
{
|
||||
if (option.HaveNotApple())
|
||||
{
|
||||
option.Cancel();
|
||||
}
|
||||
}
|
||||
option.Apply();
|
||||
}
|
||||
|
||||
Notices.Success("TEXT_OP_SUCCESS");
|
||||
}
|
||||
|
||||
[InputInvoke(InputDef.UI.Reset)]
|
||||
private void OnReset()
|
||||
{
|
||||
MessageBox.Show("是否重置为默认?", (ret) =>
|
||||
{
|
||||
if (ret) OnResetSettings();
|
||||
});
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
protected override void OnHide()
|
||||
{
|
||||
base.OnHide();
|
||||
InputManager.OnUICanceled -= OnUICanceled;
|
||||
InputManager.Instance.Off(this);
|
||||
}
|
||||
|
||||
protected override void OnDestroy()
|
||||
{
|
||||
base.OnDestroy();
|
||||
Menu.OnTabChange -= ChangeTab;
|
||||
MenuList.OnTabChange -= ChangeTab;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user