From 973495b6870ff8d93e603918118c81835bc53261 Mon Sep 17 00:00:00 2001 From: "Zed A. Shaw" Date: Thu, 17 Jul 2025 12:59:20 -0400 Subject: [PATCH] Map now has a color theme rather than random colors. --- assets/map_tiles.png | Bin 9795 -> 9176 bytes assets/palette.json | 53 +++++++++++++++++++++++++++---------------- assets/tiles.json | 7 ++++-- tools/icongen.cpp | 23 ++++++++----------- 4 files changed, 48 insertions(+), 35 deletions(-) diff --git a/assets/map_tiles.png b/assets/map_tiles.png index 33cd57b0ec2f1a1add812108a90afeaee2d4ba4f..5cb4c96f6675270338311e915eba174ef6da2722 100644 GIT binary patch literal 9176 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 SOO61Le~#-n+TXOLMg0e48~Q2$ literal 9795 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 m|MCXMz8pQ<;Qs>cjWI|7 diff --git a/assets/palette.json b/assets/palette.json index 1f132f6..b61f138 100644 --- a/assets/palette.json +++ b/assets/palette.json @@ -1,6 +1,7 @@ { "color": { - "transparent": [255, 255, 255, 255] + "transparent": [255, 255, 255, 255], + "BAD": [255, 0, 0] }, "gui/theme": { "black": [0, 0, 0, 255], @@ -18,34 +19,46 @@ "border_color": "gui/theme:dark_dark", "bg_color_dark": "gui/theme:black" }, + "map/theme": { + "black": [0, 0, 0, 255], + "dark_dark": [10, 10, 10, 255], + "dark_mid": [30, 30, 30, 255], + "dark_light": [60, 60, 60, 255], + "mid": [100, 100, 100, 255], + "light_dark": [150, 150, 150, 255], + "light_mid": [200, 200, 200, 255], + "light_light": [230, 230, 230, 255], + "white": [255, 255, 255, 255] + }, "items/fg": { - "flame": [24, 120, 189], - "potion": [255, 205, 189] + "flame": "map/theme:white", + "potion": "map/theme:white" }, "enemies/fg": { - "player": [255, 200, 125], - "gold_savior": [131, 213, 238], - "knight": [131, 213, 238], - "axe_ranger": [156, 172, 197], - "rat_giant": [205, 164, 246], - "spider_giant": [205, 164, 246] + "player": "map/theme:white", + "gold_savior": "map/theme:white", + "knight": "map/theme:white", + "axe_ranger": "map/theme:white", + "rat_giant": "map/theme:white", + "spider_giant": "map/theme:white" }, "tiles/fg": { - "floor_tile": [40, 40, 40], - "wall_plain": [100, 100, 100], - "wall_moss": [100, 150, 100], - "ceiling_black": [100, 100, 100], + "floor_tile": "map/theme:mid", + "wall_plain": "map/theme:dark_mid", + "wall_moss": "map/theme:dark_light", + "ceiling_black": "color:transparent", "lava_floor": [200, 100, 100], "gray_stone_floor_light": [40, 60, 180], - "wood_wall": [70, 70, 70], - "BAD": [255, 0, 0] + "wood_wall": "map/theme:dark_mid" }, "tiles/bg": { - "wall_plain": [10, 10, 10], - "wall_moss": [100, 100, 180], - "lava_floor": [100, 100, 50], - "gray_stone_floor_light": [80, 80, 80], - "wood_wall": [100, 100, 100] + "floor_tile": "map/theme:dark_dark", + "wall_plain": "map/theme:dark_dark", + "wall_moss": "map/theme:light_dark", + "ceiling_black": "color:transparent", + "lava_floor": "map/theme:dark_dark", + "gray_stone_floor_light": "map/theme:dark_mid", + "wood_wall": "map/theme:dark_dark" }, "devices/fg": { "stairs_down": [24, 205, 189], diff --git a/assets/tiles.json b/assets/tiles.json index b3908e9..49fbee7 100644 --- a/assets/tiles.json +++ b/assets/tiles.json @@ -6,6 +6,7 @@ "ceiling": "ceiling_black", "light": 0, "foreground": "tiles/fg:floor_tile", + "background": "tiles/bg:floor_tile", "id": 0 }, "wall_plain": { @@ -22,8 +23,8 @@ "collision": true, "display": 9256, "light": 20, - "background": "tiles/bg:wall_moss", "foreground": "tiles/fg:wall_moss", + "background": "tiles/bg:wall_moss", "id": 2 }, "ceiling_black": { @@ -32,6 +33,7 @@ "display": 35, "light": 0, "foreground": "tiles/fg:ceiling_black", + "background": "tiles/bg:ceiling_black", "id": 4 }, "lava_floor": { @@ -68,7 +70,8 @@ "collision": false, "display": 8285, "light": 0, - "foreground": "tiles/fg:BAD", + "foreground": "color:BAD", + "background": "color:BAD", "id": 7 } } diff --git a/tools/icongen.cpp b/tools/icongen.cpp index 63d2759..8fa53cb 100644 --- a/tools/icongen.cpp +++ b/tools/icongen.cpp @@ -217,20 +217,17 @@ void load_config(MapConfig& config, bool is_centered, std::string path, std::fun fmt::format("duplicate color for display={} key={}", (int)display, (std::string)key)); - if(data.contains("foreground")) { - auto fg = palette::get(data["foreground"]); - config.colors.insert_or_assign(display, fg); - } else { - config.colors.insert_or_assign(display, DEFAULT_COLOR); - } + dbc::check(data.contains("foreground"), + fmt::format("{} has no foreground", std::string(key))); - if(data.contains("background")) { - auto bg = palette::get(data["background"]); - config.backgrounds.insert_or_assign(display, bg); - } else { - sf::Color bg{0, 0, 0, 0}; - config.backgrounds.insert_or_assign(display, bg); - } + auto fg = palette::get(data["foreground"]); + config.colors.insert_or_assign(display, fg); + + dbc::check(data.contains("background"), + fmt::format("{} has no background", std::string(key))); + + auto bg = palette::get(data["background"]); + config.backgrounds.insert_or_assign(display, bg); } }