From 084ae1b47481743873fe3f65ba5c97c7b4ce3e06 Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Sun, 12 Dec 2021 16:07:27 +0100 Subject: use selector to choose correct tower tile A selector string contains all 4 directions: [left, right, up, down] in that order. --- assets/tiles/gate_lr.png | Bin 0 -> 10783 bytes assets/tiles/gate_wall_h.png | Bin 10783 -> 0 bytes assets/tiles/tower_in_wall.png | Bin 13521 -> 0 bytes assets/tiles/tower_l.png | Bin 0 -> 11718 bytes assets/tiles/tower_left_wall.png | Bin 11718 -> 0 bytes assets/tiles/tower_lr.png | Bin 0 -> 13521 bytes assets/tiles/tower_lru.png | Bin 0 -> 14131 bytes assets/tiles/tower_lu.png | Bin 0 -> 13315 bytes assets/tiles/tower_r.png | Bin 0 -> 12801 bytes assets/tiles/tower_right_wall.png | Bin 12801 -> 0 bytes assets/tiles/tower_ru.png | Bin 0 -> 13352 bytes assets/tiles/wall_h.png | Bin 7655 -> 0 bytes assets/tiles/wall_lr.png | Bin 0 -> 7655 bytes scripts/generate_map_img.py | 40 +++++++++++++++++++++++++------------- 14 files changed, 26 insertions(+), 14 deletions(-) create mode 100644 assets/tiles/gate_lr.png delete mode 100644 assets/tiles/gate_wall_h.png delete mode 100644 assets/tiles/tower_in_wall.png create mode 100644 assets/tiles/tower_l.png delete mode 100644 assets/tiles/tower_left_wall.png create mode 100644 assets/tiles/tower_lr.png create mode 100644 assets/tiles/tower_lru.png create mode 100644 assets/tiles/tower_lu.png create mode 100644 assets/tiles/tower_r.png delete mode 100644 assets/tiles/tower_right_wall.png create mode 100644 assets/tiles/tower_ru.png delete mode 100644 assets/tiles/wall_h.png create mode 100644 assets/tiles/wall_lr.png diff --git a/assets/tiles/gate_lr.png b/assets/tiles/gate_lr.png new file mode 100644 index 00000000..95c2b3e3 Binary files /dev/null and b/assets/tiles/gate_lr.png differ diff --git a/assets/tiles/gate_wall_h.png b/assets/tiles/gate_wall_h.png deleted file mode 100644 index 95c2b3e3..00000000 Binary files a/assets/tiles/gate_wall_h.png and /dev/null differ diff --git a/assets/tiles/tower_in_wall.png b/assets/tiles/tower_in_wall.png deleted file mode 100644 index e3d9cc85..00000000 Binary files a/assets/tiles/tower_in_wall.png and /dev/null differ diff --git a/assets/tiles/tower_l.png b/assets/tiles/tower_l.png new file mode 100644 index 00000000..2a86b655 Binary files /dev/null and b/assets/tiles/tower_l.png differ diff --git a/assets/tiles/tower_left_wall.png b/assets/tiles/tower_left_wall.png deleted file mode 100644 index 2a86b655..00000000 Binary files a/assets/tiles/tower_left_wall.png and /dev/null differ diff --git a/assets/tiles/tower_lr.png b/assets/tiles/tower_lr.png new file mode 100644 index 00000000..e3d9cc85 Binary files /dev/null and b/assets/tiles/tower_lr.png differ diff --git a/assets/tiles/tower_lru.png b/assets/tiles/tower_lru.png new file mode 100644 index 00000000..c8d86f98 Binary files /dev/null and b/assets/tiles/tower_lru.png differ diff --git a/assets/tiles/tower_lu.png b/assets/tiles/tower_lu.png new file mode 100644 index 00000000..37196cc0 Binary files /dev/null and b/assets/tiles/tower_lu.png differ diff --git a/assets/tiles/tower_r.png b/assets/tiles/tower_r.png new file mode 100644 index 00000000..27683590 Binary files /dev/null and b/assets/tiles/tower_r.png differ diff --git a/assets/tiles/tower_right_wall.png b/assets/tiles/tower_right_wall.png deleted file mode 100644 index 27683590..00000000 Binary files a/assets/tiles/tower_right_wall.png and /dev/null differ diff --git a/assets/tiles/tower_ru.png b/assets/tiles/tower_ru.png new file mode 100644 index 00000000..65cf5ccc Binary files /dev/null and b/assets/tiles/tower_ru.png differ diff --git a/assets/tiles/wall_h.png b/assets/tiles/wall_h.png deleted file mode 100644 index 3d49ffcb..00000000 Binary files a/assets/tiles/wall_h.png and /dev/null differ diff --git a/assets/tiles/wall_lr.png b/assets/tiles/wall_lr.png new file mode 100644 index 00000000..3d49ffcb Binary files /dev/null and b/assets/tiles/wall_lr.png differ diff --git a/scripts/generate_map_img.py b/scripts/generate_map_img.py index a2bdf434..b8b1e225 100755 --- a/scripts/generate_map_img.py +++ b/scripts/generate_map_img.py @@ -16,6 +16,8 @@ SHOW_MAP = False Row = Sequence[str] Tiles = Sequence[Row] +FORTIFICATIONS = ['tower', 'gate', 'wall'] + def get_tile_path(tile: str) -> pathlib.Path: """Return the corresponding image file name for a tile""" @@ -117,7 +119,7 @@ def find_wall_tile(tiles: Sequence[Sequence[str]], x: int, y: int): left, right, above, below = is_connected_to(tiles, x, y, - kind=['wall', 'tower', 'gate']) + kind=FORTIFICATIONS) connections = count_connections(left, right, above, below) @@ -137,7 +139,7 @@ def find_wall_tile(tiles: Sequence[Sequence[str]], x: int, y: int): elif connections == 1 or (connections == 2 and ((left and right) or (above and below))): if above or below: - tile_img = cv2.imread(str(get_tile_path('wall_h'))) + tile_img = cv2.imread(str(get_tile_path('wall_lr'))) else: tile_img = cv2.imread(str(get_tile_path('wall'))) @@ -163,7 +165,7 @@ def find_gate_tile(tiles: Sequence[Sequence[str]], x: int, y: int): left, right, above, below = is_connected_to(tiles, x, y, - kind=['wall', 'tower']) + kind=FORTIFICATIONS) connections = count_connections(left, right, above, below) @@ -175,7 +177,7 @@ def find_gate_tile(tiles: Sequence[Sequence[str]], x: int, y: int): return cv2.imread(str(get_tile_path('gate'))) if left or right: - return cv2.imread(str(get_tile_path('gate_wall_h'))) + return cv2.imread(str(get_tile_path('gate_lr'))) return cv2.imread(str(get_tile_path('gate'))) @@ -185,7 +187,7 @@ def find_tower_tile(tiles: Sequence[Sequence[str]], x: int, y: int): left, right, above, below = is_connected_to(tiles, x, y, - kind=['wall', 'gate']) + kind=FORTIFICATIONS) connections = count_connections(left, right, above, below) @@ -193,18 +195,28 @@ def find_tower_tile(tiles: Sequence[Sequence[str]], x: int, y: int): if connections == 0: return cv2.imread(str(get_tile_path('tower'))) - if left and (not right and not is_right_edge(tiles, x, y)): - return cv2.imread(str(get_tile_path('tower_left_wall'))) + # generate connection selector + selector = '' + if left: + selector += 'l' + + if right: + selector += 'r' + + if above: + selector += 'u' - if right and (not left and not is_left_edge(tiles, x)): - return cv2.imread(str(get_tile_path('tower_right_wall'))) + # corner cases where tower is placed on the edge + if selector and 'r' not in selector and is_right_edge(tiles, x, y): + selector += 'r' - # We reach this if either right and left are connected or - # one side is connected and this tile is on the edge - if right or left: - return cv2.imread(str(get_tile_path('tower_in_wall'))) + if selector and 'l' not in selector and is_left_edge(tiles, x): + selector += 'l' - return cv2.imread(str(get_tile_path('tower'))) + tile_name = 'tower' + if selector: + tile_name = f'{tile_name}_{selector}' + return cv2.imread(str(get_tile_path(tile_name))) TILE_SELECTORS = { -- cgit v1.2.3