using System; using System.Collections.Generic; using Animancer; using Logic; using Logic.Action; using Logic.AI; using Logic.Audio; 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; namespace TH1_UI.View.Outside { public class UIOutsideHistoryView : Base.View { [Header("按钮")] //public Button CloseButton; public Button CloseButton; public Transform ItemList; public TMP_Dropdown DropdownForce; public RectTransform DropdownForceRect; private List DropdownForceData; // 新增:玩家人数下拉与排序下拉 public TMP_Dropdown PlayerCountDropdown; public RectTransform PlayerCountDropdownRect; private List PlayerCountData; public TMP_Dropdown OrderDropdown; public RectTransform OrderDropdownRect; private List OrderDropData; public GameObject ItemPrefab; //关闭时执行的委托 public ViDelegateAssisstant.Dele OnBtnCloseClick; private List _items = new List(); protected override void OnInit() { base.OnInit(); CloseButton.onClick.RemoveAllListeners(); CloseButton.onClick.AddListener(OnClose); } private void SetItemList() { var dataSize = GameRecordManager.Instance.GameRecordData.Records.Count; var dataList = GameRecordManager.Instance.GameRecordData.Records; if (dataSize > 100) dataSize = 100; while (_items.Count < dataSize) { var obj = Instantiate(ItemPrefab, ItemList); var cpn = obj?.GetComponent(); if (cpn == null) break; _items.Add(cpn); } for (int i = 0; i < _items.Count; i++) { _items[i].gameObject.SetActive(i < dataSize); _items[i].SetContent(dataList[i]); } } 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}, }; DropdownForce.ClearOptions(); List options = new List(); options.Add(MultilingualManager.Instance.GetMultilingualText(uint.Parse(Table.Instance.PlayerDataAssets.CommonForceTitleText))); foreach (var item in DropdownForceData) { if (!Table.Instance.PlayerDataAssets.GetPlayerInfo(item.Civ, item.Force, out var info)) continue; options.Add(MultilingualManager.Instance.GetMultilingualText(info.ForceName)); } DropdownForce.AddOptions(options); DropdownForce.onValueChanged.RemoveAllListeners(); DropdownForce.onValueChanged.AddListener(OnDropdownForceSelect); } // 新增:玩家人数下拉设置 private void SetPlayerCountDropForce() { if (PlayerCountDropdown == null) return; PlayerCountData = new List() { "不限", "2人", "3人", "4人", "5人", "6人", "7人", "8人" }; PlayerCountDropdown.ClearOptions(); PlayerCountDropdown.AddOptions(PlayerCountData); PlayerCountDropdown.onValueChanged.RemoveAllListeners(); PlayerCountDropdown.onValueChanged.AddListener(OnPlayerCountSelect); } private void OnPlayerCountSelect(int index) { if (PlayerCountData == null || index < 0 || index >= PlayerCountData.Count) return; Debug.Log($"PlayerCount selected: {PlayerCountData[index]}"); // TODO: 根据需要在这里处理筛选逻辑 } // 新增:排序下拉设置 private void SetOrderDropForce() { if (OrderDropdown == null) return; OrderDropData = new List() { "按时间顺序", "按成绩顺序", "按时间倒序" }; OrderDropdown.ClearOptions(); OrderDropdown.AddOptions(OrderDropData); OrderDropdown.onValueChanged.RemoveAllListeners(); OrderDropdown.onValueChanged.AddListener(OnOrderSelect); } private void OnOrderSelect(int index) { if (OrderDropData == null || index < 0 || index >= OrderDropData.Count) return; Debug.Log($"Order selected: {OrderDropData[index]}"); // TODO: 根据需要在这里处理排序逻辑 } private void OnDropdownForceSelect(int index) { if(!Table.Instance.PlayerDataAssets.GetPlayerInfo(DropdownForceData[index].Civ, DropdownForceData[index].Force, out var info))return; Debug.Log(MultilingualManager.Instance.GetMultilingualText(info.ForceName)); } public void SetContent(ShowUIOutsideHistory evt) { SetItemList(); SetDropForce(); SetPlayerCountDropForce(); SetOrderDropForce(); //如果数量不够,先clone row补足 } //在Controller 调用Close的时候,会先调用这个closeview public void OnCloseView() { } public void OnSettingClicked() { } public void OnStartClicked() { EventManager.Publish(new ShowUIOutsideSelect()); } public void OnClose() { OnBtnCloseClick.Invoke(); } } }