38 lines
861 B
C++
38 lines
861 B
C++
#ifndef WEAPON_INVENTORY_H
|
|
#define WEAPON_INVENTORY_H
|
|
|
|
#include "scene/main/node.h"
|
|
#include "scene/resources/packed_scene.h"
|
|
class PlayerBody;
|
|
class WeaponBase;
|
|
|
|
class WeaponInventory : public Node {
|
|
GDCLASS(WeaponInventory, Node);
|
|
static void _bind_methods();
|
|
void on_switch_input();
|
|
void stow_current_weapon();
|
|
void ready();
|
|
|
|
protected:
|
|
void _notification(int what);
|
|
|
|
public:
|
|
void select_weapon(WeaponBase *next);
|
|
WeaponBase *get_current_weapon() const;
|
|
|
|
void pickup_weapon(Ref<PackedScene> weapon_scene);
|
|
|
|
void set_starting_weapon(Ref<PackedScene> weapon_scene);
|
|
Ref<PackedScene> get_starting_weapon() const;
|
|
|
|
private:
|
|
Node3D *weapon_parent{ nullptr };
|
|
unsigned current{ 0 };
|
|
LocalVector<WeaponBase *> weapons{ nullptr, nullptr };
|
|
WeaponBase *current_weapon{ nullptr };
|
|
|
|
Ref<PackedScene> starting_weapon{};
|
|
};
|
|
|
|
#endif // !WEAPON_INVENTORY_H
|