From 033471bf25d53e525d1a98f8aed8221e00e05494 Mon Sep 17 00:00:00 2001 From: TheoryOfNekomata Date: Sat, 17 Sep 2022 13:41:24 +0800 Subject: [PATCH] Update asset management Make distinctions between internal and external (downloaded from third-party servers). --- CMakeLists.txt | 7 ++++++- .../default/weapon-hitman/1-unload-var0.mp3 | Bin .../default/weapon-hitman/1-unload-var1.mp3 | Bin .../default/weapon-hitman/1-unload-var2.mp3 | Bin .../{ => internal}/default/weapon-hitman/sprite.svg | 0 .../default/weapon-impressor/sprite.svg | 0 .../default/weapon-militant/sprite.svg | 0 .../default/weapon-operator/sprite.svg | 0 .../default/weapon-ordinator/sprite.svg | 0 .../default/weapon-paragon/1-unload-var (1).mp3 | Bin .../default/weapon-paragon/1-unload-var (2).mp3 | Bin .../default/weapon-paragon/1-unload-var (3).mp3 | Bin .../default/weapon-paragon/sprite.svg | 0 .../default/weapon-servant/sprite.svg | 0 .../default/weapon-specialist/sprite.svg | 0 .../default/weapon-tactician/sprite.svg | 0 src/packages/asset-inv/main.c | 2 +- src/packages/game/IZ_app.c | 5 ++++- src/packages/game/IZ_app.h | 3 ++- src/packages/game/IZ_app_video.c | 6 +++--- src/packages/game/data/IZ_asset.c | 11 +++++++++++ src/packages/game/data/IZ_asset.h | 8 ++++++++ 22 files changed, 35 insertions(+), 7 deletions(-) rename assets/{ => internal}/default/weapon-hitman/1-unload-var0.mp3 (100%) rename assets/{ => internal}/default/weapon-hitman/1-unload-var1.mp3 (100%) rename assets/{ => internal}/default/weapon-hitman/1-unload-var2.mp3 (100%) rename assets/{ => internal}/default/weapon-hitman/sprite.svg (100%) rename assets/{ => internal}/default/weapon-impressor/sprite.svg (100%) rename assets/{ => internal}/default/weapon-militant/sprite.svg (100%) rename assets/{ => internal}/default/weapon-operator/sprite.svg (100%) rename assets/{ => internal}/default/weapon-ordinator/sprite.svg (100%) rename assets/{ => internal}/default/weapon-paragon/1-unload-var (1).mp3 (100%) rename assets/{ => internal}/default/weapon-paragon/1-unload-var (2).mp3 (100%) rename assets/{ => internal}/default/weapon-paragon/1-unload-var (3).mp3 (100%) rename assets/{ => internal}/default/weapon-paragon/sprite.svg (100%) rename assets/{ => internal}/default/weapon-servant/sprite.svg (100%) rename assets/{ => internal}/default/weapon-specialist/sprite.svg (100%) rename assets/{ => internal}/default/weapon-tactician/sprite.svg (100%) create mode 100644 src/packages/game/data/IZ_asset.c create mode 100644 src/packages/game/data/IZ_asset.h diff --git a/CMakeLists.txt b/CMakeLists.txt index b14b504..b72e50a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -95,7 +95,7 @@ add_executable( src/packages/game/util/IZ_midi.h src/packages/net/core/IZ_websocket.h src/packages/net/core/IZ_websocket.c - src/packages/net/IZ_net_client.c src/packages/net/IZ_net_client.h src/packages/game/IZ_app_net.c src/packages/game/IZ_app_net.h src/packages/game/IZ_app_video.c src/packages/game/IZ_app_video.h src/packages/game/IZ_subsystem.h src/packages/game/IZ_app_input.c src/packages/game/IZ_app_input.h src/packages/game/IZ_app_config.c src/packages/game/IZ_app_config.h) + src/packages/net/IZ_net_client.c src/packages/net/IZ_net_client.h src/packages/game/IZ_app_net.c src/packages/game/IZ_app_net.h src/packages/game/IZ_app_video.c src/packages/game/IZ_app_video.h src/packages/game/IZ_subsystem.h src/packages/game/IZ_app_input.c src/packages/game/IZ_app_input.h src/packages/game/IZ_app_config.c src/packages/game/IZ_app_config.h src/packages/game/data/IZ_asset.c src/packages/game/data/IZ_asset.h) target_link_libraries( game @@ -299,3 +299,8 @@ add_custom_command(TARGET game POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory # which executes "cmake - E copy_if_different..." "${PROJECT_SOURCE_DIR}/assets" # <--this is in-file $/assets) # <--this is out-file path + +add_custom_command(TARGET asset-inv POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_directory # which executes "cmake - E copy_if_different..." + "${PROJECT_SOURCE_DIR}/assets" # <--this is in-file + $/assets) # <--this is out-file path diff --git a/assets/default/weapon-hitman/1-unload-var0.mp3 b/assets/internal/default/weapon-hitman/1-unload-var0.mp3 similarity index 100% rename from assets/default/weapon-hitman/1-unload-var0.mp3 rename to assets/internal/default/weapon-hitman/1-unload-var0.mp3 diff --git a/assets/default/weapon-hitman/1-unload-var1.mp3 b/assets/internal/default/weapon-hitman/1-unload-var1.mp3 similarity index 100% rename from assets/default/weapon-hitman/1-unload-var1.mp3 rename to assets/internal/default/weapon-hitman/1-unload-var1.mp3 diff --git a/assets/default/weapon-hitman/1-unload-var2.mp3 b/assets/internal/default/weapon-hitman/1-unload-var2.mp3 similarity index 100% rename from assets/default/weapon-hitman/1-unload-var2.mp3 rename to assets/internal/default/weapon-hitman/1-unload-var2.mp3 diff --git a/assets/default/weapon-hitman/sprite.svg b/assets/internal/default/weapon-hitman/sprite.svg similarity index 100% rename from assets/default/weapon-hitman/sprite.svg rename to assets/internal/default/weapon-hitman/sprite.svg diff --git a/assets/default/weapon-impressor/sprite.svg b/assets/internal/default/weapon-impressor/sprite.svg similarity index 100% rename from assets/default/weapon-impressor/sprite.svg rename to assets/internal/default/weapon-impressor/sprite.svg diff --git a/assets/default/weapon-militant/sprite.svg b/assets/internal/default/weapon-militant/sprite.svg similarity index 100% rename from assets/default/weapon-militant/sprite.svg rename to assets/internal/default/weapon-militant/sprite.svg diff --git a/assets/default/weapon-operator/sprite.svg b/assets/internal/default/weapon-operator/sprite.svg similarity index 100% rename from assets/default/weapon-operator/sprite.svg rename to assets/internal/default/weapon-operator/sprite.svg diff --git a/assets/default/weapon-ordinator/sprite.svg b/assets/internal/default/weapon-ordinator/sprite.svg similarity index 100% rename from assets/default/weapon-ordinator/sprite.svg rename to assets/internal/default/weapon-ordinator/sprite.svg diff --git a/assets/default/weapon-paragon/1-unload-var (1).mp3 b/assets/internal/default/weapon-paragon/1-unload-var (1).mp3 similarity index 100% rename from assets/default/weapon-paragon/1-unload-var (1).mp3 rename to assets/internal/default/weapon-paragon/1-unload-var (1).mp3 diff --git a/assets/default/weapon-paragon/1-unload-var (2).mp3 b/assets/internal/default/weapon-paragon/1-unload-var (2).mp3 similarity index 100% rename from assets/default/weapon-paragon/1-unload-var (2).mp3 rename to assets/internal/default/weapon-paragon/1-unload-var (2).mp3 diff --git a/assets/default/weapon-paragon/1-unload-var (3).mp3 b/assets/internal/default/weapon-paragon/1-unload-var (3).mp3 similarity index 100% rename from assets/default/weapon-paragon/1-unload-var (3).mp3 rename to assets/internal/default/weapon-paragon/1-unload-var (3).mp3 diff --git a/assets/default/weapon-paragon/sprite.svg b/assets/internal/default/weapon-paragon/sprite.svg similarity index 100% rename from assets/default/weapon-paragon/sprite.svg rename to assets/internal/default/weapon-paragon/sprite.svg diff --git a/assets/default/weapon-servant/sprite.svg b/assets/internal/default/weapon-servant/sprite.svg similarity index 100% rename from assets/default/weapon-servant/sprite.svg rename to assets/internal/default/weapon-servant/sprite.svg diff --git a/assets/default/weapon-specialist/sprite.svg b/assets/internal/default/weapon-specialist/sprite.svg similarity index 100% rename from assets/default/weapon-specialist/sprite.svg rename to assets/internal/default/weapon-specialist/sprite.svg diff --git a/assets/default/weapon-tactician/sprite.svg b/assets/internal/default/weapon-tactician/sprite.svg similarity index 100% rename from assets/default/weapon-tactician/sprite.svg rename to assets/internal/default/weapon-tactician/sprite.svg diff --git a/src/packages/asset-inv/main.c b/src/packages/asset-inv/main.c index fb4e7a2..83f46dd 100644 --- a/src/packages/asset-inv/main.c +++ b/src/packages/asset-inv/main.c @@ -122,5 +122,5 @@ i32 IZ_ReadAllAssetPacks(const char* current_dir, const char* ini_filename) { } i32 main(void) { - return IZ_ReadAllAssetPacks("assets", "assets.ini"); + return IZ_ReadAllAssetPacks("assets\\internal", "assets.ini"); } diff --git a/src/packages/game/IZ_app.c b/src/packages/game/IZ_app.c index e40cd81..ae1ccbe 100644 --- a/src/packages/game/IZ_app.c +++ b/src/packages/game/IZ_app.c @@ -118,12 +118,15 @@ IZ_AppResult IZ_AppRun(struct IZ_App* app, u8 argc, const char* argv[]) { return IZ_APP_RESULT_INITIALIZATION_ERROR; } + char asset_dir[255]; + IZ_AssetResolveDir("weapon-operator", asset_dir); u16 sprite_slot_index = IZ_VideoGetNextFreeSpriteSlot(&app->video_state); IZ_VideoLoadSprite(&app->video_state, (IZ_VideoLoadSpriteParams) { - .dir = "assets/default/weapon-servant", + .dir = asset_dir, .filename = "sprite.svg", .priority = IZ_VIDEO_SPRITE_PRIORITY_MEDIUM, }, &app->video_state.active_sprites[sprite_slot_index]); + app->video_state.active_sprites[sprite_slot_index].sprite.scale_factor = 0.25f; while (true) { app->ticks = SDL_GetTicks64(); diff --git a/src/packages/game/IZ_app.h b/src/packages/game/IZ_app.h index e733238..49ee258 100644 --- a/src/packages/game/IZ_app.h +++ b/src/packages/game/IZ_app.h @@ -3,8 +3,9 @@ #include #include -#include "IZ_app_config.h" +#include "data/IZ_asset.h" #include "memory/IZ_pool.h" +#include "IZ_app_config.h" #include "IZ_app_input.h" #include "IZ_app_net.h" #include "IZ_app_video.h" diff --git a/src/packages/game/IZ_app_video.c b/src/packages/game/IZ_app_video.c index 94a73d4..accfbbd 100644 --- a/src/packages/game/IZ_app_video.c +++ b/src/packages/game/IZ_app_video.c @@ -123,14 +123,14 @@ void IZ_VideoUpdate(IZ_VideoState* video_state) { f32 draw_width = loaded_sprite->original_width * loaded_sprite->scale_factor; f32 draw_height = loaded_sprite->original_height * loaded_sprite->scale_factor; SDL_RenderCopyExF(video_state->renderer, loaded_sprite->texture, NULL, &(SDL_FRect) { - .x = 160, - .y = 120, + .x = 100, + .y = 100, .w = draw_width, .h = draw_height, }, loaded_sprite->rotate_degrees++, &(SDL_FPoint) { .x = draw_width / 2, .y = draw_height / 2, - }, SDL_FLIP_HORIZONTAL); + }, SDL_FLIP_NONE); // our goal is to render the svg files and apply custom transforms to some SVG groups if ever. // TODO perhaps we can parse the SVG for easier transforms? diff --git a/src/packages/game/data/IZ_asset.c b/src/packages/game/data/IZ_asset.c new file mode 100644 index 0000000..ccaa5db --- /dev/null +++ b/src/packages/game/data/IZ_asset.c @@ -0,0 +1,11 @@ +#include "IZ_asset.h" + +void IZ_AssetResolveDir(const char* asset_name, char* out) { + // TODO: + // 1. Check all folders under assets/ + // 2. Check if the asset name exists under assets/internal/ + // 3. Return the directory when directory exists for assets/internal// + // 4. Return the directory when directory exists for assets/external// + // 5. Else return assets/internal/default/ + sprintf(out, "%s/%s", "assets/internal/default", asset_name); +} diff --git a/src/packages/game/data/IZ_asset.h b/src/packages/game/data/IZ_asset.h new file mode 100644 index 0000000..5a308b0 --- /dev/null +++ b/src/packages/game/data/IZ_asset.h @@ -0,0 +1,8 @@ +#ifndef IZ_ASSET_H +#define IZ_ASSET_H + +#include + +void IZ_AssetResolveDir(const char*, char*); + +#endif