|
|
@@ -3,10 +3,11 @@ using System.Collections.Generic;
|
|
|
using UnityEngine;
|
|
|
using UnityEngine.UI;
|
|
|
using UnityEngine.SceneManagement;
|
|
|
+using System.Linq;
|
|
|
|
|
|
namespace SmartBow
|
|
|
{
|
|
|
- public class SettingsView : MonoBehaviour, MenuBackInterface
|
|
|
+ public class SettingsView : JCUnityLib.ViewBase, MenuBackInterface
|
|
|
{
|
|
|
[SerializeField] Transform panelLeftContent;
|
|
|
[SerializeField] Transform BtnNewUserObj;
|
|
|
@@ -16,16 +17,93 @@ namespace SmartBow
|
|
|
PersistenHandler.ins?.menuBackCtr.views.Add(this);
|
|
|
//ShowBoxSound(true);
|
|
|
|
|
|
- if (CommonConfig.bInfraredApp) {
|
|
|
+ switch (CommonConfig.OP)
|
|
|
+ {
|
|
|
+ case OperatingPlatform.A:
|
|
|
+ if (CommonConfig.bInfraredApp)
|
|
|
+ {
|
|
|
+ //隐藏弓到屏幕的距离
|
|
|
+ Dictionary<string, Transform> actionMapInfrared= new Dictionary<string, Transform>
|
|
|
+ {
|
|
|
+ { "BtnSound", null },
|
|
|
+ { "BtnLanguage", null },
|
|
|
+ { "BtnNewUser", null },
|
|
|
+ { "BtnLevel", null },
|
|
|
+ { "BtnUserAgreement", null },
|
|
|
+ { "BtnPrivacyPolicy", null },
|
|
|
+ { "BtnAboutUs", null }
|
|
|
+ };
|
|
|
+ SortChildObjects(actionMapInfrared);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Dictionary<string, Transform> actionMapA = new Dictionary<string, Transform>
|
|
|
+ {
|
|
|
+ { "BtnSound", null },
|
|
|
+ { "BtnLanguage", null },
|
|
|
+ { "BtnNewUser", null },
|
|
|
+ { "BtnScreenDistance", null },//弓到屏幕的距离
|
|
|
+ { "BtnLevel", null },
|
|
|
+ { "BtnUserAgreement", null },
|
|
|
+ { "BtnPrivacyPolicy", null },
|
|
|
+ { "BtnAboutUs", null }
|
|
|
+ };
|
|
|
|
|
|
- //隐藏弓到屏幕的距离
|
|
|
- foreach (Transform item in panelLeftContent)
|
|
|
- {
|
|
|
- if (item.name == "BtnScreenDistance") {
|
|
|
- item.gameObject.SetActive(false);
|
|
|
+ SortChildObjects(actionMapA);
|
|
|
}
|
|
|
+ break;
|
|
|
+ case OperatingPlatform.B:
|
|
|
+ // 定义排序字典
|
|
|
+ Dictionary<string, Transform> actionMapB = new Dictionary<string, Transform>
|
|
|
+ {
|
|
|
+ { "BtnSound", null },
|
|
|
+ { "BtnLanguage", null },
|
|
|
+ { "BtnLevel", null },
|
|
|
+ { "BtnUserSettings", null },
|
|
|
+ { "BtnBackStageManagement", null },
|
|
|
+ { "BtnAboutUs", null }
|
|
|
+ };
|
|
|
+ SortChildObjects(actionMapB);
|
|
|
+ break;
|
|
|
+ case OperatingPlatform.C:
|
|
|
+ //隐藏弓到屏幕的距离
|
|
|
+ Dictionary<string, Transform> actionMapInfraredC = new Dictionary<string, Transform>
|
|
|
+ {
|
|
|
+ { "BtnSound", null },
|
|
|
+ { "BtnLanguage", null },
|
|
|
+ { "BtnNewUser", null },
|
|
|
+ { "BtnLevel", null },
|
|
|
+ { "BtnUserAgreement", null },
|
|
|
+ { "BtnPrivacyPolicy", null },
|
|
|
+ { "BtnAboutUs", null }
|
|
|
+ };
|
|
|
+ SortChildObjects(actionMapInfraredC);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ void SortChildObjects(Dictionary<string, Transform> actionMap) {
|
|
|
+
|
|
|
+ // 查找子对象并按名称填充 actionMap
|
|
|
+ foreach (Transform child in panelLeftContent)
|
|
|
+ {
|
|
|
+ if (actionMap.ContainsKey(child.name))
|
|
|
+ {
|
|
|
+ actionMap[child.name] = child;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ // 如果子对象不在 actionMap 中,则隐藏它
|
|
|
+ child.gameObject.SetActive(false);
|
|
|
}
|
|
|
- ShowBoxScreenDistance(false);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取按字典定义顺序的子对象列表(过滤掉未找到的对象)
|
|
|
+ var sortedChildren = actionMap.Values.Where(child => child != null).ToList();
|
|
|
+
|
|
|
+ // 重新排列子对象
|
|
|
+ for (int i = 0; i < sortedChildren.Count; i++)
|
|
|
+ {
|
|
|
+ sortedChildren[i].SetSiblingIndex(i);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -71,17 +149,58 @@ namespace SmartBow
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
void ShowBox(string itemName)
|
|
|
{
|
|
|
- ShowBoxSound(itemName == "BtnSound");
|
|
|
- ShowBoxLevel(itemName == "BtnLevel");
|
|
|
- ShowBoxNewUser(itemName == "BtnNewUser");
|
|
|
- if (!CommonConfig.bInfraredApp)ShowBoxScreenDistance(itemName == "BtnScreenDistance");
|
|
|
- ShowBoxLanguage(itemName == "BtnLanguage");
|
|
|
- ShowBoxUserAgreement(itemName == "BtnUserAgreement");
|
|
|
- ShowBoxPrivacyPolicy(itemName == "BtnPrivacyPolicy");
|
|
|
- ShowBoxAboutUs(itemName == "BtnAboutUs");
|
|
|
+ // 定义所有 ShowBox 方法,并将初始状态设为 false
|
|
|
+ var actionMap = new Dictionary<string, System.Action<bool>>
|
|
|
+ {
|
|
|
+ { "BtnSound", ShowBoxSound },
|
|
|
+ { "BtnLevel", ShowBoxLevel },
|
|
|
+ { "BtnNewUser", ShowBoxNewUser },
|
|
|
+ { "BtnUserSettings", ShowBoxUserSettings },
|
|
|
+ { "BtnBackStageManagement",ShowBackStageManagement},
|
|
|
+ { "BtnLanguage", ShowBoxLanguage },
|
|
|
+ { "BtnUserAgreement", ShowBoxUserAgreement },
|
|
|
+ { "BtnPrivacyPolicy", ShowBoxPrivacyPolicy },
|
|
|
+ { "BtnAboutUs", ShowBoxAboutUs }
|
|
|
+ };
|
|
|
+
|
|
|
+ // 如果不是红外应用,则包括 BtnScreenDistance
|
|
|
+ if (!CommonConfig.bInfraredApp)
|
|
|
+ {
|
|
|
+ actionMap["BtnScreenDistance"] = ShowBoxScreenDistance;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 先将所有状态设为 false
|
|
|
+ foreach (var action in actionMap.Values)
|
|
|
+ {
|
|
|
+ action(false);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 将指定的 itemName 对应的按钮设为 true
|
|
|
+ if (actionMap.TryGetValue(itemName, out var selectedAction))
|
|
|
+ {
|
|
|
+ selectedAction(true);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //void ShowBox(string itemName)
|
|
|
+ //{
|
|
|
+ // ShowBoxSound(itemName == "BtnSound");
|
|
|
+ // ShowBoxLevel(itemName == "BtnLevel");
|
|
|
+ // ShowBoxNewUser(itemName == "BtnNewUser");
|
|
|
+ // ShowBoxUserSettings(itemName == "BtnUserSettings");
|
|
|
+ // if (!CommonConfig.bInfraredApp)ShowBoxScreenDistance(itemName == "BtnScreenDistance");
|
|
|
+ // ShowBoxLanguage(itemName == "BtnLanguage");
|
|
|
+ // ShowBoxUserAgreement(itemName == "BtnUserAgreement");
|
|
|
+ // ShowBoxPrivacyPolicy(itemName == "BtnPrivacyPolicy");
|
|
|
+ // ShowBoxAboutUs(itemName == "BtnAboutUs");
|
|
|
+ //}
|
|
|
+ public void ShowBoxUserSettings(bool show) {
|
|
|
+ transform.Find("PanelContent/BoxUserSettings").gameObject.SetActive(show);
|
|
|
+ }
|
|
|
+ public void ShowBackStageManagement(bool show)
|
|
|
+ {
|
|
|
+ transform.Find("PanelContent/BoxBackStageManagement").gameObject.SetActive(show);
|
|
|
}
|
|
|
public void ShowBoxSound(bool show)
|
|
|
{
|