7#include <unordered_map>
103 virtual bool DoDamage(
float kgDamage);
110 virtual void StaticUpdate(
const float timeStep)
override;
117 virtual bool OnCollision(
Body *o, Uint32 flags,
double relVel)
override;
213 void SetLabel(
const std::string &label)
override;
280 float GetECMRechargeTime();
281 void DoThrusterSounds()
const;
284 void UpdateAlertState();
285 void UpdateFuel(
float timeStep);
287 void EnterHyperspace();
288 void InitMaterials();
293 static const double DEFAULT_LIFT_TO_DRAG_RATIO;
295 static const float DEFAULT_SHIELD_COOLDOWN_TIME;
296 float m_shieldCooldown;
305 bool m_forceWheelUpdate;
306 float m_launchLockTimeout;
308 int m_wheelTransition;
311 double m_lastAlertUpdate;
312 double m_lastFiringAlert;
315 bool m_missileDetected;
321 double m_landingMinOffset;
323 int m_dockedWithIndex;
326 std::unique_ptr<NavLights> m_navLights;
328 std::unique_ptr<Sensors> m_sensors;
329 std::unordered_map<Body *, Uint8> m_relationsMap;
331 std::string m_shipName;
nlohmann::json Json
Definition Json.h:8
Thruster
Definition Propulsion.h:15
Definition ShipAICmd.h:19
Definition CargoBody.h:15
Definition DynamicBody.h:15
bool m_decelerating
Definition DynamicBody.h:93
Definition FixedGuns.h:21
Definition HyperspaceCloud.h:18
Definition NavLights.h:21
Definition PlayerShipController.h:11
Definition Propulsion.h:25
void ClearAngThrusterState()
Definition Propulsion.h:74
void SetFuelReserve(const double f)
Definition Propulsion.h:98
void SetFuel(const double f)
Definition Propulsion.h:97
void ClearLinThrusterState()
Definition Propulsion.h:73
void SetAngThrusterState(int axis, double level)
Definition Propulsion.h:67
double GetFuel() const
Definition Propulsion.h:95
void AIMatchAngVelObjSpace(const vector3d &angvel, const vector3d &powerLimit=vector3d(1.0), bool ignoreZeroValues=false)
Definition Propulsion.cpp:366
void SetLinThrusterState(int axis, double level)
Definition Propulsion.cpp:149
bool AIMatchVel(const vector3d &vel, const vector3d &powerLimit=vector3d(1.0))
Definition Propulsion.cpp:319
double GetAccelFwd() const
Definition Propulsion.h:53
double AIFaceDirection(const vector3d &dir, double av=0)
Definition Propulsion.cpp:417
double GetAccel(Thruster thruster) const
Definition Propulsion.h:52
Definition Animation.h:19
Definition ModelSkin.h:22
Definition ShipController.h:32
void UpdateMass()
Definition Ship.cpp:375
virtual bool OnCollision(Body *o, Uint32 flags, double relVel) override
Definition Ship.cpp:522
bool IsAIAttacking(const Ship *target) const
Definition Ship-AI.cpp:78
sigc::signal< void > onLanded
Definition Ship.h:227
ECMResult UseECM()
Definition Ship.cpp:775
FlightState
Definition Ship.h:120
@ UNDOCKING
Definition Ship.h:123
@ JUMPING
Definition Ship.h:126
@ DOCKING
Definition Ship.h:122
@ FLYING
Definition Ship.h:121
@ DOCKED
Definition Ship.h:124
@ HYPERSPACE
Definition Ship.h:127
@ LANDED
Definition Ship.h:125
virtual void OnEnterHyperspace()
Definition Ship.cpp:1512
virtual void Render(Graphics::Renderer *r, const Camera *camera, const vector3d &viewCoords, const matrix4x4d &viewTransform) override
Definition Ship.cpp:1430
virtual Ship::HyperjumpStatus InitiateHyperjumpTo(const SystemPath &dest, int warmup_time, double duration, const HyperdriveSoundsTable &sounds, LuaRef checks)
Definition Ship.cpp:743
FixedGuns * m_fixedGuns
Definition Ship.h:277
virtual void SetLandedOn(Planet *p, float latitude, float longitude)
Definition Ship.cpp:946
bool IsLanded() const
Definition Ship.h:85
double GetLandingPosOffset() const
Definition Ship.h:241
OBJDEF(Ship, DynamicBody, SHIP)
Ship::HyperjumpStatus CheckHyperjumpCapability() const
Definition Ship.cpp:732
void SetFlightState(FlightState s)
Definition Ship.cpp:821
double GetHyperspaceDuration() const
Definition Ship.h:145
void SetFuel(const double f)
Definition Ship.h:341
FlightState GetFlightState() const
Definition Ship.h:133
AlertState
Definition Ship.h:178
@ ALERT_SHIP_FIRING
Definition Ship.h:181
@ ALERT_SHIP_NEARBY
Definition Ship.h:180
@ ALERT_MISSILE_DETECTED
Definition Ship.h:182
@ ALERT_NONE
Definition Ship.h:179
virtual void OnEnterSystem()
Definition Ship.cpp:1538
float GetPercentHull() const
Definition Ship.cpp:350
virtual ~Ship()
Definition Ship.cpp:203
bool IsHyperspaceActive() const
Definition Ship.h:163
vector3d CalcAtmoTorque() const
Definition Ship.cpp:446
SpaceStation * m_dockedWith
Definition Ship.h:257
void SetFuelReserve(const double f)
Definition Ship.h:342
virtual bool OnDamage(Body *attacker, float kgDamage, const CollisionContact &contactData) override
Definition Ship.cpp:468
sigc::signal< void > onUndock
Definition Ship.h:226
bool IsDecelerating() const
Definition Ship.h:114
void Explode()
Definition Ship.cpp:571
Sensors * GetSensors() const
Definition Ship.h:236
void SetController(ShipController *c)
Definition Ship.cpp:342
void AIOrbit(Body *target, double alt)
Definition Ship-AI.cpp:113
double GetAccelFwd()
Definition Ship.h:337
void SetRelations(Body *other, Uint8 percent)
Definition Ship.cpp:1601
int m_dockedWithPort
Definition Ship.h:258
LuaRef m_equipSet
Definition Ship.h:274
HyperspaceCloud * GetHyperspaceCloud() const
Definition Ship.h:223
bool AIMatchVel(const vector3d &vel, const vector3d &powerLimit=vector3d(1.0))
Definition Ship.h:344
void UpdateFuelStats()
Definition Ship.cpp:724
virtual bool DoDamage(float kgDamage)
Definition Ship.cpp:583
const SystemPath & GetHyperspaceDest() const
Definition Ship.h:144
sigc::signal< void > onDock
Definition Ship.h:225
void UpdateEquipStats()
Definition Ship.cpp:628
const shipstats_t & GetStats() const
Definition Ship.h:100
void AIKill(Ship *target)
Definition Ship-AI.cpp:69
void SetSkin(const SceneGraph::ModelSkin &skin)
Definition Ship.cpp:1581
ECMResult
Definition Ship.h:168
@ ECM_RECHARGING
Definition Ship.h:171
@ ECM_NOT_INSTALLED
Definition Ship.h:169
@ ECM_ACTIVATED
Definition Ship.h:170
void SetPattern(unsigned int num)
Definition Ship.cpp:1587
vector3d CalcAtmosphericForce() const override
Definition Ship.cpp:386
void AIClearInstructions()
Definition Ship-AI.cpp:46
float GetAtmosphericPressureLimit() const
Definition Ship.cpp:363
virtual bool IsInSpace() const override
Definition Ship.h:141
void SetShipName(const std::string &shipName)
Definition Ship.cpp:1575
virtual void TimeStepUpdate(const float timeStep) override
Definition Ship.cpp:973
void AIKamikaze(Body *target)
Definition Ship-AI.cpp:63
virtual void NotifyRemoved(const Body *const removedBody) override
Definition Ship.cpp:1384
bool IsInvulnerable() const
Definition Ship.h:233
virtual void SaveToJson(Json &jsonObj, Space *space) override
Definition Ship.cpp:262
bool AIIsActive()
Definition Ship.h:187
Propulsion * GetPropulsion()
Definition Ship.h:243
sigc::signal< void > onFlavourChanged
Definition Ship.h:231
float GetHyperspaceCountdown() const
Definition Ship.h:162
int GetWheelTransition() const
Definition Ship.h:136
void SetGunState(int idx, int state)
Definition Ship.cpp:1410
void AIMatchAngVelObjSpace(const vector3d &desiredAngVel, const vector3d &powerLimit=vector3d(1.0), bool ignoreZeroValues=false)
Definition Ship.h:347
virtual void PostLoadFixup(Space *space) override
Definition Ship.cpp:254
void SetLabel(const std::string &label) override
Definition Ship.cpp:1568
double GetECMRechargeRemain() const
Definition Ship.h:146
virtual void SetFrame(FrameId fId) override
Definition Ship.cpp:967
float GetWheelState() const
Definition Ship.h:135
const SceneGraph::ModelSkin & GetSkin() const
Definition Ship.h:208
void SetHyperspaceDest(const SystemPath &dest)
Definition Ship.h:143
void EnterSystem()
Definition Ship.cpp:1525
bool AITimeStep(float timeStep)
Definition Ship-AI.cpp:20
Uint8 GetRelations(Body *other) const
Definition Ship.cpp:1592
HyperjumpStatus
Definition Ship.h:148
@ HYPERJUMP_CURRENT_SYSTEM
Definition Ship.h:150
@ HYPERJUMP_INITIATED
Definition Ship.h:152
@ HYPERJUMP_INSUFFICIENT_FUEL
Definition Ship.h:155
@ HYPERJUMP_OK
Definition Ship.h:149
@ HYPERJUMP_SAFETY_LOCKOUT
Definition Ship.h:156
@ HYPERJUMP_OUT_OF_RANGE
Definition Ship.h:154
@ HYPERJUMP_NO_DRIVE
Definition Ship.h:151
@ HYPERJUMP_DRIVE_ACTIVE
Definition Ship.h:153
void SetInvulnerable(bool b)
Definition Ship.h:234
void AIGetStatusText(char *str)
Definition Ship-AI.cpp:55
virtual void StaticUpdate(const float timeStep) override
Definition Ship.cpp:1207
void SetThrusterState(int axis, double level)
Definition Ship.h:346
void ClearAngThrusterState()
Definition Ship.h:335
void AIBodyDeleted(const Body *const body)
Definition Ship.h:198
SpaceStation * GetDockedWith() const
Definition Ship.h:82
void AIHoldPosition()
Definition Ship-AI.cpp:121
bool IsDocked() const
Definition Ship.h:84
const AICommand * GetAICommand() const
Definition Ship.h:200
double AIFaceDirection(const vector3d &dir, double av=0)
Definition Ship.h:345
double GetHullTemperature() const
Definition Ship.cpp:1055
void AIDock(SpaceStation *target)
Definition Ship-AI.cpp:105
virtual void SetAlertState(AlertState as)
Definition Ship.cpp:1066
double GetAccel(Thruster thruster) const
Definition Ship.h:340
virtual void SetShipType(const ShipType::Id &shipId)
Definition Ship.cpp:1550
bool SpawnCargo(CargoBody *c_body) const
Definition Ship.cpp:1483
void ClearLinThrusterState()
Definition Ship.h:336
float m_ecmRecharge
Definition Ship.h:260
ShipController * GetController() const
Definition Ship.h:78
Propulsion * m_propulsion
Definition Ship.h:276
struct Ship::HyperspacingOut m_hyperspace
int GetDockingPort() const
Definition Ship.h:83
LuaRef GetEquipSet() const
Definition Ship.h:139
void ClearThrusterState()
Definition Ship.h:91
void Blastoff()
Definition Ship.cpp:889
AlertState GetAlertState()
Definition Ship.h:184
void AIFlyTo(Body *target)
Definition Ship-AI.cpp:93
virtual bool SetWheelState(bool down)
Definition Ship.cpp:1418
virtual void SetDockedWith(SpaceStation *, int port)
Definition Ship.cpp:1394
void UpdateGunsStats()
Definition Ship.cpp:687
virtual Missile * SpawnMissile(ShipType::Id missile_type, int power=-1)
Definition Ship.cpp:805
void TimeAccelAdjust(const float timeStep)
Definition Ship.cpp:1042
void UpdateLuaStats()
Definition Ship.cpp:666
void SetAngThrusterState(const vector3d &levels)
Definition Ship.h:338
virtual void AbortHyperjump()
Definition Ship.cpp:761
bool Undock()
Definition Ship.cpp:1389
double GetFuel() const
Definition Ship.h:339
const ShipType * GetShipType() const
Definition Ship.h:205
void SetPercentHull(float)
Definition Ship.cpp:368
float GetPercentShields() const
Definition Ship.cpp:355
ShipController * m_controller
Definition Ship.h:262
Definition SpaceStation.h:30
Definition SystemPath.h:13
Definition Background.h:14
Definition HeatGradientPar.h:4
std::string abort_sound
Definition Ship.h:61
std::string jump_sound
Definition Ship.h:59
std::string warmup_sound
Definition Ship.h:60
std::string Id
Definition ShipType.h:24
HyperdriveSoundsTable sounds
Definition Ship.h:271
bool now
Definition Ship.h:268
double duration
Definition Ship.h:269
float countdown
Definition Ship.h:267
SystemPath dest
Definition Ship.h:265
LuaRef checks
Definition Ship.h:270
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:290