using System.Collections.Generic; using Excel2Json; using Fort23.Core; using Fort23.UTool; using GameLogic.Player; namespace Fort23.Mono { [UIBinding(prefab = "OpenBoxScorePanel")] public partial class OpenBoxScorePanel : UIPanel { List summonScoreRuleWidgets = new List(); List summonScoreAwardWidgets = new List(); AccountFileInfo.SummonData summonData; private OpenBoxProgressReward[] openBoxProgressRewards; OpenBoxConfig openBoxConfig; private void Init() { isAddStack = true; IsShowAppBar = true; } protected override void AddEvent() { } protected override void DelEvent() { } public override void AddButtonEvent() { Btn_Ok.onClick.AddListener(() => { summonData.isSummonSocre = true; AccountFileInfo.Instance.SavePlayerData(); Btn_Ok.gameObject.SetActive(!summonData.isSummonSocre); StartRoot.gameObject.SetActive(summonData.isSummonSocre); }); } public async override CTask AsyncInit(object[] uiData) { summonData = PlayerManager.Instance.SummonManager.summonDataMap[2]; openBoxConfig = ConfigComponent.Instance.Get(summonData.id); List openBoxScoreRules = PlayerManager.Instance.SummonManager.openBoxScoreRuleMap[2]; Btn_Ok.gameObject.SetActive(!summonData.isSummonSocre); StartRoot.gameObject.SetActive(summonData.isSummonSocre); if (summonData.isSummonSocre) { Text_JingDu.text = $"当前进度:{summonData.drawHistory.Count}/{openBoxConfig.ProgressRewardChoukaCount}"; Text_Score.text = $"目前得分:{summonData.score}"; } foreach (var openBoxScoreRule in openBoxScoreRules) { SummonScoreRuleWidget summonScoreRuleWidget = await UIManager.Instance.CreateGComponent(null, Content1); summonScoreRuleWidget.CustomInit(openBoxScoreRule); summonScoreRuleWidgets.Add(summonScoreRuleWidget); } openBoxProgressRewards = ConfigComponent.Instance.GetAll(); foreach (var openBoxProgressReward in openBoxProgressRewards) { SummonScoreAwardWidget summonScoreAwardWidget = await UIManager.Instance.CreateGComponent(null, Content2); summonScoreAwardWidget.CustomInit(openBoxProgressReward,AwardSummonScore); summonScoreAwardWidgets.Add(summonScoreAwardWidget); } for (var i = summonScoreAwardWidgets.Count - 1; i >= 0; i--) { if (summonData.score >= summonScoreAwardWidgets[i]._openBoxProgressReward.TotalScore) { summonScoreAwardWidgets[i].Icon_Select.gameObject.SetActive(true); if (summonData.drawHistory.Count >= openBoxConfig.ProgressRewardChoukaCount) { summonScoreAwardWidgets[i].Btn_LingQu.gameObject.SetActive(true); } break; } } return await base.AsyncInit(uiData); } private void AwardSummonScore() { //到达进度自动领取奖励 if (openBoxConfig.ProgressRewardChoukaCount != -1 && summonData.drawHistory.Count >= openBoxConfig.ProgressRewardChoukaCount) { for (var i =openBoxProgressRewards.Length-1; i >= 0; i--) { if (summonData.score >= openBoxProgressRewards[i].TotalScore) { for (var i1 = 0; i1 < openBoxProgressRewards[i].PrizeID.Length; i1++) { PlayerManager.Instance.BagController.AddItem(openBoxProgressRewards[i].PrizeID[i1], openBoxProgressRewards[i].PrizeCount[i1]); } break; } } summonData.isSummonSocre = false; summonData.score = 0; summonData.drawHistory.Clear(); summonData.summonSocreData.Clear(); AccountFileInfo.Instance.SavePlayerData(); } else { LogTool.Error("领取失败!"); } } public async static CTask OpenPanel() { await UIManager.Instance.LoadAndOpenPanel(null, isShowBG: true); } public override void Close() { foreach (var summonScoreRuleWidget in summonScoreRuleWidgets) { UIManager.Instance.DormancyGComponent(summonScoreRuleWidget); } summonScoreRuleWidgets.Clear(); foreach (var summonScoreRuleWidget in summonScoreAwardWidgets) { UIManager.Instance.DormancyGComponent(summonScoreRuleWidget); } summonScoreAwardWidgets.Clear(); AwardSummonScore(); base.Close(); } } }