/* 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__