Pioneer
Loading...
Searching...
No Matches
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
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
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
56protected:
57 virtual void SaveToJson(Json &jsonObj, Space *space) override;
58
59 virtual void OnEnterSystem() override;
60 virtual void OnEnterHyperspace() override;
61
62private:
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
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
ShipCockpit * GetCockpit() const
Definition Player.h:48
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