summaryrefslogtreecommitdiffstats
path: root/src/graphics/engine/pyro.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/graphics/engine/pyro.h')
-rw-r--r--src/graphics/engine/pyro.h135
1 files changed, 85 insertions, 50 deletions
diff --git a/src/graphics/engine/pyro.h b/src/graphics/engine/pyro.h
index d91b049..0204070 100644
--- a/src/graphics/engine/pyro.h
+++ b/src/graphics/engine/pyro.h
@@ -33,10 +33,13 @@
class CInstanceManager;
class CObject;
-class CDisplayText;
class CRobotMain;
class CSoundInterface;
+namespace Ui {
+class CDisplayText;
+}
+
// Graphics module namespace
namespace Gfx {
@@ -48,33 +51,37 @@ class CParticle;
class CLight;
+/**
+ * \enum PyroType
+ * \brief Type of pyro effect
+ */
enum PyroType
{
PT_NULL = 0,
- PT_FRAGT = 1, // fragmentation of technical object
- PT_FRAGO = 2, // fragmentation of organic object
- PT_FRAGW = 4, // fragmentation of object under water
- PT_EXPLOT = 5, // explosion of technical object
- PT_EXPLOO = 6, // explosion of organic object
- PT_EXPLOW = 8, // explosion of object under water
- PT_SHOTT = 9, // hit technical object
- PT_SHOTH = 10, // hit human
- PT_SHOTM = 11, // hit queen
- PT_SHOTW = 12, // hit under water
- PT_EGG = 13, // break the egg
- PT_BURNT = 14, // burning of technical object
- PT_BURNO = 15, // burning of organic object
- PT_SPIDER = 16, // spider explosion
- PT_FALL = 17, // cargo falling
- PT_WPCHECK = 18, // indicator reaches
- PT_FLCREATE = 19, // flag create
- PT_FLDELETE = 20, // flag destroy
- PT_RESET = 21, // reset position of the object
- PT_WIN = 22, // fireworks
- PT_LOST = 23, // black smoke
- PT_DEADG = 24, // shooting death
- PT_DEADW = 25, // drowning death
- PT_FINDING = 26, // object discovered
+ PT_FRAGT = 1, //! < fragmentation of technical object
+ PT_FRAGO = 2, //! < fragmentation of organic object
+ PT_FRAGW = 4, //! < fragmentation of object under water
+ PT_EXPLOT = 5, //! < explosion of technical object
+ PT_EXPLOO = 6, //! < explosion of organic object
+ PT_EXPLOW = 8, //! < explosion of object under water
+ PT_SHOTT = 9, //! < hit technical object
+ PT_SHOTH = 10, //! < hit human
+ PT_SHOTM = 11, //! < hit queen
+ PT_SHOTW = 12, //! < hit under water
+ PT_EGG = 13, //! < break the egg
+ PT_BURNT = 14, //! < burning of technical object
+ PT_BURNO = 15, //! < burning of organic object
+ PT_SPIDER = 16, //! < spider explosion
+ PT_FALL = 17, //! < cargo falling
+ PT_WPCHECK = 18, //! < indicator reaches
+ PT_FLCREATE = 19, //! < flag create
+ PT_FLDELETE = 20, //! < flag destroy
+ PT_RESET = 21, //! < reset position of the object
+ PT_WIN = 22, //! < fireworks
+ PT_LOST = 23, //! < black smoke
+ PT_DEADG = 24, //! < shooting death
+ PT_DEADW = 25, //! < drowning death
+ PT_FINDING = 26, //! < object discovered
};
@@ -89,8 +96,8 @@ struct PyroBurnPart
struct PyroLightOper
{
- float progress;
- float intensity;
+ float progress;
+ float intensity;
Color color;
};
@@ -99,7 +106,7 @@ struct PyroLightOper
* \class CPyro
* \brief Fire effect renderer
*
- * Functions are only stubs for now.
+ * TODO: documentation
*/
class CPyro
{
@@ -107,70 +114,98 @@ public:
CPyro(CInstanceManager* iMan);
~CPyro();
- void DeleteObject(bool all=false);
- bool Create(PyroType type, CObject* pObj, float force=1.0f);
- bool EventProcess(const Event &event);
+ //! Creates pyrotechnic effect
+ bool Create(PyroType type, CObject* obj, float force=1.0f);
+ //! Destroys the object
+ void DeleteObject();
+
+ //! Indicates whether the pyrotechnic effect is complete
Error IsEnded();
- void CutObjectLink(CObject* pObj);
+
+ //! Indicates that the object binds to the effect no longer exists, without deleting it
+ void CutObjectLink(CObject* obj);
+
+ //! Management of an event
+ bool EventProcess(const Event& event);
protected:
- void DisplayError(PyroType type, CObject* pObj);
- bool CreateLight(Math::Vector pos, float height);
+ //! Displays the error or eventual information
+ //! Information can be linked to the destruction of an insect, a vehicle or building
+ void DisplayError(PyroType type, CObject* obj);
+
+ //! Creates light to accompany a pyrotechnic effect
+ void CreateLight(Math::Vector pos, float height);
+ //! Removes the binding to a pyrotechnic effect
void DeleteObject(bool primary, bool secondary);
- void CreateTriangle(CObject* pObj, ObjectType oType, int part);
+ //! Creates an explosion with triangular form of particles
+ void CreateTriangle(CObject* obj, ObjectType type, int part);
+ //! Starts the explosion of a vehicle
void ExploStart();
+ //! Ends the explosion of a vehicle
void ExploTerminate();
+ //! Starts a vehicle fire
void BurnStart();
+ //! Adds a part move
void BurnAddPart(int part, Math::Vector pos, Math::Vector angle);
+ //! Advances of a vehicle fire
void BurnProgress();
+ //! Indicates whether a part should be retained
bool BurnIsKeepPart(int part);
+ //! Ends the fire of an insect or a vehicle
void BurnTerminate();
+ //! Start of an object freight falling
void FallStart();
+ //! Seeks an object to explode by the falling ball of bees
CObject* FallSearchBeeExplo();
+ //! Fall of an object's freight
void FallProgress(float rTime);
+ //! Indicates whether the fall is over
Error FallIsEnded();
+ //! Empty the table of operations of animation of light
void LightOperFlush();
+ //! Adds an animation operation of the light
void LightOperAdd(float progress, float intensity, float r, float g, float b);
+ //! Updates the associated light
void LightOperFrame(float rTime);
protected:
- CInstanceManager* m_iMan;
- CEngine* m_engine;
- CTerrain* m_terrain;
- CCamera* m_camera;
- CParticle* m_particule;
- CLightManager* m_lightMan;
- CObject* m_object;
- CDisplayText* m_displayText;
- CRobotMain* m_main;
- CSoundInterface* m_sound;
+ CInstanceManager* m_iMan;
+ CEngine* m_engine;
+ CTerrain* m_terrain;
+ CCamera* m_camera;
+ CParticle* m_particle;
+ CLightManager* m_lightMan;
+ CObject* m_object;
+ Ui::CDisplayText* m_displayText;
+ CRobotMain* m_main;
+ CSoundInterface* m_sound;
Math::Vector m_pos; // center of the effect
Math::Vector m_posPower; // center of the battery
bool m_power; // battery exists?
- PyroType m_type;
+ PyroType m_type;
float m_force;
float m_size;
float m_progress;
float m_speed;
float m_time;
- float m_lastParticule;
- float m_lastParticuleSmoke;
+ float m_lastParticle;
+ float m_lastParticleSmoke;
int m_soundChannel;
int m_lightRank;
int m_lightOperTotal;
- PyroLightOper m_lightOper[10];
+ PyroLightOper m_lightOper[10];
float m_lightHeight;
ObjectType m_burnType;
int m_burnPartTotal;
- PyroBurnPart m_burnPart[10];
+ PyroBurnPart m_burnPart[10];
int m_burnKeepPart[10];
float m_burnFall;