using System; using UnityEngine; using UnityEngine.UI; public class BlessLVWin : UIBase { [SerializeField] Text curLVTxt; [SerializeField] Text nextLVTxt; [SerializeField] ScrollerController scroller; [SerializeField] Text leftTime; [SerializeField] Transform upgradeOnState; //升级中按钮 [SerializeField] Text itemCntTxt; [SerializeField] Image itemIcon; [SerializeField] Button timeUpBtn; //加速时间按钮 [SerializeField] Button freeBtn; [SerializeField] Text freeLeftTime; [SerializeField] Transform upgradeWaiteState; //待升级 [SerializeField] Image processImg; //进度 [SerializeField] Text moneyText; [SerializeField] Image moneyTypeImg; [SerializeField] Button upgradeButton; [SerializeField] UIEffectPlayer upgradeEffect; [SerializeField] UIEffectPlayer btnEffect; protected override void InitComponent() { timeUpBtn.AddListener(() => { UIManager.Instance.OpenWindow(); }); upgradeButton.AddListener(OnUpgrade); freeBtn.AddListener(() => { var pack = new CA504_tagCMPlayerGetReward(); pack.RewardType = 82; GameNetSystem.Instance.SendInfo(pack); }); } protected override void OnPreOpen() { BlessLVManager.Instance.OnBlessLVUpdateEvent += Display; PlayerDatas.Instance.playerDataRefreshEvent += OnPlayerDataRefreshEvent; GlobalTimeEvent.Instance.secondEvent += OnTimeEvent; scroller.OnRefreshCell += OnRefreshCell; CreateScroller(); Display(); BlessLVManager.Instance.AutoUpgrade(); } protected override void OnPreClose() { BlessLVManager.Instance.OnBlessLVUpdateEvent -= Display; PlayerDatas.Instance.playerDataRefreshEvent -= OnPlayerDataRefreshEvent; GlobalTimeEvent.Instance.secondEvent -= OnTimeEvent; scroller.OnRefreshCell -= OnRefreshCell; } void DisplayLVUPEffect() { if (BlessLVManager.Instance.lastTreeLV != BlessLVManager.Instance.m_TreeLV) { BlessLVManager.Instance.lastTreeLV = BlessLVManager.Instance.m_TreeLV; upgradeEffect.Play(); } else { upgradeEffect.Stop(); } } void OnTimeEvent() { if (BlessLVManager.Instance.m_LVUPState == 1) { if (BlessLVManager.Instance.GetLVUPRemainTime() > 0) { TimeUpShow(); } } } void Display() { curLVTxt.text = Language.Get("L1100", Language.Get("BlessTree2"), BlessLVManager.Instance.m_TreeLV); nextLVTxt.text = Language.Get("L1100", Language.Get("BlessTree3"), BlessLVManager.Instance.m_TreeLV + 1); var config = TreeLVConfig.Get(BlessLVManager.Instance.m_TreeLV); itemIcon.SetItemSprite(BlessLVManager.Instance.timeUpTreeItemID); //待升级 if (BlessLVManager.Instance.m_LVUPState == 0) { upgradeOnState.SetActive(false); upgradeWaiteState.SetActive(true); leftTime.text = Language.Get("L1100", Language.Get("BlessTree8"), TimeUtility.SecondsToDHMSEx(config.LVUPNeedTime)); ShowMoney(); moneyTypeImg.SetIconWithMoneyType(BlessLVManager.Instance.upgradeTreeMoneyType); } else { upgradeOnState.SetActive(true); upgradeWaiteState.SetActive(false); TimeUpShow(); } DisplayLVUPEffect(); scroller.m_Scorller.RefreshActiveCellViews(); } void TimeUpShow() { var remainTime = BlessLVManager.Instance.GetLVUPRemainTime(); leftTime.text = Language.Get("L1100", Language.Get("BlessTree8"), TimeUtility.SecondsToDHMSEx(remainTime)); long itemCnt = PackManager.Instance.GetItemCountByID(PackType.Item, BlessLVManager.Instance.timeUpTreeItemID); int needCount = (int)Math.Ceiling((float)remainTime / BlessLVManager.Instance.timeUpTreeItemSubTime); itemCntTxt.text = itemCnt + "/" + needCount; itemCntTxt.color = itemCnt >= needCount ? UIHelper.GetUIColor(TextColType.Green, true) : UIHelper.GetUIColor(TextColType.Red, true); if (BlessLVManager.Instance.m_FreeTimeCnt < BlessLVManager.Instance.dayFreeMaxTimes) { var freeeRemainTime = BlessLVManager.Instance.GetFreeRemainTime(); if (freeeRemainTime > 0) { freeLeftTime.text = TimeUtility.SecondsToHMS(freeeRemainTime); freeBtn.interactable = false; } else { freeLeftTime.text = ""; freeBtn.interactable = true; } } else { freeLeftTime.text = ""; freeBtn.interactable = false; } } void CreateScroller() { scroller.Refresh(); for (int i = 0; i < 9; i++) { scroller.AddCell(ScrollerDataType.Header, i); } scroller.Restart(); } void OnRefreshCell(ScrollerDataType type, CellView cell) { var _cell = cell as BlessLVCell; _cell.Display(cell.index); } private void OnPlayerDataRefreshEvent(PlayerDataType type) { if (type == UIHelper.moneyTypeToPlayerDataType[BlessLVManager.Instance.upgradeTreeMoneyType]) { ShowMoney(); } } void ShowMoney() { var config = TreeLVConfig.Get(BlessLVManager.Instance.m_TreeLV); string needMoney = config.LVUPNeedMoney.ToString(); if (config.LVUPNeedMoney >= 1000000) needMoney = UIHelper.ReplaceLargeNum(config.LVUPNeedMoney); long lsMoney = UIHelper.GetMoneyCnt(BlessLVManager.Instance.upgradeTreeMoneyType); string money = lsMoney.ToString(); if (lsMoney >= 1000000) money = UIHelper.ReplaceLargeNum(lsMoney); moneyText.text = money + "/" + needMoney; // moneyText.color = lsMoney >= config.LVUPNeedMoney ? UIHelper.GetUIColor(TextColType.Green, true) : UIHelper.GetUIColor(TextColType.Red, true); moneyTypeImg.SetIconWithMoneyType(BlessLVManager.Instance.upgradeTreeMoneyType); processImg.fillAmount = (float)lsMoney / config.LVUPNeedMoney; if (lsMoney >= config.LVUPNeedMoney) btnEffect.Play(); else btnEffect.Stop(); } void OnUpgrade() { var config = TreeLVConfig.Get(BlessLVManager.Instance.m_TreeLV); if (config.LVUPNeedMoney > UIHelper.GetMoneyCnt(BlessLVManager.Instance.upgradeTreeMoneyType)) { ItemTipUtility.ShowMoneyTip(BlessLVManager.Instance.upgradeTreeMoneyType); return; } var pack = new CB223_tagCMTreeLVUP(); pack.Type = 0; GameNetSystem.Instance.SendInfo(pack); } }