using KTGMGemClient; using System; using TMPro; using TowerDefense.Level; using TowerDefense.Towers.Placement; using UnityEngine; using UnityEngine.UI; /// /// 当前类用于开启新的TowerPlacementGrid,用于无尽模式。当前类附加在对应的购买开启按钮上。 /// public class EndlessTowerGridOpen : MonoBehaviour { // 当前Button对应的Cash Text数据 public TextMeshProUGUI cashText; // 当前Button对应的image. public Image mImage; // 当前的Grid按钮对应的xy坐标. protected int gridX; protected int gridY; /// /// 是否处于等待开启的状态. /// protected bool bWaitOpen; protected float waitOpenCDTime; // 对应放置TowerGrid的类. protected TowerPlacementGridEndless towerGrid; private bool isOpenTower = false; // Start is called before the first frame update void Start() { bWaitOpen = false; } public void SetBuyBtnInfo(int x, int y, TowerPlacementGridEndless tpg) { gridX = x; gridY = y; towerGrid = tpg; } /// /// 当前类附加的按钮被点击,需要开启当前按钮所在的塔位. /// public void OnClick() { if (bWaitOpen) return; if (GameConfig.IsNewbie) { if (!GameConfig.CanOpenNewTower) return; if (!isOpenTower) { isOpenTower = true; EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.GetOneTowerPos); } } if (towerGrid != null) { float cashToOpen = TowerPlacementGridEndless.GRID_OPENCASH; if (EndlessLevelManager.instance.Currency.currentCurrency < cashToOpen) return; // 减少Cash并开启相应塔防管理器的兵线 bool bsucc = EndlessLevelManager.instance.Currency.TryPurchase((int)cashToOpen); if (bsucc) { ++GameConfig.EndlessOpenAttackTowerCount; towerGrid.updateGridOpenCoin(gridX, gridY); if (mImage) mImage.color = new Color(1.0f, 1.0f, 1.0f, 0.0f); bWaitOpen = true; waitOpenCDTime = JsonDataCenter.GRIDOPEN_CDTIME; Vector3 tpos = cashText.transform.position; tpos.y += 20; cashText.transform.position = tpos; SetWaitOpenTime(); } } } /// /// 删除当前的界面. /// public void Release() { GameObject.Destroy(gameObject); } protected void SetWaitOpenTime() { string distime = ((int)Math.Ceiling(waitOpenCDTime)).ToString() + "s"; cashText.text = distime; } // Update is called once per frame void Update() { if (bWaitOpen) { waitOpenCDTime -= Time.deltaTime; if (waitOpenCDTime <= 0) { // 购买当前的格子. towerGrid.BuyTowerGrid(gridX, gridY); Release(); return; } SetWaitOpenTime(); } } }