From f080e38244f56c102489a4b41435b4f31bbfd436 Mon Sep 17 00:00:00 2001 From: Ulysse Cura Date: Fri, 22 Aug 2025 19:11:46 +0200 Subject: [PATCH] Map conversion should work --- .vscode/settings.json | 57 ++++++++++++++- .vscode/tasks.json | 6 +- Makefile | 13 ++-- assets/maps/example.json | 34 +++------ assets/maps/map_converter.py | 60 ++++++++++------ assets/props-sheets/barred_door_sheet.png | Bin 0 -> 1029 bytes assets/props-sheets/big_chest_sheet.png | Bin 0 -> 928 bytes assets/props-sheets/fxconv-metadata.txt | 3 + assets/props-sheets/lever_sheet.png | Bin 0 -> 1004 bytes assets/props-sheets/small_chest_sheet.png | Bin 0 -> 670 bytes src/game_data/game_data.cpp | 17 ++++- src/game_data/game_data.hpp | 12 ++-- src/game_data/maps.cpp | 84 ++++++++++++++++++++++ src/game_data/maps.hpp | 25 ++++--- src/game_data/textures.cpp | 6 ++ src/game_data/textures.hpp | 19 +++-- src/main.cpp | 21 ++---- 17 files changed, 263 insertions(+), 94 deletions(-) create mode 100644 assets/props-sheets/barred_door_sheet.png create mode 100644 assets/props-sheets/big_chest_sheet.png create mode 100644 assets/props-sheets/fxconv-metadata.txt create mode 100644 assets/props-sheets/lever_sheet.png create mode 100644 assets/props-sheets/small_chest_sheet.png create mode 100644 src/game_data/maps.cpp create mode 100644 src/game_data/textures.cpp diff --git a/.vscode/settings.json b/.vscode/settings.json index 5140f25..53755ca 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -18,6 +18,61 @@ "stdexcept": "cpp", "iostream": "cpp", "ios": "cpp", - "vector2d.hpp": "c" + "vector2d.hpp": "c", + "cctype": "cpp", + "clocale": "cpp", + "cmath": "cpp", + "cstdarg": "cpp", + "cstddef": "cpp", + "cstdio": "cpp", + "cstdlib": "cpp", + "cstring": "cpp", + "ctime": "cpp", + "cwchar": "cpp", + "cwctype": "cpp", + "any": "cpp", + "array": "cpp", + "atomic": "cpp", + "bit": "cpp", + "bitset": "cpp", + "codecvt": "cpp", + "compare": "cpp", + "concepts": "cpp", + "condition_variable": "cpp", + "cstdint": "cpp", + "deque": "cpp", + "forward_list": "cpp", + "list": "cpp", + "map": "cpp", + "set": "cpp", + "unordered_map": "cpp", + "vector": "cpp", + "exception": "cpp", + "algorithm": "cpp", + "functional": "cpp", + "memory": "cpp", + "memory_resource": "cpp", + "numeric": "cpp", + "optional": "cpp", + "ratio": "cpp", + "tuple": "cpp", + "type_traits": "cpp", + "utility": "cpp", + "initializer_list": "cpp", + "limits": "cpp", + "mutex": "cpp", + "new": "cpp", + "numbers": "cpp", + "ranges": "cpp", + "semaphore": "cpp", + "span": "cpp", + "stop_token": "cpp", + "thread": "cpp", + "cfenv": "cpp", + "cinttypes": "cpp", + "typeindex": "cpp", + "typeinfo": "cpp", + "valarray": "cpp", + "variant": "cpp" } } \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 7dfce39..4be3a28 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -6,9 +6,9 @@ "detail": "Build project", "type": "shell", "command": "make", - "args": [ - "-j$(nproc)" - ], + //"args": [ + // "-j$(nproc)" + //], "group": "build", "presentation": { "echo": true, diff --git a/Makefile b/Makefile index 24ee99a..45540e3 100644 --- a/Makefile +++ b/Makefile @@ -4,14 +4,20 @@ BUILD_DIR = build # Source files SOURCES := \ src/main.cpp \ - src/game_data/game_data.cpp + src/game_data/game_data.cpp \ + src/game_data/maps.cpp \ + src/game_data/textures.cpp # Assets files ASSETS := \ + assets/tileset/tileset.png \ assets/player-sheets/player_idle_sheet.png \ assets/player-sheets/player_walk_sheet.png \ assets/player-sheets/player_run_sheet.png \ - assets/tileset/tileset.png \ + assets/props-sheets/barred_door_sheet.png \ + assets/props-sheets/lever_sheet.png \ + assets/props-sheets/small_chest_sheet.png \ + assets/props-sheets/big_chest_sheet.png \ assets/maps/example.json # Output target name @@ -19,7 +25,7 @@ OUTPUT := 2D_Engine_Casio_Tool # Compiler and flags CXX = ccache g++ -CXXFLAGS = -Wall -Wextra -std=c++17 -g -no-pie +CXXFLAGS = -Wall -Wextra -std=c++17 -O2 -no-pie INCLUDE_DIRS = 3rd_party LDFLAGS = -no-pie @@ -65,7 +71,6 @@ $(BUILD_DIR)/%.o: %.cpp $(eval CURRENT_FILE := $(shell echo $$(($(CURRENT_FILE)+1)))) $(eval PERCENTAGE := $(shell echo $$(($(CURRENT_FILE)*100/$(TOTAL_FILES))))) @echo "[$(PERCENTAGE)%] $(GREEN)Building CXX object $@$(RESET)" - $(Q)mkdir -p $(dir $@) $(Q)$(CXX) $(CXXFLAGS) $(INCLUDE_DIRS:%=-I%) -MMD -MP -c $< -o $@ # Convert .*.o from .* (png files for example) diff --git a/assets/maps/example.json b/assets/maps/example.json index 6fe0a1c..106a192 100644 --- a/assets/maps/example.json +++ b/assets/maps/example.json @@ -1,5 +1,5 @@ { - "MapWidth": 2, + "MapWidth": 3, "MapHeight": 2, "BackgroundLayer1": [ @@ -33,40 +33,28 @@ }, { "Type": "SpriteComponent", - "TextureName": "dungeon_door_sheet" + "TextureName": "barred_door_sheet" }, { "Type": "AnimationSystem", - "NbFrames": 15, - "ActualFrame": 8, + "NbFrames": 8, + "ActualFrame": 0, "FrameDelayMs": 100, "Play": false, "Loop": false, "Reverse": false - }, - { - "Type": "DoorSystem", - "States": [ - { - "Channel": 0, - "State": true - } - ] } ] }, { - "ID": 542, - "StoreInteraction": true, + "ID": 2034, "Components": [ { "Type": "TransformComponent", - "Bounds": { - "x": 256, - "y": 384, - "w": 48, - "h": 32 - }, + "x": 256, + "y": 192, + "w": 48, + "h": 32, "Speed": 0 }, { @@ -81,10 +69,6 @@ "Play": false, "Loop": false, "Reverse": false - }, - { - "Type": "LeverSystem", - "Channel": 0 } ] } diff --git a/assets/maps/map_converter.py b/assets/maps/map_converter.py index 90c80b0..5919e46 100644 --- a/assets/maps/map_converter.py +++ b/assets/maps/map_converter.py @@ -1,5 +1,5 @@ import fxconv -from fxconv import u16, u32, ref +from fxconv import u16, u32, ref, string import json def convert(input, output, params, target): @@ -13,41 +13,59 @@ def convert_map(input, output, params, target): with open(input, "r") as fp: map = json.load(fp) - w = map["MapWidth"] - h = map["MapHeight"] - - background_layer1 = bytes(map["BackgroundLayer1"]) - background_layer2 = bytes(map["BackgroundLayer2"]) - background_layer3 = bytes(map["BackgroundLayer3"]) - foreground = bytes(map["Foreground"]) + TRANSFORM_COMPONENT = 0 + SPRITE_COMPONENT = 1 + ANIMATION_SYSTEM = 2 entities = fxconv.Structure() for entity in map["Entities"]: e = fxconv.Structure() e += u16(entity["ID"]) - e += u32(entity["Components"].size()) + e += u32(len(entity["Components"])) for component in entity["Components"]: c = fxconv.Structure() + c_data = fxconv.Structure() + match component["Type"]: case "TransformComponent": - c += u32(component["x"]) - c += u32(component["y"]) - c += u32(component["w"]) - c += u32(component["h"]) - c += u32(component["Speed"]) + c += u32(TRANSFORM_COMPONENT) + c_data += u32(component["x"]) + c_data += u32(component["y"]) + c_data += u32(component["w"]) + c_data += u32(component["h"]) + c_data += u32(component["Speed"]) + + case "SpriteComponent": + c += u32(SPRITE_COMPONENT) + c_data += string(component["TextureName"]) + + case "AnimationSystem": + c += u32(SPRITE_COMPONENT) + c_data += u32(component["NbFrames"]) + c_data += u32(component["ActualFrame"]) + c_data += u32(component["FrameDelayMs"]) + c_data += u32(component["Play"]) + c_data += u32(component["Loop"]) + c_data += u32(component["Reverse"]) + case _: - raise fxconv.FxconvError(f"unknown component type {component["Type"]}") + raise fxconv.FxconvError(f"unknown component type {component['Type']}") + + c += ref(c_data) e += ref(c) + entities += e + o = fxconv.ObjectData() - o += u32(w) + u32(h) - o += ref(background_layer1) - o += ref(background_layer2) - o += ref(background_layer3) - o += ref(foreground) - o += u32(map["Entities"].size()) + o += string(params["name"]) + o += u32(map["MapWidth"]) + u32(map["MapHeight"]) + o += bytes(map["BackgroundLayer1"]) + o += bytes(map["BackgroundLayer2"]) + o += bytes(map["BackgroundLayer3"]) + o += bytes(map["Foreground"]) + o += u32(len(map["Entities"])) o += ref(entities) fxconv.elf(o, output, params["name"], **target) diff --git a/assets/props-sheets/barred_door_sheet.png b/assets/props-sheets/barred_door_sheet.png new file mode 100644 index 0000000000000000000000000000000000000000..9f51a5636325bd252b6ec577c07f746f5ab46d5f GIT binary patch literal 1029 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 literal 0 HcmV?d00001 diff --git a/src/game_data/game_data.cpp b/src/game_data/game_data.cpp index 0f29ca9..f00a16d 100644 --- a/src/game_data/game_data.cpp +++ b/src/game_data/game_data.cpp @@ -1,11 +1,22 @@ -#include +#include #include "game_data.hpp" -void load_game_data(game_data_t *game_data) +game_data_t game_data {}; + +static inline void verify_integrity(void) { + verify_textures_integrity(); + verify_maps_integrity(); } -void write_game_data_as_bin_into_file(game_data_t *game_data, std::ofstream *bin_output_file) +void write_game_data_as_bin_into_file(void) { + std::ofstream bin_output_file {"GameData.bin", std::ios::binary}; + if(!bin_output_file) + { + throw std::runtime_error("Couldn't create output file"); + } + + verify_integrity(); } diff --git a/src/game_data/game_data.hpp b/src/game_data/game_data.hpp index 080f96f..6775f2c 100644 --- a/src/game_data/game_data.hpp +++ b/src/game_data/game_data.hpp @@ -7,15 +7,13 @@ #include "maps.hpp" typedef struct game_data_t { - uint32_t nb_textures; - texture_t *textures; + const uint32_t nb_textures = NB_TEXTURES; + const texture_t *textures = textures; - uint32_t nb_maps; - map_t *maps; + const uint32_t nb_maps = NB_MAPS; + const map_t **maps = maps; } game_data_t; -void load_game_data(game_data_t *game_data); - -void write_game_data_as_bin_into_file(game_data_t *game_data, std::ofstream *bin_output_file); +void write_game_data_as_bin_into_file(void); #endif // GAME_DATA_HPP diff --git a/src/game_data/maps.cpp b/src/game_data/maps.cpp new file mode 100644 index 0000000..6c736e7 --- /dev/null +++ b/src/game_data/maps.cpp @@ -0,0 +1,84 @@ +#include + +#include "maps.hpp" + +static inline void verify_layers_integrity(void) +{ + for(uint32_t map_index = 0; map_index < NB_MAPS; map_index++) + { + std::cout << "Map " << map_index + 1 << std::endl; + } +} + +static inline void verify_entities_integrity(void) +{ + +} + +void verify_maps_integrity(void) +{ + std::cout << "Nb Maps : " << NB_MAPS << std::endl; + + for(uint32_t map_index = 0; map_index < NB_MAPS; map_index++) + { + const uint32_t NB_ENTITIES = maps[map_index]->nb_entities; + const entity_t *ENTITIES = maps[map_index]->entities; + + std::cout << "Map " << map_index + 1 << std::endl; + std::cout << " - MapName : " << maps[map_index]->map_name << std::endl; + std::cout << " - MapWidth : " << maps[map_index]->map_width << std::endl; + std::cout << " - MapHeight : " << maps[map_index]->map_width << std::endl; + std::cout << " - Nb Entities : " << NB_ENTITIES << std::endl; + + for(uint32_t entity_index = 0; entity_index < NB_ENTITIES; entity_index++) + { + const uint32_t NB_COMPONENTS = ENTITIES->nb_component; + const component_t *COMPONENTS = ENTITIES->components; + + std::cout << " - Nb Components : " << NB_COMPONENTS << std::endl; + + for(uint32_t component_index = 0; component_index < NB_COMPONENTS; component_index++) + { + const component_t *COMPONENT = &COMPONENTS[component_index]; + + std::cout << " Component " << component_index << std::endl; + + switch(COMPONENT->component_type) + { + case TRANSFORM_COMPONENT: + { + const transform_component_data_t *component_data = COMPONENT->component_data.transform_component_data; + std::cout << " - TransformComponent :" << std::endl; + std::cout << " - x : " << component_data->x << std::endl; + std::cout << " - y : " << component_data->y << std::endl; + std::cout << " - w : " << component_data->w << std::endl; + std::cout << " - h : " << component_data->h << std::endl; + std::cout << " - Speed : " << component_data->speed << std::endl; + break; + } + + case SPRITE_COMPONENT: + { + const sprite_component_data_t *component_data = COMPONENT->component_data.sprite_component_data; + std::cout << " - SpriteComponent :" << std::endl; + std::cout << " - TextureName : " << component_data->texture_name << std::endl; + break; + } + + case ANIMATION_SYSTEM: + { + const animation_system_data_t *system_data = COMPONENT->component_data.animation_system_data; + std::cout << " - AnimationSystem :" << std::endl; + std::cout << " - NbFrames : " << system_data->nb_frames; + std::cout << " - FrameNb : " << system_data->actual_frame_nb; + std::cout << " - FrameDelay : " << system_data->frame_delay_ms; + std::cout << " - Play : " << system_data->play; + std::cout << " - Loop : " << system_data->loop; + std::cout << " - Reverse : " << system_data->reverse; + break; + } + } + } + } + } +} \ No newline at end of file diff --git a/src/game_data/maps.hpp b/src/game_data/maps.hpp index c0f9460..cb85fa6 100644 --- a/src/game_data/maps.hpp +++ b/src/game_data/maps.hpp @@ -4,19 +4,19 @@ #include "ecs/ecs.hpp" typedef struct map_t { - const char *name; + const char *map_name; - uint32_t map_width; - uint32_t map_height; + const uint32_t map_width; + const uint32_t map_height; - uint16_t *map_background_layer1; - uint16_t *map_background_layer2; - uint16_t *map_background_layer3; - uint16_t *map_foreground; + const uint16_t *map_background_layer1; + const uint16_t *map_background_layer2; + const uint16_t *map_background_layer3; + const uint16_t *map_foreground; - uint32_t nb_entities; - entity_t *entities; -} map_t; + const uint32_t nb_entities; + const entity_t *entities; +} __attribute__((packed, aligned(4))) map_t; extern map_t map_example; @@ -24,6 +24,9 @@ static map_t *maps[] = { &map_example }; -#define NB_MAPS sizeof(maps) / sizeof(map_t) +#define NB_MAPS 1 + +// Throw an exception if maps integrity is not complete +void verify_maps_integrity(void); #endif // MAP_HPP \ No newline at end of file diff --git a/src/game_data/textures.cpp b/src/game_data/textures.cpp new file mode 100644 index 0000000..428866f --- /dev/null +++ b/src/game_data/textures.cpp @@ -0,0 +1,6 @@ +#include "textures.hpp" + +void verify_textures_integrity(void) +{ + return; +} \ No newline at end of file diff --git a/src/game_data/textures.hpp b/src/game_data/textures.hpp index fe5903d..195ad06 100644 --- a/src/game_data/textures.hpp +++ b/src/game_data/textures.hpp @@ -5,21 +5,32 @@ typedef struct texture_t { const char *name; - bopti_image_t *image; -} texture_t; + const bopti_image_t *image; +} __attribute__((packed, aligned(4))) texture_t; extern bopti_image_t img_tileset; extern bopti_image_t img_player_idle_sheet; extern bopti_image_t img_player_walk_sheet; extern bopti_image_t img_player_run_sheet; +extern bopti_image_t img_barred_door_sheet; +extern bopti_image_t img_lever_sheet; +extern bopti_image_t img_small_chest_sheet; +extern bopti_image_t img_big_chest_sheet; static texture_t textures[] = { {"tileset", &img_tileset}, {"player_idle_sheet", &img_player_idle_sheet}, {"player_walk_sheet", &img_player_walk_sheet}, - {"player_run_sheet", &img_player_run_sheet} + {"player_run_sheet", &img_player_run_sheet}, + {"barred_door_sheet", &img_barred_door_sheet}, + {"lever_sheet", &img_lever_sheet}, + {"small_chest_sheet", &img_small_chest_sheet}, + {"big_chest_sheet", &img_big_chest_sheet} }; -#define NB_TEXTURES sizeof(textures) / sizeof(texture_t) +#define NB_TEXTURES 8 + +// Throw an exception if textures integrity is not complete +void verify_textures_integrity(void); #endif // TEXTURE_HPP \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index 207bda4..cb32c8f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,30 +1,21 @@ #include +#include #include "game_data/game_data.hpp" void error(std::string error); -int main(int argc, char *argv[]) +int main(void) { - if(argc != 3) + try { - error("You need to give an input and output file"); - return EXIT_FAILURE; + write_game_data_as_bin_into_file(); } - - std::ofstream bin_output_file {argv[2], std::ios::binary}; - if(!bin_output_file) + catch(std::exception const &exception) { - error("Couldn't create output file"); - return EXIT_FAILURE; + error(static_cast(exception.what())); } - game_data_t game_data; - - load_game_data(&game_data); - - write_game_data_as_bin_into_file(&game_data, &bin_output_file); - return EXIT_SUCCESS; }