/// <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); } }
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); }