diff --git a/Unity/Assets/Scripts/TH1_UI/View/Outside/UIOutsideHistoryView.cs b/Unity/Assets/Scripts/TH1_UI/View/Outside/UIOutsideHistoryView.cs index 894ea5e8e..0b2466e5e 100644 --- a/Unity/Assets/Scripts/TH1_UI/View/Outside/UIOutsideHistoryView.cs +++ b/Unity/Assets/Scripts/TH1_UI/View/Outside/UIOutsideHistoryView.cs @@ -92,22 +92,27 @@ namespace TH1_UI.View.Outside private void SetDropForce() { - DropdownForceData = new List() { - new Empire(){Civ = CivEnum.Common,Force = ForceEnum.Common}, - new Empire(){Civ = CivEnum.Egyptian,Force = ForceEnum.Remilia}, - new Empire(){Civ = CivEnum.French,Force = ForceEnum.Kaguya}, - new Empire(){Civ = CivEnum.Germany,Force = ForceEnum.Kanako}, - new Empire(){Civ = CivEnum.Indian,Force = ForceEnum.Satori}, + DropdownForceData = new List + { + new Empire(CivEnum.Common, ForceEnum.Common) }; DropdownForce.ClearOptions(); - List options = new List(); - options.Add(MultilingualManager.Instance.GetMultilingualText(uint.Parse(Table.Instance.PlayerDataAssets.CommonForceTitleText))); - foreach (var item in DropdownForceData) + List options = new List { - if (!Table.Instance.PlayerDataAssets.GetPlayerInfo(item.Civ, item.Force, out var info)) continue; + MultilingualManager.Instance.GetMultilingualText(uint.Parse(Table.Instance.PlayerDataAssets.CommonForceTitleText)) + }; + + foreach (var info in Table.Instance.PlayerDataAssets.PlayerDataList) + { + if (info == null || !ContentGate.CanSelectEmpire(info.CivId, info.ForceId)) continue; + var empire = new Empire( + Table.Instance.TransCivIdToCivEnum(info.CivId), + Table.Instance.TransForceIdToForceEnum(info.ForceId)); + DropdownForceData.Add(empire); options.Add(MultilingualManager.Instance.GetMultilingualText(info.ForceName)); } DropdownForce.AddOptions(options); + DropdownForce.SetValueWithoutNotify(0); DropdownForce.onValueChanged.RemoveAllListeners(); DropdownForce.onValueChanged.AddListener(OnOrderUpdate); @@ -151,15 +156,7 @@ namespace TH1_UI.View.Outside private void _RefreshList() { var gameMode = _currentGameMode; - var forceEnum = DropdownForce.value switch - { - 0 => ForceEnum.Common, - 1 => ForceEnum.Remilia, - 2 => ForceEnum.Kaguya, - 3 => ForceEnum.Kanako, - 4 => ForceEnum.Satori, - _ => ForceEnum.Common - }; + var forceEnum = GetSelectedForceEnum(); // index 0 = 不限, 1..16 → 玩家数 2..17 int playerCount = PlayerCountDropdown.value == 0 ? 0 : PlayerCountDropdown.value + 1; bool isScore = false; @@ -182,6 +179,14 @@ namespace TH1_UI.View.Outside SetItemList(GameRecordManager.Instance.GetSortGameRecordList(gameMode,forceEnum,playerCount,isScore,isTurn,isTime,order)); } + + private ForceEnum GetSelectedForceEnum() + { + if (DropdownForceData == null || DropdownForce == null) return ForceEnum.Common; + var index = DropdownForce.value; + if (index < 0 || index >= DropdownForceData.Count) return ForceEnum.Common; + return DropdownForceData[index].Force; + } public void SetContent(ShowUIOutsideHistory evt) {