#ifndef RALLY_RUSH_GAME_MODE_HPP
#define RALLY_RUSH_GAME_MODE_HPP

#include "utils/game_mode.hpp"

namespace godot {
//! Game mode for Rally Rush. Mainly serves as a scorekeeper and patchbay for Observers. Inherits from GameMode so it can be referenced by a level and managed by the GameRoot3D.
class RallyRushGameMode : public GameMode {
    GDCLASS(RallyRushGameMode, GameMode);
    //! Register signals
    static void _bind_methods();
public:
    //! returns the number of keys picked up so far.
    int get_num_found_keys();
    //! Emit the "key_found" signal.
    void notify_key_found();
    //! Emit the "player_death" signal.
    void notify_player_death();
    //! Emit the "player_escaped" signal.
    void notify_player_escaped();
    //! Emit the "turret_pickup" signal.
    void notify_turret_pickup();
    //! Emit the "turret_pickup_end" signal.
    void notify_end_turret_pickup();
    //! Emit the "shield_pickup" signal.
    void notify_shield_pickup();
    //! Emit the "shield_pickup_end" signal.
    void notify_end_shield_pickup();
private:
    //! The number of keys picked up so far.
    int num_keys_found{0};
};
}

#endif // !RALLY_RUSH_GAME_MODE_HPP
