diff options
Diffstat (limited to 'src/game/base/ship.h')
-rw-r--r-- | src/game/base/ship.h | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/src/game/base/ship.h b/src/game/base/ship.h new file mode 100644 index 0000000..d3c8bbf --- /dev/null +++ b/src/game/base/ship.h @@ -0,0 +1,60 @@ +/* + base/ship.h + This file is part of the Osirion project and is distributed under + the terms and conditions of the GNU General Public License version 2 +*/ + +#ifndef __INCLUDED_BASE_SHIP_H__ +#define __INCLUDED_BASE_SHIP_H__ + +#include "core/player.h" +#include "core/entity.h" +#include "base/shipmodel.h" +#include "base/jumppoint.h" +#include "math/vector3f.h" + +namespace base { + +/// A ship in the game, controled by a player +class Ship : public core::EntityControlable +{ +public: + Ship(core::Player *owner, ShipModel *shipmodel); + ~Ship(); + + /// update the ship state + virtual void frame(float seconds); + + /// true if the ship is equiped with a jumpdrive + inline bool jumpdrive() const { return ship_jumpdrive; } + + /// toggle jump drive activation + void jump(std::string const & args); + + /// toggle impulse drive activation + void impulse(); + + /// void reset drive controls + void reset(); + +private: + ShipModel *ship_shipmodel; + + float current_target_direction; + float current_target_pitch; + float current_target_roll; + float current_target_strafe; + float current_target_afterburner; + + bool ship_jumpdrive; + float ship_jumpdrive_timer; + + float ship_impulsedrive_timer; + + JumpPoint * find_closest_jumppoint(); +}; + +} + +#endif // __INCLUDED_BASE_SHIP_H__ + |