Pioneer
CargoBody.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 _CARGOBODY_H
5 #define _CARGOBODY_H
6 
7 #include "DynamicBody.h"
8 #include "libs.h"
9 #include "lua/LuaRef.h"
10 
11 namespace Graphics {
12  class Renderer;
13 }
14 
15 class CargoBody : public DynamicBody {
16 public:
18  CargoBody() = delete;
19  CargoBody(const LuaRef &cargo, float selfdestructTimer = 86400.0f); // default to 24 h lifetime
20  CargoBody(const char *modelName, const LuaRef &cargo, float selfdestructTimer = 86400.0f); // default to 24 h lifetime
21  CargoBody(const Json &jsonObj, Space *space);
22  LuaRef GetCargoType() const { return m_cargo; }
23  virtual void SetLabel(const std::string &label) override;
24  virtual void Render(Graphics::Renderer *r, const Camera *camera, const vector3d &viewCoords, const matrix4x4d &viewTransform) override;
25  virtual void TimeStepUpdate(const float timeStep) override;
26  virtual bool OnCollision(Body *o, Uint32 flags, double relVel) override;
27  virtual bool OnDamage(Body *attacker, float kgDamage, const CollisionContact &contactData) override;
28 
30 
31 protected:
32  virtual void SaveToJson(Json &jsonObj, Space *space) override;
33 
34 private:
35  void Init();
36  LuaRef m_cargo;
37  float m_hitpoints;
38  float m_selfdestructTimer;
39  bool m_hasSelfdestruct;
40 };
41 
42 #endif /* _CARGOBODY_H */
nlohmann::json Json
Definition: Json.h:8
Definition: Body.h:57
Definition: Camera.h:80
Definition: CargoBody.h:15
LuaRef GetCargoType() const
Definition: CargoBody.h:22
virtual void SaveToJson(Json &jsonObj, Space *space) override
Definition: CargoBody.cpp:57
CargoBody()=delete
virtual void SetLabel(const std::string &label) override
Definition: CargoBody.cpp:145
virtual bool OnDamage(Body *attacker, float kgDamage, const CollisionContact &contactData) override
Definition: CargoBody.cpp:112
~CargoBody()
Definition: CargoBody.h:29
virtual void TimeStepUpdate(const float timeStep) override
Definition: CargoBody.cpp:92
OBJDEF(CargoBody, DynamicBody, CARGOBODY)
virtual bool OnCollision(Body *o, Uint32 flags, double relVel) override
Definition: CargoBody.cpp:126
virtual void Render(Graphics::Renderer *r, const Camera *camera, const vector3d &viewCoords, const matrix4x4d &viewTransform) override
Definition: CargoBody.cpp:140
Definition: DynamicBody.h:15
Definition: Renderer.h:44
Definition: LuaRef.h:12
Definition: Space.h:19
Definition: Background.h:14
Definition: CollisionContact.h:9