using DG.Tweening; using KTGMGemClient; using System; using System.Collections; using System.Collections.Generic; using TMPro; using TowerDefense.Level; using TowerDefense.Towers.Placement; using UnityEngine; using UnityEngine.UI; /// /// 当前类用于开启新的TowerPlacementGrid。当前类附加在对应的购买开启按钮上。 /// public class TowerGridOpen : 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 TowerPlacementGrid towerGrid; // Start is called before the first frame update void Start() { bWaitOpen = false; } public void SetBuyBtnInfo(int x, int y, TowerPlacementGrid tpg) { this.gridX = x; this.gridY = y; this.towerGrid = tpg; } /// /// 当前类附加的按钮被点击,需要开启当前按钮所在的塔位. /// public void OnClick() { // 等待开启的时候不能再次点击购买了 if (bWaitOpen) return; if (this.towerGrid != null) { float cashToOpen = TowerPlacementGrid.GRID_OPENCASH_SELF; bool opponent = towerGrid.opponent; if (opponent) { cashToOpen = TowerPlacementGrid.GRID_OPENCASH_OPPO; if (OpponentMgr.instance.currency.currentCurrency < cashToOpen) return; } else { if (LevelManager.instance.currency.currentCurrency < cashToOpen) return; } // 减少Cash并开启相应塔防管理器的兵线 bool bsucc = false; if (opponent) bsucc = OpponentMgr.instance.currency.TryPurchase((int)cashToOpen); else bsucc = LevelManager.instance.currency.TryPurchase((int)cashToOpen); if (bsucc) { 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(this.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(); } } }