diff --git a/src/engine/render/model.cpp b/src/engine/render/model.cpp index a1b653f..a306422 100644 --- a/src/engine/render/model.cpp +++ b/src/engine/render/model.cpp @@ -293,14 +293,9 @@ std::unique_ptr resource_loader::load(::resource_m // Read bones for (std::uint16_t i = 0; i < bone_count; ++i) { - // Read bone name length - std::uint8_t bone_name_length = 0; - ctx.read8(reinterpret_cast(&bone_name_length), 1); - - // Read and hash bone name - std::string bone_name(static_cast(bone_name_length), '\0'); - ctx.read8(reinterpret_cast(bone_name.data()), bone_name_length); - hash::fnv1a32_t bone_key = hash::fnv1a32(bone_name); + // Read bone key + hash::fnv1a32_t bone_key = {}; + ctx.read32(reinterpret_cast(&bone_key), 1); // Read parent bone index std::uint16_t parent_bone_index = i; diff --git a/src/game/game.cpp b/src/game/game.cpp index c54ce2c..8078711 100644 --- a/src/game/game.cpp +++ b/src/game/game.cpp @@ -1274,18 +1274,6 @@ void game::setup_loop() function_queue.pop(); } - // Update processes - std::for_each - ( - std::execution::par, - processes.begin(), - processes.end(), - [t, dt](const auto& process) - { - process.second(t, dt); - } - ); - // Advance timeline timeline->advance(dt); diff --git a/src/game/game.hpp b/src/game/game.hpp index 573648c..8441e3f 100644 --- a/src/game/game.hpp +++ b/src/game/game.hpp @@ -178,7 +178,7 @@ public: std::shared_ptr string_map; // Fonts - std::unordered_map> typefaces; + std::unordered_map> typefaces; type::bitmap_font debug_font; type::bitmap_font menu_font; type::bitmap_font title_font; @@ -232,9 +232,6 @@ public: // Queue for scheduling "next frame" function calls std::queue> function_queue; - // Parallel processes - std::unordered_map> processes; - bool mouse_look; /// Game loop @@ -305,7 +302,7 @@ public: std::vector> menu_right_callbacks; std::function menu_back_callback; std::vector> menu_item_texts; - std::unordered_map menu_item_indices; + std::unordered_map menu_item_indices; int* menu_item_index; // Scene diff --git a/src/game/menu.cpp b/src/game/menu.cpp index d19c647..7259d27 100644 --- a/src/game/menu.cpp +++ b/src/game/menu.cpp @@ -30,7 +30,7 @@ using namespace math::glsl; namespace menu { -void init_menu_item_index(::game& ctx, const std::string& menu_name) +void init_menu_item_index(::game& ctx, hash::fnv1a32_t menu_name) { if (auto it = ctx.menu_item_indices.find(menu_name); it != ctx.menu_item_indices.end()) { diff --git a/src/game/menu.hpp b/src/game/menu.hpp index 490ad40..a95bc5a 100644 --- a/src/game/menu.hpp +++ b/src/game/menu.hpp @@ -24,7 +24,7 @@ namespace menu { -void init_menu_item_index(::game& ctx, const std::string& menu_name); +void init_menu_item_index(::game& ctx, hash::fnv1a32_t menu_name); void setup_animations(::game& ctx); void clear_callbacks(::game& ctx); diff --git a/src/game/states/language-menu-state.cpp b/src/game/states/language-menu-state.cpp index dc69367..5eafa81 100644 --- a/src/game/states/language-menu-state.cpp +++ b/src/game/states/language-menu-state.cpp @@ -37,19 +37,18 @@ language_menu_state::language_menu_state(::game& ctx): { debug::log::trace("Entering language menu state..."); - /// @TODO Don't hardcode this - language_tags = + // Load language manifest + language_manifest = ctx.resource_manager->load("languages.txt"); + if (!language_manifest) { - "en", - "zh-Hans", - "zh-Hant" - }; + throw std::runtime_error("Failed to load language manifest"); + } // Determine index of current language language_index = 0; - for (std::size_t i = 0; i < language_tags.size(); ++i) + for (std::size_t i = 0; i < language_manifest->lines.size(); ++i) { - if (ctx.language_tag == language_tags[i]) + if (ctx.language_tag == language_manifest->lines[i]) { language_index = i; break; @@ -80,7 +79,7 @@ language_menu_state::language_menu_state(::game& ctx): auto change_language = [this, &ctx]() { - const std::string& language_tag = this->language_tags[this->language_index]; + const std::string& language_tag = this->language_manifest->lines[this->language_index]; // Slugify language tag std::string language_slug = language_tag; @@ -121,7 +120,7 @@ language_menu_state::language_menu_state(::game& ctx): // Construct menu item callbacks auto next_language_callback = [this, &ctx, change_language]() { - this->language_index = (this->language_index + 1) % this->language_tags.size(); + this->language_index = (this->language_index + 1) % this->language_manifest->lines.size(); change_language(); }; auto previous_language_callback = [this, &ctx, change_language]() @@ -132,7 +131,7 @@ language_menu_state::language_menu_state(::game& ctx): } else { - this->language_index = this->language_tags.size() - 1; + this->language_index = this->language_manifest->lines.size() - 1; } change_language(); diff --git a/src/game/states/language-menu-state.hpp b/src/game/states/language-menu-state.hpp index 55a7fb0..5d3bcb8 100644 --- a/src/game/states/language-menu-state.hpp +++ b/src/game/states/language-menu-state.hpp @@ -22,6 +22,7 @@ #include "game/states/game-state.hpp" #include +#include #include #include #include @@ -36,7 +37,7 @@ public: private: void update_text_content(); - std::vector language_tags; + std::shared_ptr language_manifest; std::size_t language_index; std::unique_ptr language_name_text;