20 #ifndef ANTKEEPER_GAME_HPP
21 #define ANTKEEPER_GAME_HPP
58 #include <entt/entt.hpp>
64 #include <unordered_map>
89 class simple_render_pass;
129 game(
int argc,
const char*
const* argv);
186 std::unordered_map<hash::fnv1a32_t, std::shared_ptr<type::typeface>>
typefaces;
198 std::unordered_map<hash::fnv1a32_t, input::action>
actions;
296 std::unique_ptr<debug::cli>
cli;
393 std::unordered_map<hash::fnv1a32_t, entity::id>
entities;
430 void parse_options(
int argc,
const char*
const* argv);
431 void setup_resources();
432 void load_settings();
436 void setup_rendering();
439 void setup_animation();
442 void setup_entities();
443 void setup_systems();
444 void setup_controls();
445 void setup_debugging();
448 void shutdown_audio();
Progresses a set of animations.
Calculates apparent properties of celestial bodies as seen by an observer.
Updates variables related to atmospheric scattering.
Calculates the color and luminance of blackbody radiators.
Maintains a spatially partitioned set of collision meshes.
Applies constraint stacks to transform components.
Schedules fixed- and variable-rate updates.
clock_type::duration duration_type
Duration type matches the clock's duration type.
std::shared_ptr< gl::texture_2d > shadow_map_depth_texture
std::unique_ptr< app::window_manager > window_manager
std::unique_ptr<::terrain_system > terrain_system
input::action camera_preset_3_action
input::action ant_move_fast_action
std::shared_ptr< gl::texture_2d > ldr_color_texture_a
std::shared_ptr<::event::subscription > mouse_scrolled_subscription
std::unique_ptr< animation< float > > equip_tool_animation
std::shared_ptr< gl::texture_2d > hdr_color_texture
std::unique_ptr<::constraint_system > constraint_system
std::unique_ptr< debug::cli > cli
input::action ant_move_back_action
std::shared_ptr<::event::subscription > mouse_moved_subscription
input::action camera_preset_6_action
std::unique_ptr< scene::rectangle_light > underground_rectangle_light
std::shared_ptr<::event::subscription > gamepad_button_pressed_subscription
input::action camera_preset_8_action
input::action_map window_action_map
std::shared_ptr< gl::framebuffer > hdr_framebuffer
std::unique_ptr< animation< float > > radial_transition_out
std::shared_ptr< gl::framebuffer > shadow_map_framebuffer
std::filesystem::path saves_path
std::shared_ptr<::event::subscription > window_closed_subscription
std::optional< bool > option_quick_start
input::action camera_preset_4_action
std::shared_ptr<::event::subscription > mouse_button_pressed_subscription
std::unique_ptr< scene::collection > ui_scene
std::unique_ptr< render::material_pass > surface_material_pass
std::vector< std::shared_ptr<::event::subscription > > menu_mouse_subscriptions
std::unique_ptr< animation< float > > menu_bg_fade_in_animation
std::unique_ptr<::blackbody_system > blackbody_system
std::unique_ptr< screen_transition > radial_transition_outer
std::unique_ptr< scene::directional_light > underground_directional_light
input::action camera_look_ahead_action
std::vector< std::function< void()> > menu_left_callbacks
std::shared_ptr<::event::subscription > window_resized_subscription
input::action menu_modifier_action
std::unique_ptr< scene::collection > surface_scene
std::unique_ptr< animation< float > > radial_transition_in
std::unique_ptr<::reproductive_system > reproductive_system
double gamepad_pan_sensitivity
double mouse_radians_per_pixel
input::action move_up_action
::frame_scheduler frame_scheduler
std::unique_ptr< scene::camera > ui_camera
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 ant_oviposit_action
std::shared_ptr<::event::subscription > gamepad_axis_moved_subscription
std::unique_ptr< screen_transition > radial_transition_inner
std::unique_ptr<::metamorphosis_system > metamorphosis_system
std::unique_ptr< scene::text > frame_time_text
input::action menu_left_action
std::shared_ptr< scene::camera > underground_camera
std::unique_ptr<::steering_system > steering_system
entity::id active_camera_eid
std::shared_ptr< gl::texture_2d > hdr_depth_texture
input::action menu_up_action
input::action ant_interact_action
std::unique_ptr< screen_transition > fade_transition
std::unordered_map< hash::fnv1a32_t, input::action > actions
std::unique_ptr< render::bloom_pass > bloom_pass
double gamepad_tilt_sensitivity
std::shared_ptr< render::material > menu_bg_material
std::shared_ptr< scene::camera > surface_camera
std::optional< bool > option_v_sync
input::action toggle_debug_ui_action
std::unique_ptr<::behavior_system > behavior_system
std::shared_ptr< gl::texture_2d > ldr_color_texture_b
std::shared_ptr<::event::subscription > application_quit_subscription
std::unique_ptr< render::compositor > underground_compositor
std::shared_ptr< i18n::string_map > string_map
std::unique_ptr< animator > animator
input::action_map ant_action_map
scene::collection * active_scene
input::action adjust_exposure_action
input::action pause_action
input::action ant_move_slow_action
input::action camera_preset_9_action
std::vector< std::function< void()> > menu_select_callbacks
std::vector< std::shared_ptr<::event::subscription > > event_subscriptions
std::shared_ptr< gl::framebuffer > ldr_framebuffer_a
std::unique_ptr< scene::directional_light > sun_light
type::bitmap_font menu_font
void execute()
Executes the game.
input::action camera_preset_7_action
input::action camera_save_preset_action
std::unique_ptr< scene::directional_light > moon_light
input::action menu_back_action
std::unique_ptr<::camera_system > camera_system
double gamepad_tilt_factor
input::action_map camera_action_map
std::filesystem::path screenshots_path
input::action camera_orbit_right_action
std::unique_ptr<::animation_system > animation_system
std::filesystem::path controls_path
input::action menu_select_action
std::vector< std::shared_ptr<::event::subscription > > movement_action_subscriptions
std::unique_ptr<::collision_system > collision_system
std::string control_profile_filename
std::unique_ptr< render::resample_pass > resample_pass
input::action camera_mouse_drag_action
std::vector< std::shared_ptr<::event::subscription > > menu_action_subscriptions
std::unique_ptr< scene::billboard > menu_bg_billboard
input::action camera_preset_1_action
std::shared_ptr< ecoregion > active_ecoregion
std::unique_ptr<::ik_system > ik_system
std::optional< std::string > option_data
render::anti_aliasing_method anti_aliasing_method
std::unique_ptr< render::material_pass > underground_material_pass
std::unique_ptr< render::material_pass > ui_material_pass
input::action move_left_action
input::action camera_orbit_left_action
std::shared_ptr< dict< hash::fnv1a32_t > > settings
input::action move_forward_action
input::action ant_move_right_action
std::unique_ptr<::locomotion_system > locomotion_system
double gamepad_radians_per_second
std::unique_ptr<::astronomy_system > astronomy_system
std::vector< std::tuple< scene::text *, scene::text * > > menu_item_texts
std::unique_ptr< animation< float > > menu_bg_fade_out_animation
input::action camera_preset_5_action
input::action fullscreen_action
std::unique_ptr<::render_system > render_system
std::unique_ptr< resource_manager > resource_manager
std::unique_ptr< render::sky_pass > sky_pass
std::filesystem::path data_package_path
std::shared_ptr< app::window > window
input::action screenshot_action
std::filesystem::path mods_path
std::queue< std::function< void()> > function_queue
std::unique_ptr< render::final_pass > common_final_pass
std::optional< bool > option_reset
input::action camera_mouse_look_action
std::unique_ptr< timeline > timeline
input::action adjust_time_action
double gamepad_pan_factor
double mouse_pan_sensitivity
std::optional< bool > option_fullscreen
std::unordered_map< hash::fnv1a32_t, int > menu_item_indices
std::unique_ptr<::spatial_system > spatial_system
std::unique_ptr<::metabolic_system > metabolic_system
std::optional< bool > option_windowed
input::action_map menu_action_map
std::shared_ptr< render::matvar_fvec3 > fade_transition_color
input::action camera_mouse_pick_action
input::action ant_move_forward_action
input::action camera_preset_10_action
type::bitmap_font title_font
std::shared_ptr< render::material > debug_font_material
input::action camera_orbit_up_action
std::optional< bool > option_new_game
std::unique_ptr< render::compositor > ui_compositor
input::action camera_preset_2_action
type::bitmap_font debug_font
std::unique_ptr<::physics_system > physics_system
std::unique_ptr< render::renderer > renderer
std::unique_ptr< render::compositor > surface_compositor
std::unique_ptr<::subterrain_system > subterrain_system
std::shared_ptr< render::material > menu_font_material
entity::id controlled_ant_eid
std::filesystem::path local_config_path
std::unique_ptr<::atmosphere_system > atmosphere_system
input::action menu_down_action
input::action camera_orbit_down_action
int shadow_map_resolution
input::action move_slow_action
std::unordered_map< hash::fnv1a32_t, std::shared_ptr< type::typeface > > typefaces
std::unique_ptr< entity::registry > entity_registry
input::action move_back_action
std::shared_ptr< render::material > title_font_material
input::action move_fast_action
std::unique_ptr< scene::collection > underground_scene
std::unique_ptr<::orbit_system > orbit_system
std::unique_ptr< animation< float > > menu_fade_animation
std::function< void()> menu_back_callback
input::action camera_zoom_in_action
std::unique_ptr< animation< float > > unequip_tool_animation
input::action menu_right_action
~game()
Boots down the game.
double mouse_tilt_sensitivity
std::optional< bool > option_continue
math::ivec2 render_resolution
input::action ant_move_left_action
input::action_map movement_action_map
input::mapper input_mapper
std::unique_ptr< app::input_manager > input_manager
std::unordered_map< hash::fnv1a32_t, entity::id > entities
game(int argc, const char *const *argv)
Boots up the game.
std::function< void()> resume_callback
std::shared_ptr<::control_profile > control_profile
input::action camera_mouse_zoom_action
std::filesystem::path shared_config_path
input::action_map debug_action_map
input::action camera_zoom_out_action
math::moving_average< float > average_frame_duration
std::shared_ptr< gl::framebuffer > ldr_framebuffer_b
Updates the Cartesian position and velocity of orbiting bodies given their Keplerian orbital elements...
Manages the loading, caching, and saving of resources.
Collection of scene objects.
Encapsulates a shader-based animated screen transition.
Generates terrain patches and performs terrain patch LOD selection.
Timeline which executes cues (scheduled functions) when advanced over their respective positions in t...
Raster font in which glyphs are stored as arrays of pixels.
Debugging functions and classes.
entt::entity id
Entity ID type.
std::stack< std::unique_ptr< T > > state_machine
Stack-based hierarchical state machine.
constexpr T radians(T degrees) noexcept
Converts an angle given in degrees to radians.
anti_aliasing_method
Anti-aliasing methods.