public override IEnumerator executeTurn() { BattleCommand curCommand = pickAttack(); if (curCommand == null)//can't attack { selectedTile = pickRandomMoveTile(); if (selectedTile == null) { curCommand = waitCommand; } else { curCommand = moveCommand; } } List <Tile> possibleTargetTiles = new List <Tile>(); curCommand.rangePattern.selectTargets(targeter.grid.tiles, possibleTargetTiles, this, curTile.x, curTile.y); for (int i = possibleTargetTiles.Count - 1; i >= 0; i--) { if (curCommand.isValidTargetTile(this, possibleTargetTiles[i])) { possibleTargetTiles[i].setTileState(TileState.range); } } //Debug.Log("selected " + selectedTile.gameObject); yield return(new WaitForSeconds(.5f)); foreach (var possibleTargetTile in possibleTargetTiles) { possibleTargetTile.setTileState(TileState.normal); } chosenCommand.init(curCommand, this, selectedTile); possibleTargetTiles.Clear(); possibleTargetTiles.Add(selectedTile); chosenCommand.command.damagePattern.selectTargets(targeter.grid.tiles, possibleTargetTiles, this, selectedTile.x, selectedTile.y); foreach (var possibleTargetTile in possibleTargetTiles) { possibleTargetTile.setTileState(TileState.target); //Debug.Log("target" + possibleTargetTile.gameObject); } yield return(StartCoroutine(chosenCommand.command.playFX(possibleTargetTiles))); yield return(StartCoroutine(curCommand.execute(chosenCommand.user, chosenCommand.target))); foreach (var possibleTargetTile in possibleTargetTiles) { possibleTargetTile.setTileState(TileState.normal); } yield return(new WaitForSeconds(.1f)); stats.increaseStrain(chosenCommand.command.strainBoost); delay = chosenCommand.command.calcDelay(this); }
public void chooseTurn(BattleCommand command) { chosenCommand.init(command, this, null); Debug.Log(chosenCommand.command.title + "selected by " + chosenCommand.user.title); }