public void SetDoors(MapTilemaps tilemaps, int x, int y, Vector3Int center, RoomSizeInfo roomSizeInfo, RoomType[,] mapRoomMatrix) { if (x > 0 && mapRoomMatrix[x - 1, y] != RoomType.None) { SetDoor(tilemaps, x - 1, y, x, y, center - new Vector3Int(roomSizeInfo.roomWidth / 2, 0, 0), DoorController.DoorType.Horizontal); } if (x < _map.Width - 1 && mapRoomMatrix[x + 1, y] != RoomType.None) { SetDoor(tilemaps, x, y, x + 1, y, center + new Vector3Int(roomSizeInfo.roomWidth / 2, 0, 0), DoorController.DoorType.Horizontal); } if (y > 0 && mapRoomMatrix[x, y - 1] != RoomType.None) { SetDoor(tilemaps, x, y - 1, x, y, center - new Vector3Int(0, roomSizeInfo.roomHeight / 2, 0), DoorController.DoorType.Vertical); } if (y < _map.Height - 1 && mapRoomMatrix[x, y + 1] != RoomType.None) { SetDoor(tilemaps, x, y, x, y + 1, center + new Vector3Int(0, roomSizeInfo.roomHeight / 2, 0), DoorController.DoorType.Vertical); } }
private void SetDoor(MapTilemaps tilemaps, int x1, int y1, int x2, int y2, Vector3Int pos, DoorController.DoorType type) { tilemaps.WallTilemap.SetTile(pos, null); tilemaps.ShadowTilemap.SetTile(pos, null); PlaceDoor(tilemaps, type, pos, x1, y1, x2, y2); }
public Vector3Int GetPathToNextDoor(RoomEntity from, RoomEntity to, MapTilemaps mapTilemaps, DoorDir dir) { var nextDoorPos = GetNextDoorPos(from, to, mapTilemaps, dir, out var length); PlaceCorridor(nextDoorPos, length, mapTilemaps, dir); return(Vector3Int.zero); }
private void PlaceCorridor(Vector3Int from, int length, MapTilemaps mapTilemaps , DoorDir dir) { var moveDir = dir.GetMoveDir(); var pos = from; for (var i = 0; i < length; i++) { pos += moveDir; PlaceBlock(pos, moveDir, mapTilemaps); } }
private void PlaceDoor(MapTilemaps tilemaps, DoorController.DoorType doorType, Vector3Int pos, int x1, int y1, int x2, int y2) { if (HasDoor(x1, y1, x2, y2)) { return; } //tilemaps.FloorTilemap.SetTile(pos, _mapSettingsData.GetDoorTile()); // var doorGo = new GameObject($"HorizontalDoor[{GetDoorID(x1, y1, x2, y2)}]"); // doorGo.transform.SetParent(_mapHolder); // doorGo.transform.localPosition = pos + Vector3.one * 0.5f; // var door = doorGo.AddComponent<DoorController>(); // var doorTrigger = doorGo.AddComponent<BoxCollider2D>(); // doorTrigger.isTrigger = true; //var doorGO = tilemaps.FloorTilemap.GetInstantiatedObject(pos); var doorGO = Object.Instantiate(tilemaps.DoorPrefab, _mapHolder); doorGO.name = $"HorizontalDoor[{GetDoorID(x1, y1, x2, y2)}]"; doorGO.transform.localPosition = pos; if (doorGO == null) { Debug.Log(pos + " = DOOR GO IS NULL"); return; } var door = doorGO.GetComponent <DoorController>(); if (door == null) { Debug.Log("DOOR CONTROLLER IS NULL"); return; } var firstRoomController = _roomControllersMatrix[x1, y1]; var secondRoomController = _roomControllersMatrix[x2, y2]; door.Initialize(doorType, firstRoomController, secondRoomController); door.Toggle(true); firstRoomController.FloorTiles.Add(pos); secondRoomController.FloorTiles.Add(pos); _doorsIDs.Add(GetDoorID(x1, y1, x2, y2), true); }
public override void _Ready() { Tilemaps = new MapTilemaps() { Environment = GetNode <TileMap>("EnvironmentMap"), Highlights = GetNode <TileMap>("HighlightMap") }; Tilesets = new MapTilesets() { Environment = Tilemaps.Environment.TileSet, Highlights = Tilemaps.Highlights.TileSet }; Board = new GameBoard(this); PathFinder = new PathFinder(); debugLabel = GetNode <Label>("Debug/DebugText"); Global.ActiveMap = this; // TODO decouple this AddChild(PathFinder); }
private Vector3Int GetNextDoorPos(RoomEntity from, RoomEntity to, MapTilemaps mapTilemaps, DoorDir dir , out int length) { length = MIN_LENGTH; var fromDoor = SelectDoor(dir, from); var moveDir = dir.GetMoveDir(); var offset = moveDir * MIN_LENGTH; var pos = fromDoor + offset; var roomPos = fromDoor; while (DoCornersHasTile(pos, from.Template.width, from.Template.height, mapTilemaps.TypeTilemap)) { pos += moveDir; length++; } return(pos); }
private void PlaceVerticalBlock(Vector3Int pos, MapTilemaps mapTilemaps) { mapTilemaps[TileType.Floor].SetTile(pos, mapSettingsData.GetTile(TileType.Floor)); mapTilemaps[TileType.Wall].SetTile(pos + Vector3Int.left, mapSettingsData.GetTile(TileType.Wall)); mapTilemaps[TileType.Wall].SetTile(pos + Vector3Int.right, mapSettingsData.GetTile(TileType.Wall)); }
private void PlaceHorizontalBlock(Vector3Int pos, MapTilemaps mapTilemaps) { mapTilemaps[TileType.Floor].SetTile(pos, mapSettingsData.GetTile(TileType.Floor)); mapTilemaps[TileType.Wall].SetTile(pos + Vector3Int.down, mapSettingsData.GetTile(TileType.Wall)); mapTilemaps[TileType.Wall].SetTile(pos + Vector3Int.up, mapSettingsData.GetTile(TileType.Wall)); }
private void PlaceBlock(Vector3Int pos, Vector3Int moveDir, MapTilemaps mapTilemaps) { mapTilemaps[TileType.Floor].SetTile(pos, mapSettingsData.GetTile(TileType.Floor)); mapTilemaps[TileType.Wall].SetTile(pos + new Vector3Int(moveDir.y, moveDir.x, moveDir.z), mapSettingsData.GetTile(TileType.Wall)); mapTilemaps[TileType.Wall].SetTile(pos - new Vector3Int(moveDir.y, moveDir.x, moveDir.z), mapSettingsData.GetTile(TileType.Wall)); }