123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198 |
- using System.Collections.Generic;
- using System.Linq;
- using Excel2Json;
- using Fort23.Core;
- using Fort23.UTool;
- using GameLogic.Combat;
- using GameLogic.Combat.CombatTool;
- using UnityEngine;
- namespace Fort23.Mono
- {
- [UIBinding(prefab = "TowerPanel")]
- public partial class TowerPanel : UIPanel, IScrollListContent
- {
- public AccountFileInfo.TowerData _towerData;
- public List<TowerInfoConfig> towerInfoConfigps;
- public TowerLevelWidget currentLevelWidget;
- private TowerConfig towerConfig;
- public int ulockId;
- private void Init()
- {
- isAddStack = true;
- IsShowAppBar = false;
- }
- protected override void AddEvent()
- {
- }
- protected override void DelEvent()
- {
- }
- public override void AddButtonEvent()
- {
- Btn_Start.onClick.AddListener(async () =>
- {
- if ((currentLevelWidget.lastTowerLevelData == null ||
- !currentLevelWidget.lastTowerLevelData.finish) &&
- currentLevelWidget._towerInfoConfig.ID != 1)
- {
- TipMessagePanel.OpenTipMessagePanel("上一关还没有解锁!");
- return;
- }
- if (currentLevelWidget.towerLevelData == null)
- {
- AccountFileInfo.TowerLevelData towerLevelData = new AccountFileInfo.TowerLevelData();
- towerLevelData.id = currentLevelWidget._towerInfoConfig.ID;
- _towerData.towerLevelDatas.Add(towerLevelData);
- currentLevelWidget.towerLevelData = towerLevelData;
- AccountFileInfo.Instance.SavePlayerData();
- }
- CombatDrive.Instance.LoadLevelBattleCombat(currentLevelWidget._towerInfoConfig.typeValue[0], true,
- delegate(bool isWin)
- {
- LogTool.Log("战斗完成" + isWin);
- if (isWin)
- {
- currentLevelWidget.towerLevelData.finish = true;
- AccountFileInfo.Instance.SavePlayerData();
- CustomInit();
- }
- });
- });
- Btn_Back.onClick.AddListener(() => { UIManager.Instance.HideUIUIPanel(this); });
- }
- public override CTask<bool> AsyncInit(object[] uiData)
- {
- int towerId = (int)uiData[0];
- towerConfig = ConfigComponent.Instance.Get<TowerConfig>(towerId);
- _towerData = AccountFileInfo.Instance.playerData.TowerDatas.FirstOrDefault(td => td.id == towerId);
- if (_towerData == null)
- {
- _towerData = new AccountFileInfo.TowerData();
- _towerData.id = towerId;
- AccountFileInfo.Instance.playerData.TowerDatas.Add(_towerData);
- AccountFileInfo.Instance.SavePlayerData();
- }
- CustomInit();
- return base.AsyncInit(uiData);
- }
- public void CustomInit()
- {
- UIManager.Instance.DormancyAllGComponent<TowerLevelWidget>();
- var configs = ConfigComponent.Instance.GetAll<TowerInfoConfig>();
- towerInfoConfigps = configs.Where(t => t.groupId == towerConfig.towerinfoIdGroup).ToList();
- Vector2 size = Slider_Stage.GetComponent<RectTransform>().sizeDelta;
- size.y = (141.2778f + 40) * (towerInfoConfigps.Count - 1);
- ulockId = _towerData.GetMaxUlockid();
- TowerInfoConfig ulockTowerInfoConfig = default;
- if (ulockId == 0)
- {
- ulockTowerInfoConfig = towerInfoConfigps[0];
- ulockId = ulockTowerInfoConfig.ID;
- }
- else
- {
- ulockTowerInfoConfig = ConfigComponent.Instance.Get<TowerInfoConfig>(ulockId);
-
- }
- Slider_Stage.GetComponent<RectTransform>().sizeDelta = size;
- Slider_Stage.value = (float)(ulockTowerInfoConfig.level) /
- (towerInfoConfigps.Count - 1);
- Content.Init(this, towerInfoConfigps.Count - 1, towerInfoConfigps.Count - 1 - ulockTowerInfoConfig.level);
- }
- public static async CTask OpenPanel(int id)
- {
- TowerPanel towerPanel = await UIManager.Instance.LoadAndOpenPanel<TowerPanel>(null, uiData: new object[] { id });
- }
- public async CTask<IScorllListWidget> GetIScorllListWidget(int index, RectTransform root)
- {
- int currInsex = index;
- if (currInsex < 0 || currInsex >= towerInfoConfigps.Count)
- {
- return null;
- }
- TowerLevelWidget woc1 =
- await UIManager.Instance.CreateGComponent<TowerLevelWidget>(null, ContentRoot);
- woc1.OnClick = OnClick;
- woc1.CustomInit(_towerData, towerInfoConfigps[towerInfoConfigps.Count - 1 - currInsex]);
- if (towerInfoConfigps[towerInfoConfigps.Count - 1 - currInsex].ID == ulockId)
- {
- woc1.OnPointerClick();
- }
- return woc1;
- }
- private void OnClick(ItemWidgetBasic obj)
- {
- TowerLevelWidget woc = obj as TowerLevelWidget;
- currentLevelWidget = woc;
- ulockId = currentLevelWidget._towerInfoConfig.ID;
- SelectBigsecretArea(woc);
- }
- public void SelectBigsecretArea(TowerLevelWidget towerLevelWidget, bool isSelect = true)
- {
- if (isSelect)
- {
- Icon_Select.gameObject.SetActive(true);
- Icon_Select.transform.SetParent(towerLevelWidget.transform);
- Icon_Select.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(24.75f, 0);
- Icon_Select.transform.SetAsFirstSibling();
- }
- else
- {
- Icon_Select.gameObject.SetActive(false);
- Icon_Select.transform.SetParent(transform);
- Icon_Select.transform.SetAsFirstSibling();
- }
- }
- public void HindIScorllListWidget(IScorllListWidget widget)
- {
- TowerLevelWidget towerLevelWidget = widget as TowerLevelWidget;
- if (towerLevelWidget._towerInfoConfig.ID == ulockId)
- {
- SelectBigsecretArea(towerLevelWidget, false);
- }
- UIManager.Instance.DormancyGComponent(widget as UIComponent);
- }
- public override void Close()
- {
- _towerData = null;
- ulockId = 0;
- currentLevelWidget = null;
- base.Close();
- }
- }
- }
|