40 mappings.emplace(
"fullscreen", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::f11, 0,
false));
44 mappings.emplace(
"screenshot", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::f12, 0,
false));
48 mappings.emplace(
"menu_up", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::up, 0,
true));
49 mappings.emplace(
"menu_up", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::w, 0,
true));
50 mappings.emplace(
"menu_up", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::i, 0,
true));
56 mappings.emplace(
"menu_down", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::down, 0,
true));
57 mappings.emplace(
"menu_down", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::s, 0,
true));
58 mappings.emplace(
"menu_down", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::k, 0,
true));
64 mappings.emplace(
"menu_left", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::left, 0,
true));
65 mappings.emplace(
"menu_left", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::a, 0,
true));
66 mappings.emplace(
"menu_left", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::j, 0,
true));
74 mappings.emplace(
"menu_right", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::right, 0,
true));
75 mappings.emplace(
"menu_right", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::d, 0,
true));
76 mappings.emplace(
"menu_right", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::l, 0,
true));
84 mappings.emplace(
"menu_select", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::enter, 0,
false));
85 mappings.emplace(
"menu_select", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::space, 0,
false));
86 mappings.emplace(
"menu_select", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::e, 0,
false));
90 mappings.emplace(
"menu_back", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::escape, 0,
false));
92 mappings.emplace(
"menu_back", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::q, 0,
false));
101 mappings.emplace(
"move_forward", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::w, 0,
false));
105 mappings.emplace(
"move_back", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::s, 0,
false));
109 mappings.emplace(
"move_left", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::a, 0,
false));
113 mappings.emplace(
"move_right", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::d, 0,
false));
125 mappings.emplace(
"interact", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::e, 0,
false));
135 mappings.emplace(
"camera_mouse_pick", std::make_unique<input::mouse_button_mapping>(
nullptr,
input::mouse_button::left));
144 mappings.emplace(
"camera_mouse_zoom", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::z, 0,
false));
149 mappings.emplace(
"camera_orbit_left", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::left, 0,
false));
151 mappings.emplace(
"camera_orbit_right", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::right, 0,
false));
153 mappings.emplace(
"camera_orbit_up", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::up, 0,
false));
155 mappings.emplace(
"camera_orbit_down", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::up, 0,
false));
163 mappings.emplace(
"camera_preset_1", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::digit_1, 0,
false));
164 mappings.emplace(
"camera_preset_2", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::digit_2, 0,
false));
165 mappings.emplace(
"camera_preset_3", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::digit_3, 0,
false));
166 mappings.emplace(
"camera_preset_4", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::digit_4, 0,
false));
167 mappings.emplace(
"camera_preset_5", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::digit_5, 0,
false));
168 mappings.emplace(
"camera_preset_6", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::digit_6, 0,
false));
169 mappings.emplace(
"camera_preset_7", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::digit_7, 0,
false));
170 mappings.emplace(
"camera_preset_8", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::digit_8, 0,
false));
171 mappings.emplace(
"camera_preset_9", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::digit_9, 0,
false));
172 mappings.emplace(
"camera_preset_10", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::digit_0, 0,
false));
184 mappings.emplace(
"toggle_debug", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::grave, 0,
false));
187 mappings.emplace(
"adjust_exposure", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::b, 0,
false));
190 mappings.emplace(
"adjust_time", std::make_unique<input::key_mapping>(
nullptr,
input::scancode::t, 0,
false));
197 auto range = profile.mappings.equal_range(key);
198 for (
auto i = range.first; i != range.second; ++i)
200 map.add_mapping(action, *i->second);
277 auto gamepad_axis_mappings =
map.get_gamepad_axis_mappings(action);
278 auto gamepad_button_mappings =
map.get_gamepad_button_mappings(action);
279 auto key_mappings =
map.get_key_mappings(action);
280 auto mouse_button_mappings =
map.get_mouse_button_mappings(action);
281 auto mouse_motion_mappings =
map.get_mouse_motion_mappings(action);
282 auto mouse_scroll_mappings =
map.get_mouse_scroll_mappings(action);
284 for (
const auto& mapping: gamepad_axis_mappings)
286 profile.
mappings.emplace(key, std::make_unique<input::gamepad_axis_mapping>(mapping));
288 for (
const auto& mapping: gamepad_button_mappings)
290 profile.
mappings.emplace(key, std::make_unique<input::gamepad_button_mapping>(mapping));
292 for (
const auto& mapping: key_mappings)
294 profile.
mappings.emplace(key, std::make_unique<input::key_mapping>(mapping));
296 for (
const auto& mapping: mouse_button_mappings)
298 profile.
mappings.emplace(key, std::make_unique<input::mouse_button_mapping>(mapping));
300 for (
const auto& mapping: mouse_motion_mappings)
302 profile.
mappings.emplace(key, std::make_unique<input::mouse_motion_mapping>(mapping));
304 for (
const auto& mapping: mouse_scroll_mappings)
306 profile.
mappings.emplace(key, std::make_unique<input::mouse_scroll_mapping>(mapping));
383 [&ctx](
const auto&
event)
385 if (!ctx.resume_callback)
388 ctx.function_queue.push
393 ::disable_game_controls(ctx);
396 ctx.state_machine.emplace(std::make_unique<pause_menu_state>(ctx));
401 ctx.resume_callback = [&ctx]()
403 enable_game_controls(ctx);
404 ctx.resume_callback = nullptr;
input::action camera_preset_3_action
input::action ant_move_fast_action
input::action ant_move_back_action
input::action camera_preset_6_action
input::action camera_preset_8_action
input::action_map window_action_map
input::action camera_preset_4_action
input::action camera_look_ahead_action
input::action menu_modifier_action
input::action move_up_action
input::action move_down_action
input::action move_right_action
input::action ant_oviposit_action
input::action menu_left_action
input::action menu_up_action
input::action ant_interact_action
input::action toggle_debug_ui_action
input::action_map ant_action_map
input::action adjust_exposure_action
input::action pause_action
input::action ant_move_slow_action
input::action camera_preset_9_action
input::action camera_preset_7_action
input::action camera_save_preset_action
input::action menu_back_action
input::action_map camera_action_map
input::action camera_orbit_right_action
input::action menu_select_action
std::vector< std::shared_ptr<::event::subscription > > movement_action_subscriptions
input::action camera_mouse_drag_action
input::action camera_preset_1_action
input::action move_left_action
input::action camera_orbit_left_action
input::action move_forward_action
input::action ant_move_right_action
input::action camera_preset_5_action
input::action fullscreen_action
input::action screenshot_action
input::action camera_mouse_look_action
input::action adjust_time_action
input::action_map menu_action_map
input::action camera_mouse_pick_action
input::action ant_move_forward_action
input::action camera_preset_10_action
input::action camera_orbit_up_action
input::action camera_preset_2_action
input::action menu_down_action
input::action camera_orbit_down_action
input::action move_slow_action
input::action move_back_action
input::action move_fast_action
input::action camera_zoom_in_action
input::action menu_right_action
input::action ant_move_left_action
input::action_map movement_action_map
input::action camera_mouse_zoom_action
input::action_map debug_action_map
input::action camera_zoom_out_action
void update_control_profile(::game &ctx, ::control_profile &profile)
Updates a control profile after actions have been remapped.
void apply_control_profile(::game &ctx, const ::control_profile &profile)
Applies a control profile to the game context.
void setup_game_controls(::game &ctx)
void reset_control_profile(::control_profile &profile)
Resets a control profile to default settings.
void enable_game_controls(::game &ctx)
void disable_game_controls(::game &ctx)
Publish-subscribe messaging.
constexpr T map(T x, T from_min, T from_max, T to_min, T to_max) noexcept
Remaps a number from one range to another.
dict< hash::fnv1a32_t > settings
Profile-specific settings.
std::multimap< hash::fnv1a32_t, std::unique_ptr< input::mapping > > mappings
Input mappings.
32-bit FNV-1a hash value.