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();
}
}
}