// TODO: Make more variations based on the sprites we have void Build(int width, int height, int ID) { for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) { //Writes the identity of wall-tiles to the main grid tile.IdTile(entity.currentPosition.X + x, entity.currentPosition.Y + y, 4); } } switch (ID) { case 0: doorPosition = new Tile.Position(entity.currentPosition.X + 2, entity.currentPosition.Y + 0); break; case 1: doorPosition = new Tile.Position(entity.currentPosition.X + 3, entity.currentPosition.Y + 4); break; case 2: doorPosition = new Tile.Position(entity.currentPosition.X + 5, entity.currentPosition.Y + 4); break; default: break; } tile.IdTile(doorPosition.X, doorPosition.Y, 5); }
void Update() { //Debug.Log(isTalking); if (coolDownTimer > 0) { coolDownTimer -= Time.deltaTime; } else if (coolDownTimer <= 0) { coolDownTimer = 0; } if (character.Direction == 0 || character.Direction == 2) { interactPosition = new Tile.Position(entity.currentPosition.X, entity.currentPosition.Y - 1 + character.Direction); //If the direction is down, the target will be below. If the direction is up, the target will be above } else { interactPosition = new Tile.Position(entity.currentPosition.X - 2 + character.Direction, entity.currentPosition.Y); //If the direction is left, the target will be left. If the direction is right, the target will be right. } interactTarget = grid.OfType(interactPosition.X, interactPosition.Y); HandleInput(); tile.IdTile(entity.currentPosition.X, entity.currentPosition.Y, 1); }
private void ChangeTower() { Tile.Position pos = target.Pos; target.DestoryTower(); TileManager.Instance.CanBuild(pos); ShopManager.Instance.OnUpdateGold(-data.Cost); TowerManager.Instance.BuildTower(pos, data.TowerType); ShopManager.Instance.InitShop(E_TowerType.BasicTower); }
public Vector3 GetTIleRealPosision(Tile.Position pos) { if (tileDic.ContainsKey(pos)) { return(tileDic[pos].transform.position); } return(Vector3.one * 999); }
public bool CanUpgrade(E_TileSize before, E_TileSize after, Tile.Position pos) { if (before == after) { return(true); } if (before == E_TileSize.Tile1 && after == E_TileSize.Tile4) { if (!tileDic[new Tile.Position(pos.x - 1, pos.y)].Built && !tileDic[new Tile.Position(pos.x + 1, pos.y)].Built && !tileDic[new Tile.Position(pos.x, pos.y - 1)].Built && !tileDic[new Tile.Position(pos.x, pos.y + 1)].Built) { return(true); } } else if (before == E_TileSize.Tile1 && after == E_TileSize.Tile9) { if (!tileDic[new Tile.Position(pos.x - 1, pos.y)].Built && !tileDic[new Tile.Position(pos.x + 1, pos.y)].Built && !tileDic[new Tile.Position(pos.x, pos.y - 1)].Built && !tileDic[new Tile.Position(pos.x, pos.y + 1)].Built && !tileDic[new Tile.Position(pos.x - 2, pos.y)].Built && !tileDic[new Tile.Position(pos.x + 2, pos.y)].Built && !tileDic[new Tile.Position(pos.x, pos.y - 2)].Built && !tileDic[new Tile.Position(pos.x, pos.y + 2)].Built && !tileDic[new Tile.Position(pos.x - 1, pos.y + 1)].Built && !tileDic[new Tile.Position(pos.x + 1, pos.y + 1)].Built && !tileDic[new Tile.Position(pos.x + 1, pos.y - 1)].Built && !tileDic[new Tile.Position(pos.x - 1, pos.y - 1)].Built) { return(true); } } else if (before == E_TileSize.Tile4 && after == E_TileSize.Tile9) { if (!tileDic[new Tile.Position(pos.x - 2, pos.y)].Built && !tileDic[new Tile.Position(pos.x + 2, pos.y)].Built && !tileDic[new Tile.Position(pos.x, pos.y - 2)].Built && !tileDic[new Tile.Position(pos.x, pos.y + 2)].Built && !tileDic[new Tile.Position(pos.x - 1, pos.y + 1)].Built && !tileDic[new Tile.Position(pos.x + 1, pos.y + 1)].Built && !tileDic[new Tile.Position(pos.x + 1, pos.y - 1)].Built && !tileDic[new Tile.Position(pos.x - 1, pos.y - 1)].Built) { return(true); } } return(false); }
private void TIleHover(Tile.Position pos, bool isHover, bool built) { if (tileDic.ContainsKey(pos)) { tileDic[pos].GoHoverActive(isHover); tileDic[pos].InitHoverColor(built); if (isHover) { hoveredTIlePosList.Add(pos); } else { hoveredTIlePosList.Remove(pos); } } }
public void BuildTower(Tile.Position pos, E_TowerType type) { Tower tower = ObjectPoolManager.Instance.GetTower(type); if (tower.Type == E_TowerType.BasicTower) { return; } if (tower.Type == E_TowerType.MainTower) { MainTower = tower; } tower.transform.parent = transform; tower.transform.localPosition = TileManager.Instance.GetTIleRealPosision(pos); tower.SetData(TowerDataManager.Instance.GetTowerBasicData(type), pos); tower.OnDestroyTower = TileManager.Instance.OnDestroyTower; tower.OnDestroyTower += (p) => { ObjectPoolManager.Instance.SetTower(tower); }; tower.SetActive(true); }
public void SetData(TowerBasicData data, Tile.Position pos) { Data = data; Hp = Data.Hp; Atk = Data.Atk; Speed = Data.Speed; Range = Data.Range; Area = Data.Area; Size = Data.Size; colliderAttack.SetData(Data); Pos = pos; if (skltAnimation != null) { skltAnimation.GetComponent <Renderer>().sortingOrder = GetSortingtOrder(Pos); } else if (spRenderer != null) { spRenderer.sortingOrder = GetSortingtOrder(Pos); } }
public void OnDestroyTower(Tile.Position pos) { switch (tileSize) { case E_TileSize.Tile1: { tileDic[pos].Built = false; } break; case E_TileSize.Tile4: { tileDic[new Tile.Position(pos.x, pos.y - 1)].Built = false; tileDic[new Tile.Position(pos.x - 1, pos.y)].Built = false; tileDic[new Tile.Position(pos.x, pos.y)].Built = false; tileDic[new Tile.Position(pos.x + 1, pos.y)].Built = false; tileDic[new Tile.Position(pos.x, pos.y + 1)].Built = false; } break; case E_TileSize.Tile9: { tileDic[new Tile.Position(pos.x, pos.y - 2)].Built = false; tileDic[new Tile.Position(pos.x - 1, pos.y - 1)].Built = false; tileDic[new Tile.Position(pos.x, pos.y - 1)].Built = false; tileDic[new Tile.Position(pos.x + 1, pos.y - 1)].Built = false; tileDic[new Tile.Position(pos.x - 2, pos.y)].Built = false; tileDic[new Tile.Position(pos.x - 1, pos.y)].Built = false; tileDic[new Tile.Position(pos.x, pos.y)].Built = false; tileDic[new Tile.Position(pos.x + 1, pos.y)].Built = false; tileDic[new Tile.Position(pos.x + 2, pos.y)].Built = false; tileDic[new Tile.Position(pos.x - 1, pos.y + 1)].Built = false; tileDic[new Tile.Position(pos.x, pos.y + 1)].Built = false; tileDic[new Tile.Position(pos.x + 1, pos.y + 1)].Built = false; tileDic[new Tile.Position(pos.x, pos.y + 2)].Built = false; } break; } }
private int GetSortingtOrder(Tile.Position pos) { return(pos.x + pos.y * 100); }
void Start() { Tile.Position pos = new Tile.Position(12, 18); TileManager.Instance.CanBuild(pos); BuildTower(pos, E_TowerType.MainTower); }
private void onHoverTile(Tile.Position pos, bool isHover) { switch (tileSize) { case E_TileSize.Tile1: { bool built = tileDic[pos].Built; TIleHover(new Tile.Position(pos.x, pos.y), isHover, built); } break; case E_TileSize.Tile4: { //System.Text.StringBuilder sb = new System.Text.StringBuilder(); //sb.AppendLine("hover"); //sb.AppendLine(string.Format("[__,__]/[{0:D2},{1:D2}]/[__,__]", pos.x, pos.y - 1)); //sb.AppendLine(string.Format("[{0:D2},{1:D2}]/[{2:D2},{3:D2}]/[{4:D2},{5:D2}]", pos.x - 1, pos.y, pos.x, pos.y, pos.x + 1, pos.y)); //sb.AppendLine(string.Format("[__,__]/[{0:D2},{1:D2}]/[__,__]", pos.x, pos.y + 1)); //Debug.Log(sb.ToString()); bool built = tileDic[new Tile.Position(pos.x, pos.y - 1)].Built || tileDic[new Tile.Position(pos.x - 1, pos.y)].Built || tileDic[new Tile.Position(pos.x, pos.y)].Built || tileDic[new Tile.Position(pos.x + 1, pos.y)].Built || tileDic[new Tile.Position(pos.x, pos.y + 1)].Built; TIleHover(new Tile.Position(pos.x, pos.y), isHover, built); } break; case E_TileSize.Tile9: { //System.Text.StringBuilder sb = new System.Text.StringBuilder(); //sb.AppendLine("hover"); //sb.AppendLine(string.Format("[__,__]/[__,__]/[{0:D2},{1:D2}]/[__,__]/[__,__]", pos.x, pos.y - 2)); //sb.AppendLine(string.Format("[__,__]/[{0:D2},{1:D2}]/[{2:D2},{3:D2}]/[{4:D2},{5:D2}]/[__,__]", pos.x - 1, pos.y - 1, pos.x, pos.y - 1, pos.x + 1, pos.y - 1)); //sb.AppendLine(string.Format("[{0:D2},{1:D2}]/[{2:D2},{3:D2}]/[{4:D2},{5:D2}]/[{6:D2},{7:D2}]/[{8:D2},{9:D2}]", pos.x - 2, pos.y, pos.x - 1, pos.y, pos.x, pos.y, pos.x + 1, pos.y, pos.x + 2, pos.y)); //sb.AppendLine(string.Format("[__,__]/[{0:D2},{1:D2}]/[{2:D2},{3:D2}]/[{4:D2},{5:D2}]/[__,__]", pos.x - 1, pos.y + 1, pos.x, pos.y + 1, pos.x + 1, pos.y + 1)); //sb.AppendLine(string.Format("[__,__]/[__,__]/[{0:D2},{1:D2}]/[__,__]/[__,__]", pos.x, pos.y + 2)); //Debug.Log(sb.ToString()); bool built = tileDic[new Tile.Position(pos.x, pos.y - 2)].Built || tileDic[new Tile.Position(pos.x - 1, pos.y - 1)].Built || tileDic[new Tile.Position(pos.x, pos.y - 1)].Built || tileDic[new Tile.Position(pos.x + 1, pos.y - 1)].Built || tileDic[new Tile.Position(pos.x - 2, pos.y)].Built || tileDic[new Tile.Position(pos.x - 1, pos.y)].Built || tileDic[new Tile.Position(pos.x, pos.y)].Built || tileDic[new Tile.Position(pos.x + 1, pos.y)].Built || tileDic[new Tile.Position(pos.x + 2, pos.y)].Built || tileDic[new Tile.Position(pos.x - 1, pos.y + 1)].Built || tileDic[new Tile.Position(pos.x, pos.y + 1)].Built || tileDic[new Tile.Position(pos.x + 1, pos.y + 1)].Built || tileDic[new Tile.Position(pos.x, pos.y + 2)].Built; TIleHover(new Tile.Position(pos.x, pos.y - 2), isHover, built); TIleHover(new Tile.Position(pos.x - 1, pos.y - 1), isHover, built); TIleHover(new Tile.Position(pos.x + 1, pos.y - 1), isHover, built); TIleHover(new Tile.Position(pos.x - 2, pos.y), isHover, built); TIleHover(new Tile.Position(pos.x, pos.y), isHover, built); TIleHover(new Tile.Position(pos.x + 2, pos.y), isHover, built); TIleHover(new Tile.Position(pos.x - 1, pos.y + 1), isHover, built); TIleHover(new Tile.Position(pos.x + 1, pos.y + 1), isHover, built); TIleHover(new Tile.Position(pos.x, pos.y + 2), isHover, built); } break; } }
public bool CanBuild(Tile.Position pos) { switch (tileSize) { case E_TileSize.Tile1: { if (!tileDic[pos].Built) { tileDic[pos].Built = true; return(true); } } break; case E_TileSize.Tile4: { //System.Text.StringBuilder sb = new System.Text.StringBuilder(); //sb.AppendLine(string.Format("[__,__]/[{0:D2},{1:D2}]/[__,__]", pos.x, pos.y - 1)); //sb.AppendLine(string.Format("[{0:D2},{1:D2}]/[{2:D2},{3:D2}]/[{4:D2},{5:D2}]", pos.x - 1, pos.y, pos.x, pos.y, pos.x + 1, pos.y)); //sb.AppendLine(string.Format("[__,__]/[{0:D2},{1:D2}]/[__,__]", pos.x, pos.y + 1)); //Debug.Log(sb.ToString()); if (!tileDic[new Tile.Position(pos.x, pos.y - 1)].Built && !tileDic[new Tile.Position(pos.x - 1, pos.y)].Built && !tileDic[new Tile.Position(pos.x, pos.y)].Built && !tileDic[new Tile.Position(pos.x + 1, pos.y)].Built && !tileDic[new Tile.Position(pos.x, pos.y + 1)].Built) { tileDic[new Tile.Position(pos.x, pos.y - 1)].Built = true; tileDic[new Tile.Position(pos.x - 1, pos.y)].Built = true; tileDic[new Tile.Position(pos.x, pos.y)].Built = true; tileDic[new Tile.Position(pos.x + 1, pos.y)].Built = true; tileDic[new Tile.Position(pos.x, pos.y + 1)].Built = true; return(true); } } break; case E_TileSize.Tile9: { //System.Text.StringBuilder sb = new System.Text.StringBuilder(); //sb.AppendLine(string.Format("[__,__]/[__,__]/[{0:D2},{1:D2}]/[__,__]/[__,__]", pos.x, pos.y - 2)); //sb.AppendLine(string.Format("[__,__]/[{0:D2},{1:D2}]/[{2:D2},{3:D2}]/[{4:D2},{5:D2}]/[__,__]", pos.x - 1, pos.y - 1, pos.x, pos.y - 1, pos.x + 1, pos.y - 1)); //sb.AppendLine(string.Format("[{0:D2},{1:D2}]/[{2:D2},{3:D2}]/[{4:D2},{5:D2}]/[{6:D2},{7:D2}]/[{8:D2},{9:D2}]", pos.x - 2, pos.y, pos.x - 1, pos.y, pos.x, pos.y, pos.x + 1, pos.y, pos.x + 2, pos.y)); //sb.AppendLine(string.Format("[__,__]/[{0:D2},{1:D2}]/[{2:D2},{3:D2}]/[{4:D2},{5:D2}]/[__,__]", pos.x - 1, pos.y + 1, pos.x, pos.y + 1, pos.x + 1, pos.y + 1)); //sb.AppendLine(string.Format("[__,__]/[__,__]/[{0:D2},{1:D2}]/[__,__]/[__,__]", pos.x, pos.y + 2)); //Debug.Log(sb.ToString()); if (!tileDic[new Tile.Position(pos.x, pos.y - 2)].Built && !tileDic[new Tile.Position(pos.x - 1, pos.y - 1)].Built && !tileDic[new Tile.Position(pos.x, pos.y - 1)].Built && !tileDic[new Tile.Position(pos.x + 1, pos.y - 1)].Built && !tileDic[new Tile.Position(pos.x - 2, pos.y)].Built && !tileDic[new Tile.Position(pos.x - 1, pos.y)].Built && !tileDic[new Tile.Position(pos.x, pos.y)].Built && !tileDic[new Tile.Position(pos.x + 1, pos.y)].Built && !tileDic[new Tile.Position(pos.x + 2, pos.y)].Built && !tileDic[new Tile.Position(pos.x - 1, pos.y + 1)].Built && !tileDic[new Tile.Position(pos.x, pos.y + 1)].Built && !tileDic[new Tile.Position(pos.x + 1, pos.y + 1)].Built && !tileDic[new Tile.Position(pos.x, pos.y + 2)].Built) { tileDic[new Tile.Position(pos.x, pos.y - 2)].Built = true; tileDic[new Tile.Position(pos.x - 1, pos.y - 1)].Built = true; tileDic[new Tile.Position(pos.x, pos.y - 1)].Built = true; tileDic[new Tile.Position(pos.x + 1, pos.y - 1)].Built = true; tileDic[new Tile.Position(pos.x - 2, pos.y)].Built = true; tileDic[new Tile.Position(pos.x - 1, pos.y)].Built = true; tileDic[new Tile.Position(pos.x, pos.y)].Built = true; tileDic[new Tile.Position(pos.x + 1, pos.y)].Built = true; tileDic[new Tile.Position(pos.x + 2, pos.y)].Built = true; tileDic[new Tile.Position(pos.x - 1, pos.y + 1)].Built = true; tileDic[new Tile.Position(pos.x, pos.y + 1)].Built = true; tileDic[new Tile.Position(pos.x + 1, pos.y + 1)].Built = true; tileDic[new Tile.Position(pos.x, pos.y + 2)].Built = true; return(true); } } break; } Debug.Log("CanBuild is false"); return(false); }