42 if (!language_manifest)
44 throw std::runtime_error(
"Failed to load language manifest");
49 for (std::size_t i = 0; i < language_manifest->lines.size(); ++i)
59 language_name_text = std::make_unique<scene::text>();
60 language_value_text = std::make_unique<scene::text>();
61 back_text = std::make_unique<scene::text>();
68 update_text_content();
79 auto change_language = [
this, &
ctx]()
81 const std::string& language_tag = this->language_manifest->lines[this->language_index];
84 std::string language_slug = language_tag;
87 language_slug.begin(),
89 language_slug.begin(),
92 return std::tolower(c);
113 this->update_text_content();
119 auto next_language_callback = [
this, &
ctx, change_language]()
121 this->language_index = (this->language_index + 1) % this->language_manifest->lines.size();
124 auto previous_language_callback = [
this, &
ctx, change_language]()
126 if (this->language_index > 0)
128 --this->language_index;
132 this->language_index = this->language_manifest->lines.size() - 1;
137 auto select_back_callback = [&
ctx]()
198 void language_menu_state::update_text_content()
203 language_name->set_content(
get_string(
ctx,
"language_menu_language"));
204 language_value->set_content(
get_string(
ctx,
"language_name_native"));
Abstract base class for game states.
std::vector< std::function< void()> > menu_left_callbacks
std::vector< std::function< void()> > menu_right_callbacks
hsm::state_machine< game_state > state_machine
std::shared_ptr< i18n::string_map > string_map
std::vector< std::function< void()> > menu_select_callbacks
std::shared_ptr< dict< hash::fnv1a32_t > > settings
std::vector< std::tuple< scene::text *, scene::text * > > menu_item_texts
std::unique_ptr< resource_manager > resource_manager
std::queue< std::function< void()> > function_queue
std::function< void()> menu_back_callback
void load_fonts(::game &ctx)
log_message< log_message_severity::trace, Args... > log_trace
Formats and logs a trace message.
User-defined literals for compile-time string hashing.
std::unordered_map< hash::fnv1a32_t, std::string > string_map
Maps 32-bit keys to strings.
std::string get_string(const ::game &ctx, hash::fnv1a32_t key)
Returns a localized string.
Self-formatting message that logs itself to the default logger on construction.