Pioneer
Player.h
Go to the documentation of this file.
1 // Copyright © 2008-2023 Pioneer Developers. See AUTHORS.txt for details
2 // Licensed under the terms of the GPL v3. See licenses/GPL-3.txt
3 
4 #ifndef _PLAYER_H
5 #define _PLAYER_H
6 
7 #include "Ship.h"
8 #include "ShipCockpit.h"
9 
11 
12 namespace Graphics {
13  class Renderer;
14 }
15 
16 class Player : public Ship {
17 public:
19  Player() = delete;
20  Player(const Json &jsonObj, Space *space);
21  Player(const ShipType::Id &shipId);
22 
23  virtual void SetDockedWith(SpaceStation *, int port) override;
24  virtual bool DoDamage(float kgDamage) override final; // overloaded to add "crush" audio
25  virtual bool OnDamage(Body *attacker, float kgDamage, const CollisionContact &contactData) override;
26  virtual bool SetWheelState(bool down) override; // returns success of state change, NOT state itself
27  virtual Missile *SpawnMissile(ShipType::Id missile_type, int power = -1) override;
28  virtual void SetAlertState(Ship::AlertState as) override;
29  virtual void NotifyRemoved(const Body *const removedBody) override;
30 
31  virtual void SetShipType(const ShipType::Id &shipId) override;
32 
34  //XXX temporary things to avoid causing too many changes right now
35  Body *GetCombatTarget() const;
36  Body *GetNavTarget() const;
37  Body *GetFollowTarget() const;
38  void SetCombatTarget(Body *const target, bool setFollowTo = false);
39  void SetNavTarget(Body *const target);
40  void SetFollowTarget(Body *const target);
41  void ChangeCruiseSpeed(double delta);
42 
43  virtual Ship::HyperjumpStatus InitiateHyperjumpTo(const SystemPath &dest, int warmup_time, double duration, const HyperdriveSoundsTable &sounds, LuaRef checks) override;
44  virtual void AbortHyperjump() override;
45 
46  // XXX cockpit is here for now because it has a physics component
47  void InitCockpit();
48  ShipCockpit *GetCockpit() const { return m_cockpit.get(); }
49  void OnCockpitActivated();
50 
51  virtual void StaticUpdate(const float timeStep) override;
52  sigc::signal<void> onChangeEquipment;
53  virtual vector3d GetManeuverVelocity() const;
54  virtual int GetManeuverTime() const;
55 
56 protected:
57  virtual void SaveToJson(Json &jsonObj, Space *space) override;
58 
59  virtual void OnEnterSystem() override;
60  virtual void OnEnterHyperspace() override;
61 
62 private:
63  std::unique_ptr<ShipCockpit> m_cockpit;
64  Sound::Event m_creakSound;
65  vector3d m_accel;
66  vector3d m_jerk[20] = { vector3d(0.0, 0.0, 0.0) };
67 };
68 
69 #endif /* _PLAYER_H */
nlohmann::json Json
Definition: Json.h:8
Definition: Body.h:57
Definition: LuaRef.h:12
Definition: Missile.h:12
Definition: PlayerShipController.h:11
Definition: Player.h:16
virtual void AbortHyperjump() override
Definition: Player.cpp:293
virtual void SetDockedWith(SpaceStation *, int port) override
Definition: Player.cpp:138
Player()=delete
virtual void OnEnterSystem() override
Definition: Player.cpp:233
virtual void OnEnterHyperspace() override
Definition: Player.cpp:221
virtual Ship::HyperjumpStatus InitiateHyperjumpTo(const SystemPath &dest, int warmup_time, double duration, const HyperdriveSoundsTable &sounds, LuaRef checks) override
Definition: Player.cpp:283
virtual bool OnDamage(Body *attacker, float kgDamage, const CollisionContact &contactData) override
Definition: Player.cpp:128
void SetFollowTarget(Body *const target)
Definition: Player.cpp:271
virtual bool DoDamage(float kgDamage) override final
Definition: Player.cpp:109
virtual vector3d GetManeuverVelocity() const
Definition: Player.cpp:364
virtual Missile * SpawnMissile(ShipType::Id missile_type, int power=-1) override
Definition: Player.cpp:155
void OnCockpitActivated()
Definition: Player.cpp:299
PlayerShipController * GetPlayerController() const
Definition: Player.cpp:241
virtual void SetShipType(const ShipType::Id &shipId) override
Definition: Player.cpp:69
virtual void SetAlertState(Ship::AlertState as) override
Definition: Player.cpp:164
virtual int GetManeuverTime() const
Definition: Player.cpp:356
void ChangeCruiseSpeed(double delta)
Definition: Player.cpp:276
Body * GetFollowTarget() const
Definition: Player.cpp:256
Body * GetNavTarget() const
Definition: Player.cpp:251
OBJDEF(Player, Ship, PLAYER)
Body * GetCombatTarget() const
Definition: Player.cpp:246
virtual void NotifyRemoved(const Body *const removedBody) override
Definition: Player.cpp:196
sigc::signal< void > onChangeEquipment
Definition: Player.h:52
void SetCombatTarget(Body *const target, bool setFollowTo=false)
Definition: Player.cpp:261
ShipCockpit * GetCockpit() const
Definition: Player.h:48
virtual bool SetWheelState(bool down) override
Definition: Player.cpp:144
virtual void StaticUpdate(const float timeStep) override
Definition: Player.cpp:305
void SetNavTarget(Body *const target)
Definition: Player.cpp:266
void InitCockpit()
Definition: Player.cpp:81
virtual void SaveToJson(Json &jsonObj, Space *space) override
Definition: Player.cpp:76
Definition: ShipCockpit.h:19
Definition: Ship.h:64
AlertState
Definition: Ship.h:178
HyperjumpStatus
Definition: Ship.h:148
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: Ship.h:58
std::string Id
Definition: ShipType.h:24
vector3< double > vector3d
Definition: vector3.h:290