Beispiel #1
0
    public void ClickTile(MBTile tile)
    {
        MapCoordinate coordinate = tiles.Get(tile);

        switch (State)
        {
        case ControlState.DESELECTED:
            MoveCursorTo(coordinate);
            break;

        case ControlState.UNIT_MOVE:
            MoveCursorTo(coordinate);
            if (InRange(coordinate) && !IsOccupied(cursorPos))
            {
                MoveUnit(units.Get(selected), new List <MapCoordinate>()
                {
                    selected, coordinate
                });
                CloseRangeSelection();
                Deselect();
            }
            break;

        case ControlState.UNIT_ATTACK:
            if (InRange(cursorPos) && IsOccupied(cursorPos))
            {
                ClickUnit(units.Get(cursorPos));
            }
            MoveCursorTo(coordinate);
            break;

        default:
            break;
        }
    }
Beispiel #2
0
    private void MoveCursorTo(MapCoordinate coordinate)
    {
        if (InBounds(coordinate) && InRange(coordinate))
        {
            MapCoordinate oldPos = cursorPos;
            this.cursorPos       = coordinate;
            cursor.localPosition = cursorPos.Vector3 + (Vector3.up * Heights[cursorPos]);
            mbCamera.MoveTo(coordinate.Vector3);

            MBTile tile = tiles.Get(coordinate);
            if (tile != null)
            {
                tile.setSelectedColor();
                if (InRange(oldPos) && State == ControlState.UNIT_MOVE)
                {
                    tiles.Get(oldPos).setMoveRangeColor();
                }
                else
                {
                    tiles.Get(oldPos).setDefaultColor();
                }
            }
        }
    }