123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using Excel2Json;
- using Fort23.Core;
- using Fort23.UTool;
- using GameLogic.Bag;
- using UnityEngine;
- using Utility;
- namespace Fort23.Mono
- {
- [UIBinding(prefab = "DivineSenceInfoPanel")]
- public partial class DivineSenceInfoPanel : UIPanel
- {
- private Action<int,List<ItemInfo>> callback;
- private int useCount = 0;
-
-
- List<ItemInfo> useItems = new List<ItemInfo>();
- List<DivineSenceInfoBtnWidget> _divineSenceInfoBtnWidgets = new List<DivineSenceInfoBtnWidget>();
- private int maxCount;
- private DivineSenseConfig divineSenseConfig;
- private void Init()
- {
- isPopUi = true;
- }
- protected override void AddEvent()
- {
- }
- protected override void DelEvent()
- {
- }
- public override void AddButtonEvent()
- {
- Btn_Ok.onClick.AddListener(() =>
- {
- useItems.Clear();
- foreach (var senceInfoBtnWidget in _divineSenceInfoBtnWidgets)
- {
- if (senceInfoBtnWidget.type == 2 && senceInfoBtnWidget.ItemInfo != null )
- {
- useItems.Add(senceInfoBtnWidget.ItemInfo);
- }
- }
- callback?.Invoke(useCount,useItems);
- UIManager.Instance.HideUIUIPanel(this);
- });
- Btn_Back.onClick.AddListener(() => { UIManager.Instance.HideUIUIPanel(this); });
- Btn_Close.onClick.AddListener(() => { UIManager.Instance.HideUIUIPanel(this); });
- Slider_Count.onValueChanged.AddListener((c) =>
- {
- useCount = (int)c;
- Text_Count.text = $"神识探索:{c}次";
- Text_shenshishangxian.text = $"({EventSystemManager.Instance.GetShenShiCount()} + {c}/{maxCount})";
- foreach (var senceInfoBtnWidget in _divineSenceInfoBtnWidgets)
- {
- senceInfoBtnWidget.UpdateItermCount(useCount);
- }
- });
- Btn_Tip.onClick.AddListener(() => { DivineSenceLevelPreviewPanel.OpenPanel(); });
-
-
- Btn_Event.onClick.AddListener(() =>
- {
- DivineSenceEventPreviewPanel.OpenPanel();
- });
- }
- public async void CustomInit(Action<int,List<ItemInfo>> callback)
- {
- _divineSenceInfoBtnWidgets.Clear();
- divineSenseConfig = ConfigComponent.Instance.Get<DivineSenseConfig>(AccountFileInfo.Instance.playerData.divineSenseLevel);
- HeroPowerUpConfig heroPowerUpConfig = PlayerManager.Instance.myHero.powerUpConfig;
- Text_Level.text = $"神识等级:{AccountFileInfo.Instance.playerData.divineSenseLevel}级";
- Text_Exp.text = $"{AccountFileInfo.Instance.playerData.divineSenseexp}/{divineSenseConfig.exp}";
- Slider_Exp.maxValue = divineSenseConfig.exp;
- Slider_Exp.value = AccountFileInfo.Instance.playerData.divineSenseexp;
- int count = AccountFileInfo.Instance.playerData.divineSensePoint / PlayerManager.Instance.gameConstantConfig.DetectEventCount;
- maxCount = heroPowerUpConfig.ShenshiMax / PlayerManager.Instance.gameConstantConfig.DetectEventCount;
- maxCount = maxCount > 10 ? 10 : maxCount;
- count = count + EventSystemManager.Instance.GetShenShiCount() > maxCount ? maxCount - EventSystemManager.Instance.GetShenShiCount() : count;
- Slider_Count.maxValue = count;
- Slider_Count.minValue = 1;
- List<float> probabilities = UtilTools.CalculateProbabilities(divineSenseConfig.QualityBonusChance.ToList());
- for (var i = 0; i < Text_qs.Count; i++)
- {
- Text_qs[i].text = $"{probabilities[i] * 100:F2}%";
- }
- DivineSenceInfoBtnWidget divineSenceInfoBtnWidget = await UIManager.Instance.CreateGComponentForObject<DivineSenceInfoBtnWidget>(DivineSenceInfoBtnWidgetGam0, null);
- divineSenceInfoBtnWidget.CustomInit(-1, 1);
- divineSenceInfoBtnWidget.OnClick = OnClick;
- _divineSenceInfoBtnWidgets.Add(divineSenceInfoBtnWidget);
- divineSenceInfoBtnWidget = await UIManager.Instance.CreateGComponentForObject<DivineSenceInfoBtnWidget>(DivineSenceInfoBtnWidgetGam1, null);
- divineSenceInfoBtnWidget.CustomInit(-1, 2);
- divineSenceInfoBtnWidget.OnClick = OnClick;
- _divineSenceInfoBtnWidgets.Add(divineSenceInfoBtnWidget);
- divineSenceInfoBtnWidget = await UIManager.Instance.CreateGComponentForObject<DivineSenceInfoBtnWidget>(DivineSenceInfoBtnWidgetGam2, null);
- divineSenceInfoBtnWidget.CustomInit(-1, 2);
- divineSenceInfoBtnWidget.OnClick = OnClick;
- _divineSenceInfoBtnWidgets.Add(divineSenceInfoBtnWidget);
- this.callback = callback;
- }
- private void OnClick(ItemWidgetBasic obj)
- {
- DivineSenceInfoBtnWidget divineSenceInfoBtnWidget = obj as DivineSenceInfoBtnWidget;
- if (divineSenceInfoBtnWidget.type == 1)
- return;
- DivineSenceItemPanel.OpenPanel(divineSenceInfoBtnWidget.ItemInfo, (id) =>
- {
- divineSenceInfoBtnWidget.CustomInit(id, divineSenceInfoBtnWidget.type);
- UpdateBl();
- },
- () =>
- {
- divineSenceInfoBtnWidget.CustomInit(-1, divineSenceInfoBtnWidget.type);
- UpdateBl();
- });
- }
- public void UpdateBl()
- {
- Map<int, int> probabilitiesMap = new Map<int, int>();
- foreach (var senceInfoBtnWidget in _divineSenceInfoBtnWidgets)
- {
- if (senceInfoBtnWidget.type == 2 && senceInfoBtnWidget.ItemInfo != null && senceInfoBtnWidget.ItemInfo.config.associateID == 6)
- {
- if (!probabilitiesMap.ContainsKey(senceInfoBtnWidget.ItemInfo.config.associateVlaue[0]))
- {
- probabilitiesMap.Add(senceInfoBtnWidget.ItemInfo.config.associateVlaue[0], senceInfoBtnWidget.ItemInfo.config.associateVlaue[1]);
- }
- else
- {
- probabilitiesMap[senceInfoBtnWidget.ItemInfo.config.associateVlaue[0]] += senceInfoBtnWidget.ItemInfo.config.associateVlaue[1];
- }
- }
- senceInfoBtnWidget.UpdateItermCount(useCount);
- }
- var QualityBonusChance = divineSenseConfig.QualityBonusChance.ToList();
- foreach (var keyValuePair in probabilitiesMap)
- {
- QualityBonusChance[keyValuePair.Key-1] *= keyValuePair.Value+0.01f;
- }
- List<float> probabilities = UtilTools.CalculateProbabilities(QualityBonusChance);
- for (var i = 0; i < Text_qs.Count; i++)
- {
- Text_qs[i].text = $"{probabilities[i] * 100:F2}%";
- }
- }
- public async static CTask OpenPanel(Action<int,List<ItemInfo>> callback)
- {
- DivineSenceInfoPanel divineSenceInfoPanel = await UIManager.Instance.LoadAndOpenPanel<DivineSenceInfoPanel>(null, UILayer.Top);
- divineSenceInfoPanel.CustomInit(callback);
- }
- }
- }
|