re3/src/render/Fluff.h

247 lines
4.9 KiB
C
Raw Normal View History

#pragma once
2019-07-10 11:36:47 +02:00
#include "common.h"
2019-08-16 20:17:15 +02:00
#include "Vector.h"
2020-07-30 05:47:24 +02:00
#include "Object.h"
2020-08-19 20:11:19 +02:00
#include "Plane.h"
enum {
SCRIPT_PATH_DISABLED = 0,
SCRIPT_PATH_INITIALIZED,
SCRIPT_PATH_ACTIVE
};
2020-07-19 00:37:44 +02:00
class CScriptPath
{
public:
2020-08-19 20:11:19 +02:00
int32 m_numNodes;
CPlaneNode *m_pNode;
float m_fTotalLength;
float m_fSpeed;
float m_fPosition;
float m_fObjectLength;
int32 m_state;
CObject *m_pObjects[6];
void Clear(void);
void Update(void);
2020-08-30 22:47:12 +02:00
void InitialiseOne(int32 numNodes, float length);
2020-08-19 20:11:19 +02:00
void FindCoorsFromDistanceOnPath(float t, float *pX, float *pY, float *pZ);
void SetObjectToControl(CObject *pObj);
2020-07-19 00:37:44 +02:00
};
class CScriptPaths
{
public:
2020-08-19 20:11:19 +02:00
static CScriptPath aArray[3];
static void Init(void);
static void Shutdown(void);
static void Update(void);
static bool IsOneActive(void);
static void Save(uint8 *buf, uint32 *size);
static void Load(uint8 *buf, uint32 size);
static void Save_ForReplay();
static void Load_ForReplay();
2020-07-19 00:37:44 +02:00
};
class CPlaneTrail
{
2020-07-20 19:31:59 +02:00
CVector m_pos[16];
int32 m_time[16];
2020-07-19 00:37:44 +02:00
public:
2020-07-20 19:31:59 +02:00
void Init(void);
void Render(float visibility);
void RegisterPoint(CVector pos);
2020-07-19 00:37:44 +02:00
};
class CPlaneTrails
{
2020-07-20 19:31:59 +02:00
static CPlaneTrail aArray[6]; // NB: 3 CPlanes and 3 hardcoded far away ones
2020-07-19 00:37:44 +02:00
public:
2020-07-20 19:31:59 +02:00
static void Init(void);
static void Update(void);
static void Render(void);
2020-07-19 00:37:44 +02:00
static void RegisterPoint(CVector pos, uint32 id);
};
class CPlaneBanner
{
2020-07-20 19:31:59 +02:00
CVector m_pos[8];
2020-07-19 00:37:44 +02:00
public:
2020-07-20 19:31:59 +02:00
void Init(void);
void Update(void);
void Render(void);
void RegisterPoint(CVector pos);
2020-07-19 00:37:44 +02:00
};
class CPlaneBanners
{
2020-07-20 19:31:59 +02:00
static CPlaneBanner aArray[5];
2020-07-19 00:37:44 +02:00
public:
2020-07-20 19:31:59 +02:00
static void Init(void);
static void Update(void);
static void Render(void);
2020-07-19 00:37:44 +02:00
static void RegisterPoint(CVector pos, uint32 id);
};
2020-07-30 05:47:24 +02:00
class CEscalator
2020-07-19 00:37:44 +02:00
{
2020-07-30 05:47:24 +02:00
CVector m_pos0;
CVector m_pos1;
CVector m_pos2;
CVector m_pos3;
CMatrix m_matrix;
bool m_bIsActive;
2020-07-30 05:47:24 +02:00
bool m_bIsMovingDown;
int32 m_stepsCount;
float m_lowerEnd;
float m_upperEnd;
CVector m_midPoint;
2020-07-30 05:47:24 +02:00
float m_radius;
CObject *m_pSteps[24];
2020-07-19 00:37:44 +02:00
public:
2020-07-30 05:47:24 +02:00
CEscalator();
void Update(void);
void SwitchOff(void);
void AddThisOne(CVector pos0, CVector pos1, CVector pos2, CVector pos3, bool b_isMovingDown);
2020-09-27 03:22:59 +02:00
bool IsActive() const { return m_bIsActive; };
const CVector& GetPosition() const { return m_midPoint; };
2020-07-19 00:37:44 +02:00
};
2020-07-30 05:47:24 +02:00
class CEscalators
2020-07-19 00:37:44 +02:00
{
static CEscalator aEscalators[NUM_ESCALATORS];
2020-07-19 00:37:44 +02:00
public:
2020-07-30 05:47:24 +02:00
static int32 NumEscalators;
static void Init(void);
static void Update(void);
static void AddOne(CVector pos0, CVector pos1, CVector pos2, CVector pos3, bool b_isMovingDown);
static void Shutdown(void);
2020-09-27 03:22:59 +02:00
static const CEscalator& GetEscalator(int ind) { return aEscalators[ind]; };
2020-07-19 00:37:44 +02:00
};
class CMovingThing
{
public:
CMovingThing *m_pNext;
CMovingThing *m_pPrev;
int16 m_nType;
int16 m_nHidden;
CVector m_vecPosn;
CEntity* m_pEntity;
void Update();
void AddToList(CMovingThing *pThing);
void RemoveFromList();
int16 SizeList();
};
#define NUMMOVINGTHINGS 128
class CMovingThings
{
public:
static CMovingThing StartCloseList;
static CMovingThing EndCloseList;
static int16 Num;
static CMovingThing aMovingThings[NUMMOVINGTHINGS];
2019-07-10 11:36:47 +02:00
static void Init();
static void Shutdown();
static void Update();
static void Render();
};
2019-07-10 11:36:47 +02:00
class CScrollBar
{
private:
uint8 m_Counter;
const char* m_pMessage;
CVector m_Position;
uint32 m_MessageCurrentChar;
uint32 m_MessageLength;
CVector m_Size;
float m_fIntensity;
uint8 m_MessageBar[40];
uint8 m_Type;
bool m_bVisible;
uint8 m_uRed;
uint8 m_uGreen;
uint8 m_uBlue;
float m_fScale;
2020-10-11 11:56:33 +02:00
public:
static int TonightsEvent;
2019-07-10 11:36:47 +02:00
public:
void SetVisibility(bool visible) { m_bVisible = visible; }
bool IsVisible() { return m_bVisible; }
void Init(CVector, uint8, float, float, float, uint8, uint8, uint8, float);
void Update();
void Render();
};
class CTowerClock
{
private:
CVector m_Position;
CVector m_Size;
float m_fDrawDistance;
float m_fScale;
uint8 m_uRed;
uint8 m_uGreen;
uint8 m_uBlue;
bool m_bVisible;
float m_fIntensity;
public:
void SetVisibility(bool visible) { m_bVisible = visible; }
bool IsVisible() { return m_bVisible; }
void Init(CVector, float, float, uint8, uint8, uint8, float, float);
void Update();
void Render();
};
class CDigitalClock
{
private:
CVector m_Position;
CVector m_Size;
float m_fDrawDistance;
float m_fScale;
uint8 m_uRed;
uint8 m_uGreen;
uint8 m_uBlue;
bool m_bVisible;
float m_fIntensity;
public:
void SetVisibility(bool visible) { m_bVisible = visible; }
bool IsVisible() { return m_bVisible; }
void Init(CVector, float, float, uint8, uint8, uint8, float, float);
void Update();
void Render();
};
class CSmokeTrail {
CVector m_pos[16];
2020-06-10 23:01:37 +02:00
float m_opacity[16];
int m_time[16];
char m_unused[536];
int m_seed;
public:
void Render(void);
void RegisterPoint(CVector position, float a);
void Init(int num);
};
class CSmokeTrails {
static CSmokeTrail aSmoke[3];
public:
static bool CigOn;
static void Update(void);
static void Render(void);
static void Init(void);
2019-07-10 11:36:47 +02:00
};