Exemplo n.º 1
0
    /// <summary>
    /// Called initially from an action manager. Activates the tile to be viable for selection, then pings adjacent tiles if available.
    /// </summary>
    public void checkValidTiles(int constraint, Material tempDisplay, MapTraits.TileMoveCheck direction)
    {
        myDirection = direction;
        if (constraint < 1 || myCheck == MapTraits.TileCheck.Checked)
        {
            return;
        }
        setTempDisplay(tempDisplay);
        setTileCheck(MapTraits.TileCheck.Checked);
        setTileValid(MapTraits.ValidTile.Valid);
        int[] newPos  = newPosition(getPosition(), MapTraits.TileMoveCheck.North);
        Tile  request = myTileMap.getTile(newPos);

        if (request != null)
        {
            request.checkValidTiles(constraint - 1, tempDisplay, MapTraits.TileMoveCheck.North);
        }
        int[] newPos1  = newPosition(getPosition(), MapTraits.TileMoveCheck.East);
        Tile  request1 = myTileMap.getTile(newPos1);

        if (request1 != null)
        {
            request1.checkValidTiles(constraint - 1, tempDisplay, MapTraits.TileMoveCheck.East);
        }
        int[] newPos2  = newPosition(getPosition(), MapTraits.TileMoveCheck.South);
        Tile  request2 = myTileMap.getTile(newPos2);

        if (request2 != null)
        {
            request2.checkValidTiles(constraint - 1, tempDisplay, MapTraits.TileMoveCheck.South);
        }
        int[] newPos3  = newPosition(getPosition(), MapTraits.TileMoveCheck.West);
        Tile  request3 = myTileMap.getTile(newPos3);

        if (request3 != null)
        {
            request3.checkValidTiles(constraint - 1, tempDisplay, MapTraits.TileMoveCheck.West);
        }
    }
Exemplo n.º 2
0
    private int[] newPosition(int[] oldPosition, MapTraits.TileMoveCheck direction)
    {
        int[] newPos   = new int[3];
        int[] position = getPosition();
        switch (direction)
        {
        case MapTraits.TileMoveCheck.North:
            int north = position[0] + 1;
            newPos[0] = north;
            newPos[1] = position[1];
            newPos[2] = position[2];
            break;

        case MapTraits.TileMoveCheck.South:
            int south = position[0] - 1;
            newPos[0] = south;
            newPos[1] = position[1];
            newPos[2] = position[2];
            break;

        case MapTraits.TileMoveCheck.East:
            int east = position[1] + 1;
            newPos[0] = position[0];
            newPos[1] = east;
            newPos[2] = position[2];
            break;

        case MapTraits.TileMoveCheck.West:
            int west = position[1] - 1;
            newPos[0] = position[0];
            newPos[1] = west;
            newPos[2] = position[2];
            break;
        }
        return(newPos);
    }