示例#1
0
    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);
    }
示例#2
0
 public void chooseTurn(BattleCommand command)
 {
     chosenCommand.init(command, this, null);
     Debug.Log(chosenCommand.command.title + "selected by " + chosenCommand.user.title);
 }