bool CheckSelectedTerrain(TerrainPosition inputSelection) { bool output = false; foreach (TerrainPosition target in selectableTargets) { if (target.posX == inputSelection.posX && target.posY == inputSelection.posY) { output = true; break; } } return(output); }
public void UseToolExecute(TerrainPosition position) { if (String.IsNullOrWhiteSpace(TerrainTools.SelectedTileKey)) return; var tileAsset = this._packageRepository.Assets.Where(x => x.Key == TerrainTools.SelectedTileKey).Single(); var tileData = this._packageRepository.GetAssetData<TerrainTileDefinitionResource>(tileAsset.Id); if (TerrainTools.SelectedTool == TerrainEditorTools.Paint) Terrain.SetTile(position, tileData); else if (TerrainTools.SelectedTool == TerrainEditorTools.Fill) Paint(position, tileData, new List<Int32>()); else if (TerrainTools.SelectedTool == TerrainEditorTools.EyeDropper) { TerrainTools.SelectedTileKey = Terrain.GetTileKey(position); TerrainTools.SelectedTool = TerrainEditorTools.Paint; } }
bool CheckOccupiedTerrain(int posX, int posY) { bool output = true; foreach (GameObject target in MapManager._Instance.terrainList) { TerrainPosition tempPosition = target.GetComponent <TerrainCubeData> ().gridPosition; if (tempPosition.posX == posX && tempPosition.posY == posY) { if (target.GetComponent <TerrainCubeData>().occupant != null) { output = false; break; } } } return(output); }
private void Paint(TerrainPosition position, TerrainTileDefinitionResource tileData, List<Int32>visitedPositions) { var initialTileKey = Terrain.GetTileKey(position); Terrain.SetTile(position, tileData); visitedPositions.Add(position.Row * Terrain.Columns + position.Column); // North if (position.Row > 0) { if (!visitedPositions.Contains((position.Row - 1) * Terrain.Columns + position.Column)) { var newPosition = new TerrainPosition() { Row = position.Row - 1, Column = position.Column }; if (Terrain.GetTileKey(newPosition) == initialTileKey) { Paint(newPosition, tileData, visitedPositions); } } } // South if (position.Row < (Terrain.Rows - 1)) { if (!visitedPositions.Contains((position.Row + 1) * Terrain.Columns + position.Column)) { var newPosition = new TerrainPosition() { Row = position.Row + 1, Column = position.Column }; if (Terrain.GetTileKey(newPosition) == initialTileKey) { Paint(newPosition, tileData, visitedPositions); } } } // West if (position.Column < (Terrain.Columns - 1)) { if (!visitedPositions.Contains(position.Row * Terrain.Columns + position.Column + 1)) { var newPosition = new TerrainPosition() { Row = position.Row, Column = position.Column + 1 }; if (Terrain.GetTileKey(newPosition) == initialTileKey) { Paint(newPosition, tileData, visitedPositions); } } } // East if (position.Column > 0) { if (!visitedPositions.Contains(position.Row * Terrain.Columns + position.Column - 1)) { var newPosition = new TerrainPosition() { Row = position.Row, Column = position.Column - 1 }; if (Terrain.GetTileKey(newPosition) == initialTileKey) { Paint(newPosition, tileData, visitedPositions); } } } }
public String GetTileKey(TerrainPosition position) { var tileAtPosition = _tiles.Where(x => x.Column == position.Column && x.Row == position.Row).FirstOrDefault(); if (tileAtPosition == null) return String.Empty; else return tileAtPosition.Key; }
public void SetTile(TerrainPosition position, TerrainTileDefinitionResource tileResource) { var tilesAtPosition = _tiles.Where(x => x.Column == position.Column && x.Row == position.Row); if (tilesAtPosition.Count() > 0) { foreach (var tile in tilesAtPosition.ToArray()) _tiles.Remove(tile); } var newTile = new Tile() { Key = tileResource.Key, Row = position.Row, Column = position.Column, Sprite = _spriteLoader.LoadSprite(tileResource.SpriteKey) }; _tiles.Add(newTile); }