Pioneer
Loading...
Searching...
No Matches
Ship.h
Go to the documentation of this file.
1// Copyright © 2008-2024 Pioneer Developers. See AUTHORS.txt for details
2// Licensed under the terms of the GPL v3. See licenses/GPL-3.txt
3
4#ifndef _SHIP_H
5#define _SHIP_H
6
7#include <unordered_map>
8
9#include "DynamicBody.h"
10#include "ShipType.h"
11#include "galaxy/SystemPath.h"
12#include "lua/LuaRef.h"
14#include "sound/Sound.h"
15
16#include "FixedGuns.h"
17#include "ship/Propulsion.h"
18
19class AICommand;
20class Camera;
21class CargoBody;
22class SpaceStation;
23class HyperspaceCloud;
24class Missile;
25class NavLights;
26class Planet;
27class Sensors;
28class ShipController;
29class Space;
30
31struct CollisionContact;
33
34namespace Graphics {
35 class Renderer;
36}
37
42 int static_mass; // cargo, equipment + hull
43 float hull_mass_left; // effectively hitpoints
49
50 // cached equipment information to avoid costly Lua lookups
56};
57
59 std::string jump_sound;
60 std::string warmup_sound;
61 std::string abort_sound;
62};
63
64class Ship : public DynamicBody {
65 friend class ShipController; //only controllers need access to AITimeStep
67
68public:
70 Ship() = delete;
71 Ship(const Json &jsonObj, Space *space);
72 Ship(const ShipType::Id &shipId);
73 virtual ~Ship();
74
75 virtual void SetFrame(FrameId fId) override;
76
77 void SetController(ShipController *c); //deletes existing
79
80 virtual void SetDockedWith(SpaceStation *, int port);
83 int GetDockingPort() const { return m_dockedWithPort; }
84 bool IsDocked() const { return GetFlightState() == Ship::DOCKED; }
85 bool IsLanded() const { return GetFlightState() == Ship::LANDED; }
86
87 virtual void SetLandedOn(Planet *p, float latitude, float longitude);
88
89 virtual void Render(Graphics::Renderer *r, const Camera *camera, const vector3d &viewCoords, const matrix4x4d &viewTransform) override;
90
91 inline void ClearThrusterState()
92 {
95 }
96 void UpdateLuaStats();
97 void UpdateEquipStats();
98 void UpdateFuelStats();
99 void UpdateGunsStats();
100 const shipstats_t &GetStats() const { return m_stats; }
101
102 void Explode();
103 virtual bool DoDamage(float kgDamage); // can be overloaded in Player to add audio
104 void SetGunState(int idx, int state);
105 void UpdateMass();
106 virtual bool SetWheelState(bool down); // returns success of state change, NOT state itself
107 virtual bool ManualDocking() const { return false; }
108 void Blastoff();
109 bool Undock();
110 virtual void TimeStepUpdate(const float timeStep) override;
111 virtual void StaticUpdate(const float timeStep) override;
112
113 void TimeAccelAdjust(const float timeStep);
114
115 bool IsDecelerating() const { return m_decelerating; }
116
117 virtual void NotifyRemoved(const Body *const removedBody) override;
118 virtual bool OnCollision(Body *o, Uint32 flags, double relVel) override;
119 virtual bool OnDamage(Body *attacker, float kgDamage, const CollisionContact &contactData) override;
120
121 enum FlightState { // <enum scope='Ship' name=ShipFlightState public>
122 FLYING, // open flight (includes autopilot)
123 DOCKING, // in docking animation
124 UNDOCKING, // in docking animation
125 DOCKED, // docked with station
126 LANDED, // rough landed (not docked)
127 JUMPING, // between space and hyperspace ;)
128 HYPERSPACE, // in hyperspace
129 };
130
131 // vector3d CalcAtmoPassiveControl() const;
132 vector3d CalcAtmoTorque() const;
133
134 FlightState GetFlightState() const { return m_flightState; }
136 float GetWheelState() const { return m_wheelState; }
137 int GetWheelTransition() const { return m_wheelTransition; }
138 bool SpawnCargo(CargoBody *c_body) const;
139
140 LuaRef GetEquipSet() const { return m_equipSet; }
141
142 virtual bool IsInSpace() const override { return (m_flightState != HYPERSPACE); }
143
144 void SetHyperspaceDest(const SystemPath &dest) { m_hyperspace.dest = dest; }
146 double GetHyperspaceDuration() const { return m_hyperspace.duration; }
147 double GetECMRechargeRemain() const { return m_ecmRecharge; }
148
149 enum HyperjumpStatus { // <enum scope='Ship' name=ShipJumpStatus prefix=HYPERJUMP_ public>
158 };
159
161 virtual Ship::HyperjumpStatus InitiateHyperjumpTo(const SystemPath &dest, int warmup_time, double duration, const HyperdriveSoundsTable &sounds, LuaRef checks);
162 virtual void AbortHyperjump();
164 bool IsHyperspaceActive() const { return (m_hyperspace.countdown > 0.0); }
165
166 // 0 to 1.0 is alive, > 1.0 = death
167 double GetHullTemperature() const;
168
173 };
174
176
177 virtual Missile *SpawnMissile(ShipType::Id missile_type, int power = -1);
178
179 enum AlertState { // <enum scope='Ship' name=ShipAlertStatus prefix=ALERT_ public>
184 };
185 AlertState GetAlertState() { return m_alertState; }
186
187 void AIClearInstructions(); // Note: defined in Ship-AI.cpp
188 bool AIIsActive() const { return m_curAICmd ? true : false; }
189 void AIGetStatusText(char *str); // Note: defined in Ship-AI.cpp
190
191 void AIKamikaze(Body *target); // Note: defined in Ship-AI.cpp
192 void AIKill(Ship *target); // Note: defined in Ship-AI.cpp
193 //void AIJourney(SystemBodyPath &dest);
194 void AIDock(SpaceStation *target); // Note: defined in Ship-AI.cpp
195 void AIFlyTo(Body *target); // Note: defined in Ship-AI.cpp
196 void AIOrbit(Body *target, double alt); // Note: defined in Ship-AI.cpp
197 void AIHoldPosition(); // Note: defined in Ship-AI.cpp
198
199 void AIBodyDeleted(const Body *const body){}; // Note: defined in Ship-AI.cpp // todo: signals
200
201 const AICommand *GetAICommand() const { return m_curAICmd; }
202 bool IsAIAttacking(const Ship *target) const;
203
204 virtual void PostLoadFixup(Space *space) override;
205
206 const ShipType *GetShipType() const { return m_type; }
207 virtual void SetShipType(const ShipType::Id &shipId);
208
209 const SceneGraph::ModelSkin &GetSkin() const { return m_skin; }
210 void SetSkin(const SceneGraph::ModelSkin &skin);
211
212 void SetPattern(unsigned int num);
213
214 void SetLabel(const std::string &label) override;
215 void SetShipName(const std::string &shipName);
216
217 float GetAtmosphericPressureLimit() const;
218 float GetPercentShields() const;
219 float GetPercentHull() const;
220 void SetPercentHull(float);
221
222 void EnterSystem();
223
224 HyperspaceCloud *GetHyperspaceCloud() const { return m_hyperspaceCloud; }
225
226 sigc::signal<void> onDock; // JJ: check what these are for
227 sigc::signal<void> onUndock;
228 sigc::signal<void> onLanded;
229
230 // mutable because asking to know when state changes is not the same as
231 // actually changing state
232 mutable sigc::signal<void> onFlavourChanged;
233
234 bool IsInvulnerable() const { return m_invulnerable; }
235 void SetInvulnerable(bool b) { m_invulnerable = b; }
236
237 Sensors *GetSensors() const { return m_sensors.get(); }
238
239 Uint8 GetRelations(Body *other) const; //0=hostile, 50=neutral, 100=ally
240 void SetRelations(Body *other, Uint8 percent);
241
242 double GetLandingPosOffset() const { return m_landingMinOffset; }
243
245
246protected:
247 vector3d CalcAtmosphericForce() const override;
248
249 virtual void SaveToJson(Json &jsonObj, Space *space) override;
250
251 bool AITimeStep(float timeStep); // Called by controller. Returns true if complete
252
253 virtual void SetAlertState(AlertState as);
254
255 virtual void OnEnterHyperspace();
256 virtual void OnEnterSystem();
257
260
262
264
267 // > 0 means active
269 bool now;
270 double duration;
271 LuaRef checks; // A Lua function to check all the conditions before the jump
274
276
279
280private:
281 float GetECMRechargeTime();
282 void DoThrusterSounds() const;
283 void Init();
284 void TestLanded();
285 void UpdateAlertState();
286 void UpdateFuel(float timeStep);
287 void SetShipId(const ShipType::Id &shipId);
288 void EnterHyperspace();
289 void InitMaterials();
290 void InitEquipSet();
291
292 bool m_invulnerable;
293
294 static const double DEFAULT_LIFT_TO_DRAG_RATIO;
295
296 static const float DEFAULT_SHIELD_COOLDOWN_TIME;
297 float m_shieldCooldown;
298 shipstats_t m_stats;
299 const ShipType *m_type;
301
302 Sound::Event m_beamLaser[2];
303
304 FlightState m_flightState;
305 bool m_testLanded;
306 bool m_forceWheelUpdate;
307 float m_launchLockTimeout;
308 float m_wheelState;
309 int m_wheelTransition;
310
311 AlertState m_alertState;
312 double m_lastAlertUpdate;
313 double m_lastFiringAlert;
314 bool m_shipNear;
315 bool m_shipFiring;
316 bool m_missileDetected;
317
318 HyperspaceCloud *m_hyperspaceCloud;
319
320 AICommand *m_curAICmd;
321
322 double m_landingMinOffset; // offset from the centre of the ship used during docking
323
324 int m_dockedWithIndex; // deserialisation
325
326 SceneGraph::Animation *m_landingGearAnimation;
327 std::unique_ptr<NavLights> m_navLights;
328
329 std::unique_ptr<Sensors> m_sensors;
330 std::unordered_map<Body *, Uint8> m_relationsMap;
331
332 std::string m_shipName;
333
334 double m_hydrogenScoopedAccumulator = 0;
335
336public:
337 // FIXME: these methods are deprecated; all calls should use the propulsion object directly.
340 double GetAccelFwd() { return m_propulsion->GetAccelFwd(); }
342 double GetFuel() const { return m_propulsion->GetFuel(); }
343 double GetAccel(Thruster thruster) const { return m_propulsion->GetAccel(thruster); }
344 void SetFuel(const double f) { m_propulsion->SetFuel(f); }
345 void SetFuelReserve(const double f) { m_propulsion->SetFuelReserve(f); }
346
347 bool AIMatchVel(const vector3d &vel, const vector3d &powerLimit = vector3d(1.0)) { return m_propulsion->AIMatchVel(vel, powerLimit); }
348 double AIFaceDirection(const vector3d &dir, double av = 0) { return m_propulsion->AIFaceDirection(dir, av); }
349 void SetThrusterState(int axis, double level) { return m_propulsion->SetLinThrusterState(axis, level); }
350 void AIMatchAngVelObjSpace(const vector3d &desiredAngVel, const vector3d &powerLimit = vector3d(1.0), bool ignoreZeroValues = false)
351 {
352 m_propulsion->AIMatchAngVelObjSpace(desiredAngVel, powerLimit, ignoreZeroValues);
353 }
354};
355
356#endif /* _SHIP_H */
nlohmann::json Json
Definition: Json.h:8
Thruster
Definition: Propulsion.h:16
Definition: ShipAICmd.h:19
Definition: Body.h:65
Definition: Camera.h:85
Definition: CargoBody.h:14
Definition: DynamicBody.h:15
bool m_decelerating
Definition: DynamicBody.h:93
Definition: FixedGuns.h:21
Definition: Renderer.h:45
Definition: HyperspaceCloud.h:18
Definition: LuaRef.h:12
Definition: Missile.h:12
Definition: NavLights.h:21
Definition: Planet.h:18
Definition: PlayerShipController.h:14
Definition: Propulsion.h:26
void ClearAngThrusterState()
Definition: Propulsion.h:75
void SetFuelReserve(const double f)
Definition: Propulsion.h:99
void SetFuel(const double f)
Definition: Propulsion.h:98
void ClearLinThrusterState()
Definition: Propulsion.h:74
void SetAngThrusterState(int axis, double level)
Definition: Propulsion.h:68
double GetFuel() const
Definition: Propulsion.h:96
void AIMatchAngVelObjSpace(const vector3d &angvel, const vector3d &powerLimit=vector3d(1.0), bool ignoreZeroValues=false)
Definition: Propulsion.cpp:367
void SetLinThrusterState(int axis, double level)
Definition: Propulsion.cpp:150
bool AIMatchVel(const vector3d &vel, const vector3d &powerLimit=vector3d(1.0))
Definition: Propulsion.cpp:320
double GetAccelFwd() const
Definition: Propulsion.h:54
double AIFaceDirection(const vector3d &dir, double av=0)
Definition: Propulsion.cpp:418
double GetAccel(Thruster thruster) const
Definition: Propulsion.h:53
Definition: Animation.h:19
Definition: ModelSkin.h:22
Definition: Sensors.h:22
Definition: ShipController.h:32
Definition: Ship.h:64
void UpdateMass()
Definition: Ship.cpp:378
virtual bool OnCollision(Body *o, Uint32 flags, double relVel) override
Definition: Ship.cpp:525
bool IsAIAttacking(const Ship *target) const
Definition: Ship-AI.cpp:77
sigc::signal< void > onLanded
Definition: Ship.h:228
ECMResult UseECM()
Definition: Ship.cpp:777
FlightState
Definition: Ship.h:121
@ UNDOCKING
Definition: Ship.h:124
@ JUMPING
Definition: Ship.h:127
@ DOCKING
Definition: Ship.h:123
@ FLYING
Definition: Ship.h:122
@ DOCKED
Definition: Ship.h:125
@ HYPERSPACE
Definition: Ship.h:128
@ LANDED
Definition: Ship.h:126
virtual void OnEnterHyperspace()
Definition: Ship.cpp:1536
virtual void Render(Graphics::Renderer *r, const Camera *camera, const vector3d &viewCoords, const matrix4x4d &viewTransform) override
Definition: Ship.cpp:1454
virtual Ship::HyperjumpStatus InitiateHyperjumpTo(const SystemPath &dest, int warmup_time, double duration, const HyperdriveSoundsTable &sounds, LuaRef checks)
Definition: Ship.cpp:745
FixedGuns * m_fixedGuns
Definition: Ship.h:278
virtual void SetLandedOn(Planet *p, float latitude, float longitude)
Definition: Ship.cpp:957
bool IsLanded() const
Definition: Ship.h:85
double GetLandingPosOffset() const
Definition: Ship.h:242
OBJDEF(Ship, DynamicBody, SHIP)
Ship::HyperjumpStatus CheckHyperjumpCapability() const
Definition: Ship.cpp:734
void SetFlightState(FlightState s)
Definition: Ship.cpp:823
double GetHyperspaceDuration() const
Definition: Ship.h:146
void SetFuel(const double f)
Definition: Ship.h:344
FlightState GetFlightState() const
Definition: Ship.h:134
AlertState
Definition: Ship.h:179
@ ALERT_SHIP_FIRING
Definition: Ship.h:182
@ ALERT_SHIP_NEARBY
Definition: Ship.h:181
@ ALERT_MISSILE_DETECTED
Definition: Ship.h:183
@ ALERT_NONE
Definition: Ship.h:180
virtual void OnEnterSystem()
Definition: Ship.cpp:1562
float GetPercentHull() const
Definition: Ship.cpp:353
virtual ~Ship()
Definition: Ship.cpp:206
bool IsHyperspaceActive() const
Definition: Ship.h:164
vector3d CalcAtmoTorque() const
Definition: Ship.cpp:449
SpaceStation * m_dockedWith
Definition: Ship.h:258
void SetFuelReserve(const double f)
Definition: Ship.h:345
virtual bool OnDamage(Body *attacker, float kgDamage, const CollisionContact &contactData) override
Definition: Ship.cpp:471
sigc::signal< void > onUndock
Definition: Ship.h:227
bool IsDecelerating() const
Definition: Ship.h:115
void Explode()
Definition: Ship.cpp:573
Sensors * GetSensors() const
Definition: Ship.h:237
void SetController(ShipController *c)
Definition: Ship.cpp:345
void AIOrbit(Body *target, double alt)
Definition: Ship-AI.cpp:112
double GetAccelFwd()
Definition: Ship.h:340
void SetRelations(Body *other, Uint8 percent)
Definition: Ship.cpp:1625
int m_dockedWithPort
Definition: Ship.h:259
LuaRef m_equipSet
Definition: Ship.h:275
HyperspaceCloud * GetHyperspaceCloud() const
Definition: Ship.h:224
bool AIMatchVel(const vector3d &vel, const vector3d &powerLimit=vector3d(1.0))
Definition: Ship.h:347
virtual bool ManualDocking() const
Definition: Ship.h:107
bool AIIsActive() const
Definition: Ship.h:188
void UpdateFuelStats()
Definition: Ship.cpp:726
virtual bool DoDamage(float kgDamage)
Definition: Ship.cpp:585
const SystemPath & GetHyperspaceDest() const
Definition: Ship.h:145
sigc::signal< void > onDock
Definition: Ship.h:226
Ship()=delete
void UpdateEquipStats()
Definition: Ship.cpp:630
const shipstats_t & GetStats() const
Definition: Ship.h:100
void AIKill(Ship *target)
Definition: Ship-AI.cpp:68
void SetSkin(const SceneGraph::ModelSkin &skin)
Definition: Ship.cpp:1605
ECMResult
Definition: Ship.h:169
@ ECM_RECHARGING
Definition: Ship.h:172
@ ECM_NOT_INSTALLED
Definition: Ship.h:170
@ ECM_ACTIVATED
Definition: Ship.h:171
void SetPattern(unsigned int num)
Definition: Ship.cpp:1611
vector3d CalcAtmosphericForce() const override
Definition: Ship.cpp:389
void AIClearInstructions()
Definition: Ship-AI.cpp:45
float GetAtmosphericPressureLimit() const
Definition: Ship.cpp:366
virtual bool IsInSpace() const override
Definition: Ship.h:142
void SetShipName(const std::string &shipName)
Definition: Ship.cpp:1599
virtual void TimeStepUpdate(const float timeStep) override
Definition: Ship.cpp:984
void AIKamikaze(Body *target)
Definition: Ship-AI.cpp:62
virtual void NotifyRemoved(const Body *const removedBody) override
Definition: Ship.cpp:1408
bool IsInvulnerable() const
Definition: Ship.h:234
virtual void SaveToJson(Json &jsonObj, Space *space) override
Definition: Ship.cpp:265
Propulsion * GetPropulsion()
Definition: Ship.h:244
sigc::signal< void > onFlavourChanged
Definition: Ship.h:232
float GetHyperspaceCountdown() const
Definition: Ship.h:163
int GetWheelTransition() const
Definition: Ship.h:137
void SetGunState(int idx, int state)
Definition: Ship.cpp:1434
void AIMatchAngVelObjSpace(const vector3d &desiredAngVel, const vector3d &powerLimit=vector3d(1.0), bool ignoreZeroValues=false)
Definition: Ship.h:350
virtual void PostLoadFixup(Space *space) override
Definition: Ship.cpp:257
void SetLabel(const std::string &label) override
Definition: Ship.cpp:1592
double GetECMRechargeRemain() const
Definition: Ship.h:147
virtual void SetFrame(FrameId fId) override
Definition: Ship.cpp:978
float GetWheelState() const
Definition: Ship.h:136
const SceneGraph::ModelSkin & GetSkin() const
Definition: Ship.h:209
void SetHyperspaceDest(const SystemPath &dest)
Definition: Ship.h:144
void EnterSystem()
Definition: Ship.cpp:1549
bool AITimeStep(float timeStep)
Definition: Ship-AI.cpp:19
Uint8 GetRelations(Body *other) const
Definition: Ship.cpp:1616
HyperjumpStatus
Definition: Ship.h:149
@ HYPERJUMP_CURRENT_SYSTEM
Definition: Ship.h:151
@ HYPERJUMP_INITIATED
Definition: Ship.h:153
@ HYPERJUMP_INSUFFICIENT_FUEL
Definition: Ship.h:156
@ HYPERJUMP_OK
Definition: Ship.h:150
@ HYPERJUMP_SAFETY_LOCKOUT
Definition: Ship.h:157
@ HYPERJUMP_OUT_OF_RANGE
Definition: Ship.h:155
@ HYPERJUMP_NO_DRIVE
Definition: Ship.h:152
@ HYPERJUMP_DRIVE_ACTIVE
Definition: Ship.h:154
void SetInvulnerable(bool b)
Definition: Ship.h:235
void AIGetStatusText(char *str)
Definition: Ship-AI.cpp:54
virtual void StaticUpdate(const float timeStep) override
Definition: Ship.cpp:1218
void SetThrusterState(int axis, double level)
Definition: Ship.h:349
void ClearAngThrusterState()
Definition: Ship.h:338
void AIBodyDeleted(const Body *const body)
Definition: Ship.h:199
SpaceStation * GetDockedWith() const
Definition: Ship.h:82
void AIHoldPosition()
Definition: Ship-AI.cpp:120
bool IsDocked() const
Definition: Ship.h:84
const AICommand * GetAICommand() const
Definition: Ship.h:201
double AIFaceDirection(const vector3d &dir, double av=0)
Definition: Ship.h:348
double GetHullTemperature() const
Definition: Ship.cpp:1066
void AIDock(SpaceStation *target)
Definition: Ship-AI.cpp:104
virtual void SetAlertState(AlertState as)
Definition: Ship.cpp:1077
double GetAccel(Thruster thruster) const
Definition: Ship.h:343
virtual void SetShipType(const ShipType::Id &shipId)
Definition: Ship.cpp:1574
bool SpawnCargo(CargoBody *c_body) const
Definition: Ship.cpp:1507
void ClearLinThrusterState()
Definition: Ship.h:339
float m_ecmRecharge
Definition: Ship.h:261
ShipController * GetController() const
Definition: Ship.h:78
Propulsion * m_propulsion
Definition: Ship.h:277
struct Ship::HyperspacingOut m_hyperspace
int GetDockingPort() const
Definition: Ship.h:83
LuaRef GetEquipSet() const
Definition: Ship.h:140
void ClearThrusterState()
Definition: Ship.h:91
void Blastoff()
Definition: Ship.cpp:891
AlertState GetAlertState()
Definition: Ship.h:185
void AIFlyTo(Body *target)
Definition: Ship-AI.cpp:92
virtual bool SetWheelState(bool down)
Definition: Ship.cpp:1442
virtual void SetDockedWith(SpaceStation *, int port)
Definition: Ship.cpp:1418
void UpdateGunsStats()
Definition: Ship.cpp:689
virtual Missile * SpawnMissile(ShipType::Id missile_type, int power=-1)
Definition: Ship.cpp:807
void TimeAccelAdjust(const float timeStep)
Definition: Ship.cpp:1053
void UpdateLuaStats()
Definition: Ship.cpp:668
void SetAngThrusterState(const vector3d &levels)
Definition: Ship.h:341
virtual void AbortHyperjump()
Definition: Ship.cpp:763
bool Undock()
Definition: Ship.cpp:1413
double GetFuel() const
Definition: Ship.h:342
const ShipType * GetShipType() const
Definition: Ship.h:206
void SetPercentHull(float)
Definition: Ship.cpp:371
float GetPercentShields() const
Definition: Ship.cpp:358
ShipController * m_controller
Definition: Ship.h:263
Definition: Sound.h:32
Definition: SpaceStation.h:30
Definition: Space.h:19
Definition: SystemPath.h:13
Definition: Background.h:14
Definition: CollisionContact.h:9
Definition: FrameId.h:9
Definition: HeatGradientPar.h:4
Definition: Ship.h:58
std::string abort_sound
Definition: Ship.h:61
std::string jump_sound
Definition: Ship.h:59
std::string warmup_sound
Definition: Ship.h:60
Definition: ShipType.h:12
std::string Id
Definition: ShipType.h:24
Definition: Ship.h:265
HyperdriveSoundsTable sounds
Definition: Ship.h:272
bool now
Definition: Ship.h:269
double duration
Definition: Ship.h:270
float countdown
Definition: Ship.h:268
SystemPath dest
Definition: Ship.h:266
LuaRef checks
Definition: Ship.h:271
Definition: Ship.h:38
float fuel_tank_mass_left
Definition: Ship.h:48
float shield_mass_left
Definition: Ship.h:47
int hull_autorepair_cap
Definition: Ship.h:55
float hyperspace_range
Definition: Ship.h:44
int free_capacity
Definition: Ship.h:41
int cargo_life_support_cap
Definition: Ship.h:54
float shield_mass
Definition: Ship.h:46
int atmo_shield_cap
Definition: Ship.h:51
float hull_mass_left
Definition: Ship.h:43
int fuel_scoop_cap
Definition: Ship.h:53
int static_mass
Definition: Ship.h:42
int used_cargo
Definition: Ship.h:40
int radar_cap
Definition: Ship.h:52
float hyperspace_range_max
Definition: Ship.h:45
int used_capacity
Definition: Ship.h:39
vector3< double > vector3d
Definition: vector3.h:329