|
godot-cpp-utils
A collection of utility classes, functions and macros for use with Godot and GDExtension.
|
The root of a game. More...
#include <game_root.hpp>
Public Member Functions | |
| virtual void | _enter_tree () override |
| virtual void | _ready () override |
| virtual void | _exit_tree () override |
| void | player_input_connected () |
| Instantiate a new PlayerInput. | |
| void | remove_player (uint32_t player_id) |
| Force-disconnect a player. | |
| void | remove_all_players () |
| bool | initialize_player (IPlayer *player, uint32_t id) |
| Initialize and register a player instance. | |
| void | reset_game_mode () |
| Un-set game mode. | |
| Level3D * | load_level (gd::Ref< gd::PackedScene > level) |
| shorthand for load_level(level, Transform3D()) | |
| Level3D * | load_level_at (gd::Ref< gd::PackedScene > level, gd::Transform3D at) |
| Load a level, only works if 'level' is a valid scene where the root Node can cast to 'Level3D'. | |
| void | unload_all_levels () |
| Unload all currently loaded levels. | |
| void | replace_levels (gd::Ref< gd::PackedScene > level) |
| Replace all currently loaded levels with a new level. | |
| void | register_spawn_point (SpawnPoint3D *spawn_point) |
| Register a spawnpoint for use when spawning players. | |
| void | unregister_spawn_point (SpawnPoint3D *spawn_point) |
| void | place_player_at_spawnpoint (IPlayer *player) |
| void | player_despawned (uint32_t id) |
| void | set_game_mode (gd::Ref< GameMode > prototype) |
| Override the current gamemode. | |
| GameMode * | get_game_mode () const |
| get the current active game mode. | |
| GameState * | get_game_state () const |
| Get the current active game state. | |
| gd::HashMap< gd::StringName, Level3D * > & | get_levels () |
| Returns all currently active levels. | |
| IPlayer * | get_player (uint32_t id) |
| Get the player instance associated with id. | |
| gd::Vector< IPlayer * > | get_players () |
| Get all players in a list. | |
| void | set_first_boot_level (gd::Ref< gd::PackedScene > level) |
| gd::Ref< gd::PackedScene > | get_first_boot_level () const |
| void | set_game_state_prototype (gd::Ref< GameState > game_state) |
| gd::Ref< GameState > | get_game_state_prototype () const |
Static Public Member Functions | |
| static GameRoot3D * | get_singleton () |
| get the current active singleton instance of GameRoot | |
| static bool | has_singleton () |
| returns true if there is currently a singleton active for GameRoot | |
Protected Member Functions | |
| void | grab_singleton () |
| Attempt to make 'this' the current singleton instance. | |
| void | release_singleton () |
| Attempt to stop being the active singleton instance. | |
| uint32_t | find_empty_player_slot () const |
| Find a Player Input device not yet associated with a player. | |
| IPlayer * | spawn_player (uint32_t id) |
| Spawn a player to be associated with id. | |
| void | level_unloaded (gd::StringName scene_path) |
| Callback for a level exiting the tree. | |
Static Protected Member Functions | |
| static bool | is_valid_level (gd::Ref< gd::PackedScene > &level) |
| Check if a scene is a valid level. | |
Private Member Functions | |
| GDCLASS (GameRoot3D, gd::Node) | |
Static Private Member Functions | |
| static void | _bind_methods () |
Private Attributes | |
| uint32_t | next_player_id {1} |
| Next available player ID. | |
| gd::HashMap< uint32_t, gd::Pair< PlayerInput *, IPlayer * > > | players {} |
| all players by id by input device. | |
| gd::RandomNumberGenerator | rng {} |
| Global random number generator. | |
| gd::HashMap< gd::StringName, Level3D * > | levels {} |
| all currently active levels identified by their resource paths. | |
| gd::Vector< SpawnPoint3D * > | spawn_points {} |
| all currently available spawn points. | |
| gd::Ref< GameMode > | game_mode {} |
| current active gamemode. | |
| gd::Ref< GameState > | game_state {} |
| Active game state. | |
| gd::Ref< gd::PackedScene > | first_boot_level {} |
| The level to boot into on startup. | |
| gd::Ref< GameState > | game_state_prototype {} |
| The default game state data used for game_state if no save data is available. | |
Static Private Attributes | |
| static GameRoot3D * | singleton_instance {nullptr} |
The root of a game.
A game root node that manages levels and input devices. Can be loaded at any point in a game's life, but suggested is setting this as the root of the boot scene.
| gd::HashMap< gd::StringName, Level3D * > & utils::GameRoot3D::get_levels | ( | ) |
Returns all currently active levels.
Levels are identified by their packed scene path.
| bool utils::GameRoot3D::initialize_player | ( | IPlayer * | player, |
| uint32_t | id | ||
| ) |
Initialize and register a player instance.
The player will be added to the tree and AFTER setup_player_input will be called. This way the player can initialize before setting up input
| Level3D * utils::GameRoot3D::load_level_at | ( | gd::Ref< gd::PackedScene > | level, |
| gd::Transform3D | at | ||
| ) |
Load a level, only works if 'level' is a valid scene where the root Node can cast to 'Level3D'.
| at | Sets the root node's global transform. |
| void utils::GameRoot3D::player_input_connected | ( | ) |
Instantiate a new PlayerInput.
Does not automatically spawn a new player, but does notify game mode.
|
protected |
Attempt to stop being the active singleton instance.
Only works if the current singleton is 'this'.
| void utils::GameRoot3D::remove_player | ( | uint32_t | player_id | ) |
Force-disconnect a player.
Calls queue_free on the IPlayer instance
| void utils::GameRoot3D::replace_levels | ( | gd::Ref< gd::PackedScene > | level | ) |
Replace all currently loaded levels with a new level.
Shorthand for
| void utils::GameRoot3D::reset_game_mode | ( | ) |
Un-set game mode.
Shorthand for set_game_mode(Ref<GameMode>())
| void utils::GameRoot3D::set_game_mode | ( | gd::Ref< GameMode > | prototype | ) |
Override the current gamemode.
Replaces game mode requires destroying and respawning all players
|
private |
Active game state.
Will be assigned loaded save data, or game_state_prototype if no save data is found.
|
private |
Next available player ID.
Default is 1 because 0 is the "invalid" player id.