Example #1
0
    void Update()
    {
        inputDelay -= 1;
        if (state == SelectionState.Menu)
        {
            if (Input.GetButtonDown("Up"))
            {
                menuController.MoveMenu(false);
            }
            else if (Input.GetButtonDown("Down"))
            {
                menuController.MoveMenu(true);
            }
        }
        if (Input.GetButtonDown("Click"))
        {
            switch (state)
            {
            case SelectionState.None:
                selectedUnit = battleCursor.GetCurrentTile().GetUnit();
                if (selectedUnit != null && selectedUnit.GetReady())
                {
                    TransitionStateToMove();
                }
                break;

            case SelectionState.Move:
                if (activeTiles.Contains(battleCursor.GetCurrentTile()))
                {
                    Tile pathTile = battleCursor.GetCurrentTile();
                    while (pathTile.travelPath.travelpath != null)
                    {
                        movePath.Add(pathTile);
                        pathTile = pathTile.travelPath.travelpath;
                    }
                    movePath.Add(map.GetTileByPosition(selectedUnit.GetZ(), selectedUnit.GetX()));
                    oldLocation = map.GetTileByPosition(selectedUnit.GetZ(), selectedUnit.GetX());
                    map.MoveUnit(selectedUnit, battleCursor.GetCurrentTile(), movePath);
                    CreateMenu("Select Action");
                    TransitionStateToMenu();
                }
                else
                {
                    TransitionStateToNone();
                }
                break;

            case SelectionState.Attack:
                if (activeTiles.Contains(battleCursor.GetCurrentTile()) && battleCursor.GetCurrentTile().GetUnit() != null)
                {
                    selectedUnit.GetEquippedAttack()(battleCursor.GetCurrentTile(), map, this);
                    menuController.DeleteMenu();
                    TransitionStateToNone();
                }
                else
                {
                    //TransitionStateToNone();
                }
                break;

            case SelectionState.Menu:
                menuController.ClickMenu();
                break;
            }
        }
        else if (Input.GetButtonDown("Unclick"))
        {
            switch (state)
            {
            case SelectionState.None:
                break;

            case SelectionState.Move:
                TransitionStateToNone();
                break;

            case SelectionState.Attack:
                map.MoveUnit(selectedUnit, oldLocation, movePath);
                selectedUnit.Ready();
                TransitionStateToMove();
                break;

            case SelectionState.Menu:
                menuController.DeleteMenu();
                state = SelectionState.Attack;
                break;
            }
        }
        else if (Input.GetButton("Next") && inputDelay <= 0)
        {
            inputDelay = 15;
            Unit        nextUnit    = null;
            Unit        currentUnit = battleCursor.GetCurrentTile().GetUnit();
            List <Unit> units       = unitHandler.GetPlayerUnitsCopy();
            if (units.Count > 0)
            {
                if (currentUnit == null)
                {
                    foreach (Unit unit in units)
                    {
                        if (unit.GetReady())
                        {
                            nextUnit = unit;
                            break;
                        }
                    }
                }
                else
                {
                    int nextIndex = units.IndexOf(currentUnit) + 1;
                    if (nextIndex >= units.Count)
                    {
                        nextIndex = 0;
                    }
                    int i = units.Count;
                    while (!units[nextIndex].GetReady() && i > 0)
                    {
                        i--;
                        nextIndex++;
                        if (nextIndex >= units.Count)
                        {
                            nextIndex = 0;
                        }
                    }
                    if (nextIndex >= units.Count)
                    {
                        nextIndex = 0;
                    }
                    if (i == 0)
                    {
                        nextUnit = null;
                    }
                    else
                    {
                        nextUnit = units[nextIndex];
                    }
                }
            }
            if (nextUnit != null)
            {
                battleCursor.MoveToTile(map.GetTileByPosition(nextUnit.GetZ(), nextUnit.GetX()));
            }
        }
        else if (Input.GetButtonDown("End") && inputDelay <= 0)
        {
            turnHandler.ForceEndTurn();
        }
    }