Rally Rush
Loading...
Searching...
No Matches
drone.hpp
Go to the documentation of this file.
1#ifndef DRONE_HPP
2#define DRONE_HPP
3
4#include "car_player.hpp"
5#include "godot_cpp/classes/animation_player.hpp"
6#include "godot_cpp/classes/navigation_agent3d.hpp"
7#include "godot_cpp/classes/packed_scene.hpp"
8#include <godot_cpp/classes/node3d.hpp>
9
10namespace godot {
12enum class DroneState {
14 CHASE,
16 DROP,
18 FLEE
19};
20
22class Drone : public Node3D {
23 GDCLASS(Drone, Node3D);
25 static void _bind_methods();
26public:
28 virtual void _ready() override;
30 virtual void _process(double delta_time) override;
32 void process_chase(double delta_time);
34 void process_flee(double delta_time);
36 void process_navigate(double delta_time);
40 void spawn_explosion();
42 void key_found(int total);
43
45 void start_flee();
47 void end_flee();
48
50 void set_explosion_scene(Ref<PackedScene> scene);
52 Ref<PackedScene> get_explosion_scene() const;
53private:
57 int next_recalc{10};
59 float speed{30.f};
61 float lead_time{2.f};
63 float target_distance{3.f};
67 CarPlayer *player{nullptr};
69 Ref<PackedScene> explosion_scene{};
70
72 NavigationAgent3D *agent{nullptr};
74 AnimationPlayer *anim{nullptr};
75};
76}
77
78#endif // !DRONE_HPP
Sandboxed subclass of CarPhysics.
Definition car_player.hpp:18
An enemy drone, moves around using navigation. Model is expected to float well above the transform or...
Definition drone.hpp:22
NavigationAgent3D * agent
Navigation agent Component.
Definition drone.hpp:72
AnimationPlayer * anim
Animation player component.
Definition drone.hpp:74
float speed
Movement speed in m/s.
Definition drone.hpp:59
static void _bind_methods()
Register properties.
Definition drone.cpp:11
virtual void _process(double delta_time) override
Update the state machine.
Definition drone.cpp:27
float target_distance
distance at which to drop
Definition drone.hpp:63
Ref< PackedScene > explosion_scene
Scene to spawn when exploding.
Definition drone.hpp:69
void end_flee()
Listener for when the player drop their turret pickup.
Definition drone.cpp:94
void spawn_explosion()
Spawn an explosion after dropping.
Definition drone.cpp:74
void process_navigate(double delta_time)
Navigate according to path.
Definition drone.cpp:54
float lead_time
How far ahead of the player to target.
Definition drone.hpp:61
int next_recalc
Frame timer for next pathing recalculation.
Definition drone.hpp:57
Ref< PackedScene > get_explosion_scene() const
The explosion to spawn after dropping.
Definition drone.cpp:103
int recalc_frame_interval
Time between pathing recalculations.
Definition drone.hpp:55
void recalculate_navigation()
Recalculate pathing based on current state.
Definition drone.cpp:64
void process_flee(double delta_time)
Flee state, Flee away from the player.
Definition drone.cpp:50
CarPlayer * player
Target to chase / flee from.
Definition drone.hpp:67
void start_flee()
Listener for when the player grabs a turret pickup.
Definition drone.cpp:88
GDCLASS(Drone, Node3D)
void process_chase(double delta_time)
Process the chase state. Navigate ahead of player player and drop when near target.
Definition drone.cpp:42
DroneState state
Current state machine state.
Definition drone.hpp:65
virtual void _ready() override
Get required object references and connect observers.
Definition drone.cpp:16
void key_found(int total)
Listener for when a key is found, to up the difficulty.
Definition drone.cpp:82
void set_explosion_scene(Ref< PackedScene > scene)
The explosion to spawn after dropping.
Definition drone.cpp:100
Definition beacon_powerup.cpp:6
DroneState
State of a drone.
Definition drone.hpp:12
@ CHASE
Chase the player.
@ DROP
Stop, drop, and explode.
@ FLEE
Go anywhere but where the player is.