Pioneer
Loading...
Searching...
No Matches
Player.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 _PLAYER_H
5#define _PLAYER_H
6
7#include "Ship.h"
8#include "ShipCockpit.h"
9
11
12namespace Graphics {
13 class Renderer;
14}
15
16class Player : public Ship {
17public:
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 virtual bool ManualDocking() const override { return !AIIsActive(); }
31
32 void DoFixspeedTakeoff(SpaceStation *from = nullptr);
33
34 virtual void SetShipType(const ShipType::Id &shipId) override;
35
37 //XXX temporary things to avoid causing too many changes right now
38 Body *GetCombatTarget() const;
39 Body *GetNavTarget() const;
40 Body *GetFollowTarget() const;
41 void SetCombatTarget(Body *const target, bool setFollowTo = false);
42 void SetNavTarget(Body *const target);
43 void SetFollowTarget(Body *const target);
44 void ChangeCruiseSpeed(double delta);
45
46 virtual Ship::HyperjumpStatus InitiateHyperjumpTo(const SystemPath &dest, int warmup_time, double duration, const HyperdriveSoundsTable &sounds, LuaRef checks) override;
47 virtual void AbortHyperjump() override;
48
49 // XXX cockpit is here for now because it has a physics component
50 void InitCockpit();
51 ShipCockpit *GetCockpit() const { return m_cockpit.get(); }
52 void OnCockpitActivated();
53
54 virtual void StaticUpdate(const float timeStep) override;
55 sigc::signal<void> onChangeEquipment;
56 virtual vector3d GetManeuverVelocity() const;
57 virtual int GetManeuverTime() const;
58
59protected:
60 virtual void SaveToJson(Json &jsonObj, Space *space) override;
61
62 virtual void OnEnterSystem() override;
63 virtual void OnEnterHyperspace() override;
64
65private:
66 std::unique_ptr<ShipCockpit> m_cockpit;
67 Sound::Event m_creakSound;
68 vector3d m_atmosAccel;
69 vector3d m_atmosJerk;
70};
71
72#endif /* _PLAYER_H */
nlohmann::json Json
Definition: Json.h:8
Definition: Body.h:65
Definition: LuaRef.h:12
Definition: Missile.h:12
Definition: PlayerShipController.h:14
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 ManualDocking() const override
Definition: Player.h:30
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:350
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:342
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:55
void SetCombatTarget(Body *const target, bool setFollowTo=false)
Definition: Player.cpp:261
virtual bool SetWheelState(bool down) override
Definition: Player.cpp:144
void DoFixspeedTakeoff(SpaceStation *from=nullptr)
Definition: Player.cpp:371
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
ShipCockpit * GetCockpit() const
Definition: Player.h:51
virtual void SaveToJson(Json &jsonObj, Space *space) override
Definition: Player.cpp:76
Definition: ShipCockpit.h:19
Definition: Ship.h:64
AlertState
Definition: Ship.h:179
bool AIIsActive() const
Definition: Ship.h:188
HyperjumpStatus
Definition: Ship.h:149
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