summaryrefslogtreecommitdiff
path: root/src/render/WaterCreatures.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/render/WaterCreatures.h')
-rw-r--r--src/render/WaterCreatures.h49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/render/WaterCreatures.h b/src/render/WaterCreatures.h
new file mode 100644
index 00000000..b935b11d
--- /dev/null
+++ b/src/render/WaterCreatures.h
@@ -0,0 +1,49 @@
+#pragma once
+#include "Object.h"
+
+enum {
+ WATER_CREATURE_ALLOCATED = 0,
+ WATER_CREATURE_ACTIVE,
+ WATER_CREATURE_UPDATE,
+ WATER_CREATURE_TO_REMOVE,
+ WATER_CREATURE_DISABLED
+};
+
+class CWaterCreature {
+public:
+ CObject *m_pObj;
+ float m_fRightMult;
+ float m_fZTurnSpeed;
+ int32 m_alpha;
+ float m_fWaterDepth;
+ int32 m_state;
+
+ CWaterCreature();
+ ~CWaterCreature();
+ void Allocate(CObject *pObj, float fRightMult, float fZTurnSpeed, float fWaterDepth, uint32 alpha, int eFishSlotState);
+ void Free();
+ void Initialise(CObject *pObj, float fRightMult, float fZTurnSpeed, float fWaterDepth, uint32 alpha, int eFishSlotState);
+};
+
+class CWaterCreatures {
+
+public:
+ static CWaterCreature aWaterCreatures[NUM_WATER_CREATURES];
+ static int32 nNumActiveSeaLifeForms;
+ static CObject *CreateSeaLifeForm(CVector pos, int16 modelID, float zRotAngle);
+ static void CreateOne(CVector pos, int16 modelID);
+ static void UpdateAll();
+ static void FreeFishStructSlot(CWaterCreature *wc);
+ static bool IsSpaceForMoreWaterCreatures();
+ static float CalculateFishHeading(CVector const& pos1, CVector const& pos2);
+ static void RemoveAll();
+ static CWaterCreature* GetFishStructSlot();
+};
+
+struct WaterCreatureProperties {
+ int16 *modelID;
+ float fRightMult;
+ float fLevel;
+ float fUnk2;
+ float fWaterDepth;
+}; \ No newline at end of file