public virtual bool DestroyTower(Tower tower, Game game) { if (towerDictionary.ContainsKey(tower.UniqueID)) { towerDictionary.Remove(tower.UniqueID); game.Money += tower.DestroyReturn; OnBuildTowerCostChange?.Invoke(NextTowerCost); return(true); } else { return(false); } }
public virtual bool BuildTower(float positionX, float positionY, Game game, out Tower tower, out string errorMessage) { tower = null; errorMessage = ""; if (!IsPositionLegal(positionX, positionY)) { errorMessage = "塔與塔之間的距離太近了!"; return(false); } else if (game.Money < NextTowerCost) { errorMessage = "金錢不足!"; return(false); } else { tower = towerPerfab.Duplicate(); tower.Locate(positionX, positionY); game.Money -= NextTowerCost; towerDictionary.Add(tower.UniqueID, tower); OnBuildTowerCostChange?.Invoke(NextTowerCost); return(true);; } }