using System.Collections.Generic; using System.Linq; using Core.Language; using Excel2Json; using Fort23.Core; using Fort23.UTool; using GameLogic.Bag; using GameLogic.Player; namespace Fort23.Mono { [UIBinding(prefab = "TaskInfoPanel")] public partial class TaskInfoPanel : UIPanel { List widgetItems = new List(); private int type; private void Init() { isAddStack = false; } protected override void AddEvent() { } protected override void DelEvent() { } public override void AddButtonEvent() { Btn_Close.onClick.AddListener(() => { if (type == 2) { return; } UIManager.Instance.HideUIUIPanel(this); }); Btn_Bag.onClick.AddListener(() => { TipMessagePanel.OpenTipMessagePanel("事件的选择会影响获得的道具!"); }); Btn_Ok.onClick.AddListener(() => { UIManager.Instance.HideUIUIPanel(this); }); } public async void CustomInit(AccountFileInfo.EventList eventList, int type) { if (PlayerGuideManager.Instance.GuideIsCanDo(2, 6)) { PlayerGuideManager.Instance.NextGuide(); } this.type = type; Btn_Ok.gameObject.SetActive(type == 2); EventConfig taskConfig = ConfigComponent.Instance.Get(eventList.eventID); Text_Name.text = LanguageManager.Instance.Text(taskConfig.EventName); Text_desc.text = LanguageManager.Instance.Text(taskConfig.Description); EventLinkConfig evenkConfig = ConfigComponent.Instance.Get(eventList.curStep); AccountFileInfo.EventLinkData eventLinkData = eventList.eventLinks.FirstOrDefault(el => el.eventLinkId == eventList.curStep); if (eventLinkData == null || eventLinkData.eventConditions == null || eventLinkData.eventConditions.Count == 0) { if (evenkConfig.EventConditionMessage != 0) { Text_Condition.text = LanguageManager.Instance.Text(evenkConfig.EventConditionMessage); } else { Text_Condition.text = ""; } } else { string desc = ""; foreach (var eventConditionData in eventLinkData.eventConditions) { desc += EventHelper.GetTaskMessage(eventConditionData) + "\n"; } Text_Condition.text = desc; } Btn_Bag.gameObject.SetActive(false); foreach (var eventListEventLink in eventList.eventLinks) { EventLinkConfig eventLinkConfig = ConfigComponent.Instance.Get(eventListEventLink.eventLinkId); if (eventLinkConfig.optionType == 3) { Btn_Bag.gameObject.SetActive(true); break; } } using (CTaskAwaitBuffer cts = new CTaskAwaitBuffer()) { for (var i = 0; i < eventList.itemInfos.Count; i++) { ItemConfig itemConfig = ConfigComponent.Instance.Get(eventList.itemInfos[i].itemId); if (itemConfig.isVisible == 0) { continue; } cts.AddTask(UIManager.Instance.CreateGComponent(null, ItemRoot)); } widgetItems = await cts.WaitAll(); } int index = 0; for (var i = 0; i < eventList.itemInfos.Count; i++) { ItemConfig itemConfig = ConfigComponent.Instance.Get(eventList.itemInfos[i].itemId); if (itemConfig.isVisible == 0) { continue; } widgetItems[index++].InitWidget(new ItemInfo(eventList.itemInfos[i])); } } public async static CTask OpenPanel(AccountFileInfo.EventList eventList, int type) { TaskInfoPanel taskInfoPanel = await UIManager.Instance.LoadAndOpenPanel(null, UILayer.Top, isShowBG: true); taskInfoPanel.CustomInit(eventList, type); return taskInfoPanel; } public async override CTask Close() { foreach (var widgetItem in widgetItems) { UIManager.Instance.DormancyGComponent(widgetItem); } widgetItems.Clear(); await base.Close(); } } }