public void ToggleMoveableTileUI() { moveableTileUI.SetActive(!moveableTileUI.activeSelf); moveableTileEditStage = moveableTileUI.activeSelf ? MoveableTileEditStage.PlaceStart : MoveableTileEditStage.None; moveableTileStartText.text = "Start pos: Selecting"; moveableTileEndText.text = "End pos: Selecting"; moveableTileError.SetActive(false); }
public void Place(Vector3 location, bool buttonDown) { int x = (int)location.x; int y = (int)location.z; if (moveableTileEditStage == MoveableTileEditStage.PlaceStart && buttonDown) { if (!level.TileExistsAt(x, y)) { SetMoveableTileError("A tile must exist at a moveable tile start position"); return; } if (level.tiles[x, y].moveableTile) { SetMoveableTileError($"The tile at {new Vector2(x, y)} is already moveable to position {level.tiles[x, y].tileMoveTo}"); return; } moveableTileStart = new Vector2(x, y); moveableTileStartText.text = $"Start pos: {moveableTileStart}"; moveableTileEditStage = MoveableTileEditStage.PlaceEnd; return; } else if (moveableTileEditStage == MoveableTileEditStage.PlaceEnd && buttonDown) { if (level.TileExistsAt(x, y)) { SetMoveableTileError("A tile must not exist at a moveable tile end positon"); return; } moveableTileEnd = new Vector2(x, y); if (!MoveableTilePathValid()) { return; } Debug.Log($"Marked tile at {new Vector2((int)moveableTileStart.x, (int)moveableTileStart.y)} as moveable to location {new Vector2(x, y)}"); level.SetTileMoveable((int)moveableTileStart.x, (int)moveableTileStart.y, x, y); moveableTileEditStage = MoveableTileEditStage.None; ToggleMoveableTileUI(); return; } if (moveableTileEditStage != MoveableTileEditStage.None) { return; } if (tilePalette.selectedItemType == ItemType.None) { return; } if (level.ItemExistsAt(x, y)) { return; } if (tilePalette.selectedItemType == ItemType.Tile) { if (tilePalette.selectedTile == null) { return; } else { PlaceTile(location); } } else { if (tilePalette.selectedEntity == null) { return; } else { PlaceEntity(location); } } }