public override void setAttackTiles(GameBoard.Tile currentTile, int distance) { if (distance > 0) { if (currentTile.UP != null) { this.setAttackTiles(currentTile.UP, distance - 1); accessibleTiles.Add(currentTile.UP); } if (currentTile.DOWN != null) { this.setAttackTiles(currentTile.DOWN, distance - 1); accessibleTiles.Add(currentTile.DOWN); } if (currentTile.RIGHT != null) { this.setAttackTiles(currentTile.RIGHT, distance - 1); accessibleTiles.Add(currentTile.RIGHT); } if (currentTile.LEFT != null) { this.setAttackTiles(currentTile.LEFT, distance - 1); accessibleTiles.Add(currentTile.LEFT); } } }
public override ArrayList AttackTile(GameBoard.Tile tile) { ArrayList unitsHit = new ArrayList(); if (tile.CurrentUnit != null) { unitsHit.Add(tile.CurrentUnit.UniqueID); //first unit in the list will receive the most healing if (level >= 3) { getLevelThreeBonusHealedUnits(tile, levelThreeBonus_Range); foreach (Unit u in levelThreeBonus_UnitList) { //u.ApplyDamage(levelThreeBonus_Heal); unitsHit.Add(u.UniqueID); } levelThreeBonus_UnitList.Clear(); } } unitsToHeal = unitsHit.Count; return(unitsHit); }
public override void moveUnit(GameBoard.Tile destination) { currentTile.CurrentUnit = null; destination.CurrentUnit = this; currentTile = destination; unfocus(); }
bool InTile(GameBoard.Tile tile) { if ((Math.Abs(transform.position.x - tile.Position.x) > 0.5) || (Math.Abs(transform.position.y - tile.Position.y) > 0.5)) { return(false); } return(true); }
public override ArrayList AttackTile(GameBoard.Tile tile) { ArrayList unitsHit = new ArrayList(); if (tile.CurrentUnit != null) { unitsHit.Add(tile.CurrentUnit.UniqueID); } return(unitsHit); }
public void getLevelThreeBonusHealedUnits(GameBoard.Tile currentTile, int distance) { if (distance > 0) { if (currentTile.UP != null) { getLevelThreeBonusHealedUnits(currentTile.UP, distance - 1); if (currentTile.UP.CurrentUnit != null && currentTile.UP.CurrentUnit.unitAllegiance == this.unitAllegiance && !levelThreeBonus_UnitList.Contains(currentTile.UP.CurrentUnit)) { levelThreeBonus_UnitList.Add(currentTile.UP.CurrentUnit); } } if (currentTile.DOWN != null) { getLevelThreeBonusHealedUnits(currentTile.DOWN, distance - 1); if (currentTile.DOWN.CurrentUnit != null && currentTile.DOWN.CurrentUnit.unitAllegiance == this.unitAllegiance && !levelThreeBonus_UnitList.Contains(currentTile.DOWN.CurrentUnit)) { levelThreeBonus_UnitList.Add(currentTile.DOWN.CurrentUnit); } } if (currentTile.RIGHT != null) { getLevelThreeBonusHealedUnits(currentTile.RIGHT, distance - 1); if (currentTile.RIGHT.CurrentUnit != null && currentTile.RIGHT.CurrentUnit.unitAllegiance == this.unitAllegiance && !levelThreeBonus_UnitList.Contains(currentTile.RIGHT.CurrentUnit)) { levelThreeBonus_UnitList.Add(currentTile.RIGHT.CurrentUnit); } } if (currentTile.LEFT != null) { getLevelThreeBonusHealedUnits(currentTile.LEFT, distance - 1); if (currentTile.LEFT.CurrentUnit != null && currentTile.LEFT.CurrentUnit.unitAllegiance == this.unitAllegiance && !levelThreeBonus_UnitList.Contains(currentTile.LEFT.CurrentUnit)) { levelThreeBonus_UnitList.Add(currentTile.LEFT.CurrentUnit); } } } }
public override ArrayList AttackTile(GameBoard.Tile tile) { ArrayList unitsHit = new ArrayList(); Unit unitHit = tile.CurrentUnit; if (unitHit != null) { unfocus(); unitFocused = unitHit; unitsHit.Add(unitHit.UniqueID); if (unitHit.unitAllegiance == unitAllegiance) { unitHit.MovementRange += movementSpeedBuff; Console.WriteLine("LOG: Unit {0} has increased Movement Range", unitHit.UniqueID); if (this.level >= 2) { unitHit.Damage += this.attackBuff; Console.WriteLine("LOG: this unit can now do {0} damage", unitHit.Damage); if (this.level >= 3) { unitHit.Armor += this.armorBuff; Console.WriteLine("LOG: this unit takes {0} less damage", unitHit.Armor); } } } else { unitHit.Paralyzed = true; Console.WriteLine("LOG: Unit {0} is paralyzed!", unitHit.UniqueID); if (this.level >= 2) { unitFocused.Armor -= this.armorDebuff; Console.WriteLine("LOG: Unit {0} has {1} armor.", unitFocused.UniqueID, unitFocused.Armor); } } focused = true; } return(unitsHit); }
public override ArrayList AttackTile(GameBoard.Tile tile) { int xDif = this.currentTile.x - tile.x; int yDif = this.currentTile.y - tile.y; ArrayList unitsHit = new ArrayList(); if (tile.CurrentUnit != null) { unitsHit.Add(tile.CurrentUnit.UniqueID); } if (this.currentTile.UP == tile) { if (tile.UP != null) { GameBoard.Tile upTile = tile.UP; if (upTile.CurrentUnit != null) { unitsHit.Add(upTile.CurrentUnit.UniqueID); } tile = upTile.RIGHT; if (tile != null && tile.CurrentUnit != null) { unitsHit.Add(tile.CurrentUnit.UniqueID); } tile = upTile.LEFT; if (tile != null && tile.CurrentUnit != null) { unitsHit.Add(tile.CurrentUnit.UniqueID); } } } else if (this.currentTile.DOWN == tile) { if (tile.DOWN != null) { GameBoard.Tile downTile = tile.DOWN; if (downTile.CurrentUnit != null) { unitsHit.Add(downTile.CurrentUnit.UniqueID); } tile = downTile.RIGHT; if (tile != null && tile.CurrentUnit != null) { unitsHit.Add(tile.CurrentUnit.UniqueID); } tile = downTile.LEFT; if (tile != null && tile.CurrentUnit != null) { unitsHit.Add(tile.CurrentUnit.UniqueID); } } } else if (this.currentTile.RIGHT == tile) { if (tile.RIGHT != null) { GameBoard.Tile rightTile = tile.RIGHT; if (rightTile.CurrentUnit != null) { unitsHit.Add(rightTile.CurrentUnit.UniqueID); } tile = rightTile.UP; if (tile != null && tile.CurrentUnit != null) { unitsHit.Add(tile.CurrentUnit.UniqueID); } tile = rightTile.DOWN; if (tile != null && tile.CurrentUnit != null) { unitsHit.Add(tile.CurrentUnit.UniqueID); } } } else if (this.currentTile.LEFT == tile) { if (tile.LEFT != null) { GameBoard.Tile leftTile = tile.LEFT; if (leftTile.CurrentUnit != null) { unitsHit.Add(leftTile.CurrentUnit.UniqueID); } tile = leftTile.UP; if (tile != null && tile.CurrentUnit != null) { unitsHit.Add(tile.CurrentUnit.UniqueID); } tile = leftTile.DOWN; if (tile != null && tile.CurrentUnit != null) { unitsHit.Add(tile.CurrentUnit.UniqueID); } } } return(unitsHit); }
public override ArrayList AttackTile(GameBoard.Tile tile) { int xDif = this.currentTile.x - tile.x; int yDif = this.currentTile.y - tile.y; GameBoard.Tile temp = this.currentTile; ArrayList unitsHit = new ArrayList(); if (xDif < 0) { for (int i = -1; i >= xDif; i--) { Console.WriteLine("i:{0} , xDif:{1}", i, xDif); temp = temp.UP; if (temp.CurrentUnit != null) { Console.WriteLine("Unit Hit: {0}", temp.CurrentUnit.UniqueID); unitsHit.Add(temp.CurrentUnit.UniqueID); if (level < 3) { return(unitsHit); } } } } else if (xDif > 0) { for (int i = 1; i <= xDif; i++) { Console.WriteLine("i:{0} , yDif:{1}", i, xDif); temp = temp.DOWN; if (temp.CurrentUnit != null) { Console.WriteLine("Unit Hit: {0}", temp.CurrentUnit.UniqueID); unitsHit.Add(temp.CurrentUnit.UniqueID); if (level < 3) { return(unitsHit); } } } } if (yDif > 0) { for (int i = 1; i <= yDif; i++) { Console.WriteLine("i:{0} , yDif:{1}", i, yDif); temp = temp.RIGHT; if (temp.CurrentUnit != null) { Console.WriteLine("Unit Hit: {0}", temp.CurrentUnit.UniqueID); unitsHit.Add(temp.CurrentUnit.UniqueID); if (level < 3) { return(unitsHit); } } } } else if (yDif < 0) { for (int i = -1; i >= yDif; i--) { Console.WriteLine("i:{0} , yDif:{1}", i, yDif); temp = temp.LEFT; if (temp.CurrentUnit != null) { Console.WriteLine("Unit Hit: {0}", temp.CurrentUnit.UniqueID); unitsHit.Add(temp.CurrentUnit.UniqueID); if (level < 3) { return(unitsHit); } } } } return(unitsHit); }
public override ArrayList AttackTile(GameBoard.Tile tile) { throw new NotImplementedException(); }
public override ArrayList AttackTile(GameBoard.Tile tile) { return(null); }
public override void setAccessibleTiles(GameBoard.Tile currentTile, int distance) { //do nothing }
public void SpawnEnemy(int wave) { List <GridSystem.Cell> entrances = GameManager.Instance.CurrentLevelManager.GameBoardSystem.GameGridSystem.MainGameGrid.Entrances; int entrance = Random.Range(0, entrances.Count); int temp = Random.Range(0, 4); if (wave == 1) { temp = 0; } if (wave == 2) { temp = 1; } if (wave == 3) { temp = 2; } if (wave == 4) { temp = 3; } if (wave % 5 == 0) { temp = Random.Range(4, 7); } List <GridSystem.Cell> path; if ((Enemy.Type)temp != Enemy.Type.Flying && (Enemy.Type)temp != Enemy.Type.BossFly) { path = GameManager.Instance.SearchPathFrom(entrances[entrance].X, entrances[entrance].Y); } else { path = GameManager.Instance.SearchFlyingPath(entrances[entrance].X, entrances[entrance].Y); } var tiles = new List <GameBoard.Tile>(); foreach (GridSystem.Cell t in path) { tiles.Add(_gameBoard.BoardTiles[t.X, t.Y]); } GridSystem.Cell startCell = entrances[0]; GameBoard.Tile startTile = tiles[0]; Vector3 spawnPosition = startTile.Position; GameObject enemeyGameObject = Instantiate(Enemies[temp], spawnPosition, Quaternion.identity) as GameObject; if (enemeyGameObject != null) { enemeyGameObject.transform.SetParent(this.transform); //Enemies.Add(enemeyGameObject); Enemy enemy = enemeyGameObject.GetComponent <Enemy>(); _enemies.Add(enemy); enemy.SetupEnemy(startCell.X, startCell.Y, tiles, path, (Enemy.Type)temp); _gameBoard.AddEnemy(enemy); } }