123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439 |
- using System.Collections.Generic;
- using System.Linq;
- using Core.Language;
- using Excel2Json;
- using Fort23.Core;
- using Fort23.UTool;
- using GameLogic.Bag;
- using UnityEngine;
- namespace Fort23.Mono
- {
- [UIBinding(prefab = "DaoYouInfoPanel")]
- public partial class DaoYouInfoPanel : UIPanel
- {
- private AccountFileInfo.DaoYouData daoYouData;
- private DaoyouModelConfig _daoyouModelConfig;
- List<WidgetItem> widgetItems = new List<WidgetItem>();
- List<WidgetItem> giveWidgetItems = new List<WidgetItem>();
- List<DaoYouLevelWidget> _daoYouLevelWidgets = new List<DaoYouLevelWidget>();
- List<DaoYouIdleEarningsWidget> _daoYouIdleEarningsWidgets = new List<DaoYouIdleEarningsWidget>();
- private DaoyouGiftConfig[] daoyouGiftConfigs;
- private void Init()
- {
- IsShowAppBar = true;
- isAddStack = true;
- }
- protected override void AddEvent()
- {
- }
- protected override void DelEvent()
- {
- }
- public override void AddButtonEvent()
- {
- Btn_Facorability.onClick.AddListener(() =>
- {
- Info.SetActive(false);
- Facorability.SetActive(true);
- });
- Btn_InfoMation.onClick.AddListener(() =>
- {
- Info.SetActive(true);
- Facorability.SetActive(false);
- });
- Btn_SendGift.onClick.AddListener(async () =>
- {
- if (daoYouData.favorabilityLv >= _daoYouLevelWidgets.Count)
- {
- TipMessagePanel.OpenTipMessagePanel("道友等级已到最高");
- return;
- }
- AppBarPanel.ClosePanel();
- await UpdateGiveGiftRoot();
- GiveGite.gameObject.SetActive(true);
- });
- Btn_Love.onClick.AddListener(() =>
- {
- ClosePoolGive();
- saiXuanType = 2;
- List<ItemInfo> showItems = SaiXuan(saiXuanType);
- CreatItem(showItems);
- });
- Btn_Tongyong.onClick.AddListener(() =>
- {
- ClosePoolGive();
- saiXuanType = 1;
- List<ItemInfo> showItems = SaiXuan(saiXuanType);
- CreatItem(showItems);
- });
- Btn_Eveent.onClick.AddListener(() =>
- {
- if (daoYouData.favorabilityLv >= _daoyouModelConfig.EmotionLvforQuest
- && !EventSystemManager.Instance.BagIsEvent(_daoyouModelConfig.QuestID)
- && !EventSystemManager.Instance.IsEventTrigger(_daoyouModelConfig.QuestID))
- {
- AccountFileInfo.EventList eventList = EventSystemManager.Instance.AddEvent(_daoyouModelConfig.QuestID);
- AccountFileInfo.Instance.playerData.eventList.Add(eventList);
- AccountFileInfo.Instance.SavePlayerData();
- EventSystemManager.Instance.TriggerEvent(eventList);
- Btn_Eveent.gameObject.SetActive(false);
- }
- });
- Btn_Back.onClick.AddListener(() =>
- {
- ClosePoolGive();
- GiveGite.gameObject.SetActive(false);
- AppBarPanel.OpenPanel(this);
- });
- Btn_Add.onClick.AddListener(Add);
- Btn_Reduce.onClick.AddListener(Reduce);
- Btn_Max.onClick.AddListener(() =>
- {
- if (widgetItem1 == null)
- return;
- Slider_Give.value = (int)widgetItem1.itemInfo.count.Value;
- });
- Slider_Give.onValueChanged.AddListener((i) =>
- {
- count = (int)i;
- UpdateGiveItemCount();
- });
- Btn_Give.onClick.AddListener(() =>
- {
- if (widgetItem1 == null)
- {
- return;
- }
- if (daoyouGiftConfig.ID == 0)
- return;
- PlayerManager.Instance.BagController.DeductItem(daoyouGiftConfig.ItemID, count);
- daoYouData.exp += daoyouGiftConfig.emotionValue * count;
- DaoyouLevelupConfig[] configs = ConfigComponent.Instance.GetAll<DaoyouLevelupConfig>();
- for (var i = daoYouData.favorabilityLv; i < configs.Length; i++)
- {
- if (daoYouData.exp >= configs[i].exp)
- {
- daoYouData.exp -= configs[i].exp;
- daoYouData.favorabilityLv++;
- }
- }
- AccountFileInfo.Instance.SavePlayerData();
- UpdateUI();
- UpdateGiveGiftRoot();
- });
- }
- public async override CTask<bool> AsyncInit(object[] uiData)
- {
- daoYouData = uiData[0] as AccountFileInfo.DaoYouData;
- _daoyouModelConfig = ConfigComponent.Instance.Get<DaoyouModelConfig>(daoYouData.id);
- daoyouGiftConfigs = ConfigComponent.Instance.GetAll<DaoyouGiftConfig>();
- await UpdateUI();
- return await base.AsyncInit(uiData);
- }
- public async CTask UpdateUI()
- {
- foreach (var widgetItem in widgetItems)
- {
- UIManager.Instance.DormancyGComponent(widgetItem);
- }
- widgetItems.Clear();
- foreach (var daoYouLevelWidget in _daoYouLevelWidgets)
- {
- UIManager.Instance.DormancyGComponent(daoYouLevelWidget);
- }
- _daoYouLevelWidgets.Clear();
- foreach (var daoYouIdleEarningsWidget in _daoYouIdleEarningsWidgets)
- {
- UIManager.Instance.DormancyGComponent(daoYouIdleEarningsWidget);
- }
- _daoYouIdleEarningsWidgets.Clear();
- if (daoYouData.favorabilityLv >= _daoyouModelConfig.EmotionLvforQuest
- && !EventSystemManager.Instance.BagIsEvent(_daoyouModelConfig.QuestID)
- && !EventSystemManager.Instance.IsEventTrigger(_daoyouModelConfig.QuestID))
- {
- Btn_Eveent.gameObject.SetActive(true);
- }
- else
- {
- Btn_Eveent.gameObject.SetActive(false);
- }
- Text_Name.text = LanguageManager.Instance.Text(_daoyouModelConfig.name);
- int index = 0;
- for (var i = 0; i < _daoyouModelConfig.desUnlockLv.Length; i++)
- {
- if (daoYouData.favorabilityLv >= _daoyouModelConfig.desUnlockLv[i])
- {
- index = i;
- }
- }
- Text_Desc.text = LanguageManager.Instance.Text(_daoyouModelConfig.des[index]);
- foreach (var i in _daoyouModelConfig.guajiBuffID)
- {
- DaoYouIdleEarningsWidget daoYouIdleEarningsWidget = await UIManager.Instance.CreateGComponent<DaoYouIdleEarningsWidget>(null, GuajiContent);
- daoYouIdleEarningsWidget.CustomInit(daoYouData, i);
- _daoYouIdleEarningsWidgets.Add(daoYouIdleEarningsWidget);
- }
- DaoyouLevelupConfig currentDaoyouLevelupConfig = ConfigComponent.Instance.Get<DaoyouLevelupConfig>(daoYouData.favorabilityLv);
- Text_CurrentName.text = LanguageManager.Instance.Text(currentDaoyouLevelupConfig.name);
- Text_CurrentLevel.text = daoYouData.favorabilityLv.ToString();
- Slider_LeveUp.maxValue = currentDaoyouLevelupConfig.exp;
- Text_Exp.text = $"{daoYouData.exp}/{currentDaoyouLevelupConfig.exp}";
- Slider_LeveUp.value = daoYouData.exp;
- if (_daoyouModelConfig.PreferGiftID != null)
- {
- foreach (var i in _daoyouModelConfig.PreferGiftID)
- {
- WidgetItem widgetItem = await UIManager.Instance.CreateGComponent<WidgetItem>(null, LoveItemContent);
- widgetItems.Add(widgetItem);
- if (_daoyouModelConfig.shownPreferGiftID.Contains(i) || (daoYouData != null && daoYouData.loveIds.Contains(i)))
- {
- widgetItem.InitWidget(new ItemInfo(i, 0));
- }
- else
- {
- widgetItem.ShowWenhao();
- }
- }
- }
- DaoyouLevelupConfig[] configs = ConfigComponent.Instance.GetAll<DaoyouLevelupConfig>();
- foreach (var daoyouLevelupConfig in configs)
- {
- DaoYouLevelWidget daoYouLevelWidget = await UIManager.Instance.CreateGComponent<DaoYouLevelWidget>(null, DaoYouLevelWidgetContent);
- daoYouLevelWidget.CustomInit(daoYouData, daoyouLevelupConfig.ID);
- _daoYouLevelWidgets.Add(daoYouLevelWidget);
- }
- }
- List<ItemInfo> allItems = new List<ItemInfo>();
- private int saiXuanType = 1;
- public async CTask UpdateGiveGiftRoot()
- {
- ClosePoolGive();
- allItems.Clear();
- foreach (var daoyouGiftConfig in daoyouGiftConfigs)
- {
- if (PlayerManager.Instance.BagController.GetItemCount(daoyouGiftConfig.ItemID) > 0)
- {
- ItemInfo itemInfo = PlayerManager.Instance.BagController.GetItemInfo(daoyouGiftConfig.ItemID);
- allItems.Add(itemInfo);
- }
- }
- List<ItemInfo> showItems = SaiXuan(saiXuanType);
- CreatItem(showItems);
- }
- private List<ItemInfo> SaiXuan(int type)
- {
- List<ItemInfo> shownItems = new List<ItemInfo>();
- //全部
- if (type == 1)
- {
- shownItems = allItems.ToList();
- }
- //喜欢
- else if (type == 2)
- {
- foreach (var itemInfo in allItems)
- {
- if (_daoyouModelConfig.shownPreferGiftID.Contains(itemInfo.itemID) || (daoYouData != null && daoYouData.loveIds.Contains(itemInfo.itemID)))
- {
- shownItems.Add(itemInfo);
- }
- }
- }
- return shownItems;
- }
- private async CTask CreatItem(List<ItemInfo> shownItems)
- {
- // ClosePoolGive();
- foreach (var itemInfo in shownItems)
- {
- WidgetItem widgetItem = await UIManager.Instance.CreateGComponent<WidgetItem>(null, GiveGiftContent);
- widgetItem.InitWidget(itemInfo);
- widgetItem.OnClick = OnClick;
- giveWidgetItems.Add(widgetItem);
- }
- if (giveWidgetItems.Count > 0)
- {
- giveWidgetItems[0].OnPointerClick();
- }
- }
- DaoyouGiftConfig daoyouGiftConfig = default;
- private int count = 1;
- private WidgetItem widgetItem1;
- private async void OnClick(ItemWidgetBasic obj)
- {
- WidgetItem widgetItem = obj as WidgetItem;
- if (widgetItem1 == null)
- {
- widgetItem1 = await UIManager.Instance.CreateGComponent<WidgetItem>(null, WidgetItemRoot);
- widgetItem1.transform.GetComponent<RectTransform>().anchoredPosition = Vector2.zero;
- }
- widgetItem1.InitWidget(widgetItem.itemInfo);
- foreach (var giftConfig in daoyouGiftConfigs)
- {
- if (giftConfig.ItemID == widgetItem.itemInfo.itemID)
- {
- daoyouGiftConfig = giftConfig;
- break;
- }
- }
- Slider_Give.maxValue = widgetItem.itemInfo.count.Value;
- Slider_Give.minValue = 1;
- UpdateGiveItemCount();
- }
- private void Reduce()
- {
- if (widgetItem1 == null)
- return;
- count--;
- if (count < 1)
- {
- count = 1;
- }
- Slider_Give.value = count;
- }
- private void Add()
- {
- if (widgetItem1 == null)
- return;
- count++;
- if (count > widgetItem1.itemInfo.count.Value)
- {
- count = (int)widgetItem1.itemInfo.count.Value;
- }
- Slider_Give.value = count;
- }
- private void UpdateGiveItemCount()
- {
- Text_Count.text = $"当前选择数量{count}";
- Text_GiveGiftDesc.text = $"好感度+{daoyouGiftConfig.emotionValue * count}";
- }
- public override CTask GetFocus()
- {
- AppBarPanel.OpenPanel(this);
- return base.GetFocus();
- }
- public static async CTask OpenPanel(AccountFileInfo.DaoYouData daoYouData)
- {
- await UIManager.Instance.LoadAndOpenPanel<DaoYouInfoPanel>(null, uiData: new[] { daoYouData });
- }
- private void ClosePoolGive()
- {
- count = 0;
- daoyouGiftConfig = default;
- Slider_Give.value = 0;
- Slider_Give.minValue = 0;
- Slider_Give.maxValue = 0;
- foreach (var giveWidgetItem in giveWidgetItems)
- {
- UIManager.Instance.DormancyGComponent(giveWidgetItem);
- }
- giveWidgetItems.Clear();
- UIManager.Instance.DormancyGComponent(widgetItem1);
- widgetItem1 = null;
- }
- public override void Close()
- {
- daoyouGiftConfigs = null;
- foreach (var widgetItem in widgetItems)
- {
- UIManager.Instance.DormancyGComponent(widgetItem);
- }
- widgetItems.Clear();
- foreach (var daoYouLevelWidget in _daoYouLevelWidgets)
- {
- UIManager.Instance.DormancyGComponent(daoYouLevelWidget);
- }
- _daoYouLevelWidgets.Clear();
- foreach (var daoYouIdleEarningsWidget in _daoYouIdleEarningsWidgets)
- {
- UIManager.Instance.DormancyGComponent(daoYouIdleEarningsWidget);
- }
- _daoYouIdleEarningsWidgets.Clear();
- allItems.Clear();
- saiXuanType = 1;
- ClosePoolGive();
- base.Close();
- }
- }
- }
|