mirror of
https://github.com/GTAmodding/re3.git
synced 2025-02-22 21:24:52 +00:00
179 lines
5.1 KiB
C++
179 lines
5.1 KiB
C++
#pragma once
|
|
#include "CutsceneObject.h"
|
|
|
|
|
|
class CDirectory;
|
|
class CAnimBlendAssocGroup;
|
|
class CCutsceneHead;
|
|
|
|
enum {
|
|
CUTSCENE_NOT_LOADED = 0,
|
|
CUTSCENE_LOADING,
|
|
CUTSCENE_LOADED,
|
|
};
|
|
|
|
enum {
|
|
CUTSCENE_PLAYING_0 = 0,
|
|
CUTSCENE_STARTED,
|
|
CUTSCENE_PLAYING_2,
|
|
CUTSCENE_PLAYING_3,
|
|
CUTSCENE_PLAYING_4,
|
|
};
|
|
|
|
enum
|
|
{
|
|
NAMELENGTH = 32,
|
|
NUM_CUTS_PARTICLE_EFFECTS = 8,
|
|
NUM_CUTS_MAX_TEXTS = 64,
|
|
NUM_CUTS_UNCOMPRESSED_ANIMS = 8,
|
|
TEXT_KEY_SIZE = 8,
|
|
CUTSCENENAMESIZE = 8
|
|
};
|
|
|
|
struct sToHideItem
|
|
{
|
|
float x, y, z;
|
|
char name[NAMELENGTH];
|
|
};
|
|
|
|
// TODO: figure out from SA
|
|
// this is unused in LCS anyway
|
|
struct sParticleEffect
|
|
{
|
|
char name[NAMELENGTH];
|
|
bool bPlayed; // ??
|
|
int iTime;
|
|
int unk1;
|
|
int unk2;
|
|
char name2[NAMELENGTH];
|
|
float x;
|
|
float y;
|
|
float z;
|
|
float unkX;
|
|
float unkY;
|
|
float unkZ;
|
|
bool unk10;
|
|
bool unk11;
|
|
};
|
|
|
|
struct sAttachInfo
|
|
{
|
|
int attachToId, objectId, boneId;
|
|
};
|
|
|
|
class CCutsceneMgr
|
|
{
|
|
|
|
static bool ms_running;
|
|
static CCutsceneObject *ms_pCutsceneObjects[NUMCUTSCENEOBJECTS];
|
|
|
|
static int32 ms_numCutsceneObjs;
|
|
static bool ms_loaded;
|
|
static bool ms_animLoaded;
|
|
static bool ms_useLodMultiplier;
|
|
|
|
static char ms_cutsceneName[CUTSCENENAMESIZE];
|
|
static CAnimBlendAssocGroup ms_cutsceneAssociations;
|
|
static CVector ms_cutsceneOffset;
|
|
static float ms_cutsceneTimer;
|
|
static bool ms_wasCutsceneSkipped;
|
|
static bool ms_cutsceneProcessing;
|
|
static bool ms_useCutsceneShadows;
|
|
static bool ms_hasFileInfo;
|
|
static int ms_numLoadObjectNames;
|
|
|
|
static char ms_cAppendAnimName[NUMCUTSCENEOBJECTS][NAMELENGTH];
|
|
static char ms_cAppendObjectName[NUMCUTSCENEOBJECTS][NAMELENGTH];
|
|
static int ms_numAppendObjectNames;
|
|
public:
|
|
static CDirectory *ms_pCutsceneDir;
|
|
static uint32 ms_cutsceneLoadStatus;
|
|
|
|
static bool mCutsceneSkipFading;
|
|
static int mCutsceneSkipFadeTime;
|
|
|
|
static float m_fPrevCarDensity;
|
|
static float m_fPrevPedDensity;
|
|
|
|
static bool m_PrevExtraColourOn;
|
|
static uint32 m_PrevExtraColour;
|
|
|
|
static uint32 ms_iNumParticleEffects;
|
|
static sParticleEffect ms_pParticleEffects[NUM_CUTS_PARTICLE_EFFECTS];
|
|
|
|
static sToHideItem ms_crToHideItems[NUMCUTSCENEOBJECTS];
|
|
static uint32 ms_iNumHiddenEntities;
|
|
static CEntity *ms_pHiddenEntities[NUMCUTSCENEOBJECTS];
|
|
|
|
static int ms_numAttachObjectToBones;
|
|
static bool ms_bRepeatObject[NUMCUTSCENEOBJECTS];
|
|
|
|
static sAttachInfo ms_iAttachObjectToBone[NUMCUTSCENEOBJECTS];
|
|
|
|
static uint32 ms_numUncompressedCutsceneAnims;
|
|
|
|
static char ms_aUncompressedCutsceneAnims[NUM_CUTS_UNCOMPRESSED_ANIMS][NAMELENGTH];
|
|
|
|
static uint32 ms_iTextDuration[NUM_CUTS_MAX_TEXTS];
|
|
static uint32 ms_iTextStartTime[NUM_CUTS_MAX_TEXTS];
|
|
static char ms_cTextOutput[NUM_CUTS_MAX_TEXTS][TEXT_KEY_SIZE];
|
|
|
|
static uint32 ms_currTextOutput;
|
|
static uint32 ms_numTextOutput;
|
|
static uint32 ms_iModelIndex[NUMCUTSCENEOBJECTS];
|
|
|
|
static char ms_cLoadAnimName[NUMCUTSCENEOBJECTS][NAMELENGTH];
|
|
static char ms_cLoadObjectName[NUMCUTSCENEOBJECTS][NAMELENGTH];
|
|
|
|
static uint32 ms_cutscenePlayStatus;
|
|
|
|
static void StartCutscene();
|
|
static void StartCutsceneProcessing() { ms_cutsceneProcessing = true; }
|
|
static bool IsRunning(void) { return ms_running; }
|
|
static bool HasLoaded(void) { return ms_loaded; }
|
|
static bool IsCutsceneProcessing(void) { return ms_cutsceneProcessing; }
|
|
static bool WasCutsceneSkipped(void) { return ms_wasCutsceneSkipped; }
|
|
static bool UseLodMultiplier(void) { return ms_useLodMultiplier; }
|
|
static CCutsceneObject* GetCutsceneObject(int id) { return ms_pCutsceneObjects[id]; }
|
|
static uint32 GetCutsceneTimeInMilleseconds(void);
|
|
static char *GetCutsceneName(void) { return ms_cutsceneName; }
|
|
static void SetCutsceneOffset(const CVector& vec) { ms_cutsceneOffset = vec; }
|
|
static bool HasCutsceneFinished(void);
|
|
|
|
static void Initialise(void *dir = nil);
|
|
static void Shutdown(void);
|
|
static void LoadCutsceneData(const char *szCutsceneName);
|
|
static void FinishCutscene(void);
|
|
static void SetupCutsceneToStart(void);
|
|
static void SetCutsceneAnim(const char *animName, CObject *pObject);
|
|
static void SetCutsceneAnimToLoop(const char *animName);
|
|
static CCutsceneHead *SetHeadAnim(const char*, CObject *pObject);
|
|
static CCutsceneObject *CreateCutsceneObject(int modelId);
|
|
static void DeleteCutsceneData(void);
|
|
static void LoadAnimationUncompressed(char const*);
|
|
static void Update(void);
|
|
|
|
static void AttachObjectToParent(CObject *pObject, CEntity *pAttachTo);
|
|
static void AttachObjectToFrame(CObject *pObject, CEntity *pAttachTo, const char *frame);
|
|
static void AttachObjectToBone(CObject *pObject, CObject *pAttachTo, int frame);
|
|
static void RemoveEverythingBecauseCutsceneDoesntFitInMemory();
|
|
static void LoadEverythingBecauseCutsceneDeletedAllOfIt();
|
|
static void DisableCutsceneShadows() { ms_useCutsceneShadows = false; }
|
|
|
|
|
|
static void LoadCutsceneData_overlay(const char* szCutsceneName);
|
|
static bool LoadCutsceneData_postload(bool b = false);
|
|
static void Update_overlay(void);
|
|
static void DeleteCutsceneData_overlay(void);
|
|
|
|
static bool IsCutsceneSkipButtonBeingPressed();
|
|
static void AppendToNextCutscene(const char *object, const char *anim);
|
|
|
|
static void LoadCutsceneData_preload();
|
|
static void LoadCutsceneData_loading();
|
|
static void HideRequestedObjects();
|
|
|
|
static bool PresubBodge();
|
|
|
|
static void Write(base::cRelocatableChunkWriter& writer);
|
|
};
|