Pioneer
Missile.h
Go to the documentation of this file.
1 // Copyright © 2008-2021 Pioneer Developers. See AUTHORS.txt for details
2 // Licensed under the terms of the GPL v3. See licenses/GPL-3.txt
3 
4 #ifndef _MISSILE_H
5 #define _MISSILE_H
6 
7 #include "DynamicBody.h"
8 #include "ShipType.h"
9 
10 class AICommand;
11 
12 class Missile : public DynamicBody {
13 public:
15  Missile() = delete;
16  Missile(const ShipType::Id &type, Body *owner, int power = -1);
17  Missile(const Json &jsonObj, Space *space);
18  virtual ~Missile();
19  void StaticUpdate(const float timeStep) override;
20  void TimeStepUpdate(const float timeStep) override;
21  virtual bool OnCollision(Body *o, Uint32 flags, double relVel) override;
22  virtual bool OnDamage(Body *attacker, float kgDamage, const CollisionContact &contactData) override;
23  virtual void NotifyRemoved(const Body *const removedBody) override;
24  virtual void PostLoadFixup(Space *space) override;
25  virtual void Render(Graphics::Renderer *r, const Camera *camera, const vector3d &viewCoords, const matrix4x4d &viewTransform) override;
26  void ECMAttack(int power_val);
27  Body *GetOwner() const { return m_owner; }
28  bool IsArmed() const { return m_armed; }
29  void Arm();
30  void Disarm();
31  void AIKamikaze(Body *target);
32 
33 protected:
34  virtual void SaveToJson(Json &jsonObj, Space *space) override;
35 
36 private:
37  void Explode();
38  AICommand *m_curAICmd;
39  int m_power;
40  Body *m_owner;
41  bool m_armed;
42  const ShipType *m_type;
43 
44  int m_ownerIndex; // deserialisation
45 };
46 
47 #endif /* _MISSILE_H */
nlohmann::json Json
Definition: Json.h:8
Definition: ShipAICmd.h:19
Definition: Body.h:54
Definition: Camera.h:76
Definition: DynamicBody.h:15
Definition: Renderer.h:39
Definition: Missile.h:12
void AIKamikaze(Body *target)
Definition: Missile.cpp:256
Missile()=delete
bool IsArmed() const
Definition: Missile.h:28
void ECMAttack(int power_val)
Definition: Missile.cpp:104
void TimeStepUpdate(const float timeStep) override
Definition: Missile.cpp:134
virtual void PostLoadFixup(Space *space) override
Definition: Missile.cpp:92
void Disarm()
Definition: Missile.cpp:242
void Arm()
Definition: Missile.cpp:236
virtual void SaveToJson(Json &jsonObj, Space *space) override
Definition: Missile.cpp:75
virtual bool OnCollision(Body *o, Uint32 flags, double relVel) override
Definition: Missile.cpp:160
OBJDEF(Missile, DynamicBody, MISSILE)
virtual void Render(Graphics::Renderer *r, const Camera *camera, const vector3d &viewCoords, const matrix4x4d &viewTransform) override
Definition: Missile.cpp:248
virtual ~Missile()
Definition: Missile.cpp:99
virtual void NotifyRemoved(const Body *const removedBody) override
Definition: Missile.cpp:227
void StaticUpdate(const float timeStep) override
Definition: Missile.cpp:112
virtual bool OnDamage(Body *attacker, float kgDamage, const CollisionContact &contactData) override
Definition: Missile.cpp:168
Body * GetOwner() const
Definition: Missile.h:27
Definition: Space.h:19
Definition: CollisionContact.h:9
Definition: ShipType.h:12
std::string Id
Definition: ShipType.h:24