Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2008-09-28 15:05:13 +0000
committerStijn Buys <ingar@osirion.org>2008-09-28 15:05:13 +0000
commitfd778219e40c5fbb4d0af1839cbc313caaf10d9d (patch)
treeb6e413f4c1a5ba4091503ba97c784278485d3933 /src/game/base/ship.h
parentbedcff956d253621ec00aa7d2919c22a4c88b0b2 (diff)
move base game module to new subdirectory
Diffstat (limited to 'src/game/base/ship.h')
-rw-r--r--src/game/base/ship.h60
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__
+