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 void Init() { isAddStack = false; } protected override void AddEvent() { } protected override void DelEvent() { } public override void AddButtonEvent() { Btn_Close.onClick.AddListener(() => { UIManager.Instance.HideUIUIPanel(this); }); } public async void CustomInit(AccountFileInfo.EventList eventList) { 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) { Text_Condition.text = LanguageManager.Instance.Text(evenkConfig.EventConditionMessage); } else { string desc = ""; foreach (var eventConditionData in eventLinkData.eventConditions) { desc += EventHelper.GetTaskMessage(eventConditionData) + "\n"; } Text_Condition.text = desc; } if (taskConfig.PrizeIDs != null) { List itemInfos = new List(); for (var i = 0; i < taskConfig.PrizeIDs.Length; i++) { DropConfig dropConfig = ConfigComponent.Instance.Get(taskConfig.PrizeIDs[i]); if (dropConfig.dropType == 3) { ItemInfo itemInfo = new ItemInfo(dropConfig.dropGroupID[0], taskConfig.PrizeNums[i]); itemInfos.Add(itemInfo); } else { List items = DropManager.Instance.DropItem(taskConfig.PrizeNums[i]); itemInfos.AddRange(items); } } foreach (var itemInfo in itemInfos) { WidgetItem widgetItem = await UIManager.Instance.CreateGComponent(null, root: ItemRoot); widgetItem.InitWidget(itemInfo); widgetItems.Add(widgetItem); } } } public async static CTask OpenPanel(AccountFileInfo.EventList eventList) { TaskInfoPanel taskInfoPanel = await UIManager.Instance.LoadAndOpenPanel(null, UILayer.Top); taskInfoPanel.CustomInit(eventList); return taskInfoPanel; } public override void Close() { foreach (var widgetItem in widgetItems) { UIManager.Instance.DormancyGComponent(widgetItem); } widgetItems.Clear(); base.Close(); } } }