37 action_remapped(false)
51 back_text = std::make_unique<scene::text>();
69 auto select_back_callback = [&
ctx]()
139 std::string mapping_string;
143 const auto& gamepad_axis_mapping = gamepad_axis_mappings.front();
145 switch (gamepad_axis_mapping.axis)
148 if (gamepad_axis_mapping.direction)
154 mapping_string =
get_string(
ctx,
"gamepad_left_stick_right");
159 if (gamepad_axis_mapping.direction)
170 if (gamepad_axis_mapping.direction)
172 mapping_string =
get_string(
ctx,
"gamepad_right_stick_left");
176 mapping_string =
get_string(
ctx,
"gamepad_right_stick_right");
181 if (gamepad_axis_mapping.direction)
187 mapping_string =
get_string(
ctx,
"gamepad_right_stick_down");
201 const char sign = (gamepad_axis_mapping.direction) ?
'-' :
'+';
202 const std::string format_string =
get_string(
ctx,
"gamepad_axis_n_format");
203 mapping_string = std::vformat(format_string, std::make_format_args(std::to_underlying(gamepad_axis_mapping.axis),
sign));
210 const auto& gamepad_button_mapping = gamepad_button_mappings.front();
211 switch (gamepad_button_mapping.button)
242 mapping_string =
get_string(
ctx,
"gamepad_button_left_stick");
246 mapping_string =
get_string(
ctx,
"gamepad_button_right_stick");
250 mapping_string =
get_string(
ctx,
"gamepad_button_left_shoulder");
254 mapping_string =
get_string(
ctx,
"gamepad_button_right_shoulder");
262 mapping_string =
get_string(
ctx,
"gamepad_button_dpad_down");
266 mapping_string =
get_string(
ctx,
"gamepad_button_dpad_left");
270 mapping_string =
get_string(
ctx,
"gamepad_button_dpad_right");
275 const std::string format_string =
get_string(
ctx,
"gamepad_button_n_format");
276 mapping_string = std::vformat(format_string, std::make_format_args(std::to_underlying(gamepad_button_mapping.button)));
286 return mapping_string;
292 auto name_text = std::make_unique<scene::text>();
293 auto value_text = std::make_unique<scene::text>();
300 value_text->set_content(get_mapping_string(action_map, control));
303 auto input_mapped_callback = [
this, &
ctx = this->
ctx, action_map = &action_map, control = &control, value_text = value_text.get()](
const auto&
event)
307 this->action_remapped =
true;
313 action_map->add_mapping(*control,
event.mapping);
317 value_text->set_content(this->get_mapping_string(*action_map, *control));
332 auto select_callback = [
this, &
ctx = this->
ctx, action_map = &action_map, control = &control, value_text = value_text.get(), input_mapped_callback]()
341 input_mapped_callback
345 input_mapped_callback
349 input_mapped_callback
363 control_item_texts.emplace_back(std::move(name_text));
364 control_item_texts.emplace_back(std::move(value_text));
Abstract base class for game states.
std::vector< std::function< void()> > menu_left_callbacks
input::action move_up_action
input::action move_down_action
std::vector< std::function< void()> > menu_right_callbacks
hsm::state_machine< game_state > state_machine
input::action move_right_action
input::action pause_action
std::vector< std::function< void()> > menu_select_callbacks
std::filesystem::path controls_path
std::string control_profile_filename
input::action move_left_action
input::action move_forward_action
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
input::action move_back_action
std::function< void()> menu_back_callback
input::action_map movement_action_map
input::mapper input_mapper
std::unique_ptr< app::input_manager > input_manager
std::shared_ptr<::control_profile > control_profile
void update_control_profile(::game &ctx, ::control_profile &profile)
Updates a control profile after actions have been remapped.
log_message< log_message_severity::trace, Args... > log_trace
Formats and logs a trace message.
Publish-subscribe messaging.
User-defined literals for compile-time string hashing.
constexpr vector< T, N > sign(const vector< T, N > &x)
Returns a vector containing the signs of each element.
std::string get_string(const ::game &ctx, hash::fnv1a32_t key)
Returns a localized string.
32-bit FNV-1a hash value.