summaryrefslogtreecommitdiff
path: root/src/control/Record.h
diff options
context:
space:
mode:
authorclaude-bot <[email protected]>2026-07-13 12:27:07 +0000
committerclaude-bot <[email protected]>2026-07-13 12:27:07 +0000
commit9f61c9e6ac6b1ac5692cf6352d2ebbd47a31a686 (patch)
treea84756b82513739a2672db3a1f0ec579db6d18ff /src/control/Record.h
downloadre3-miami.tar.gz
re3-miami.zip
Import Cai1Hsu/re3 @ miami (reVC / GTA:VC decompilation)HEADmiami
Snapshot import (no upstream history) into git.ancap.in.ua/claude, per @lzcnt. Source: https://github.com/Cai1Hsu/re3 branch miami.
Diffstat (limited to 'src/control/Record.h')
-rw-r--r--src/control/Record.h104
1 files changed, 104 insertions, 0 deletions
diff --git a/src/control/Record.h b/src/control/Record.h
new file mode 100644
index 0000000..6a94c40
--- /dev/null
+++ b/src/control/Record.h
@@ -0,0 +1,104 @@
+#pragma once
+
+class CAutomobile;
+class CVehicle;
+class CControllerState;
+
+class CCarStateEachFrame
+{
+public:
+ int16 velX;
+ int16 velY;
+ int16 velZ;
+ int8 rightX;
+ int8 rightY;
+ int8 rightZ;
+ int8 forwardX;
+ int8 forwardY;
+ int8 forwardZ;
+ int8 wheel;
+ int8 gas;
+ int8 brake;
+ bool handbrake;
+ CVector pos;
+};
+
+extern char gString[256];
+
+class CRecordDataForChase
+{
+ enum {
+ NUM_CHASE_CARS = 20
+ };
+ enum {
+ STATE_NONE = 0,
+ STATE_RECORD = 1,
+ STATE_PLAYBACK_INIT = 2,
+ STATE_PLAYBACK = 3,
+ STATE_PLAYBACK_BEFORE_RECORDING = 4
+ };
+ static uint8 Status;
+ static int PositionChanges;
+ static uint8 CurrentCar;
+ static CAutomobile*pChaseCars[NUM_CHASE_CARS];
+ static float AnimTime;
+ static uint32 AnimStartTime;
+ static CCarStateEachFrame* pBaseMemForCar[NUM_CHASE_CARS];
+ static float TimeMultiplier;
+ static int FId2;
+public:
+
+ static bool IsRecording(void) { return Status == STATE_RECORD; }
+
+ static void Init(void);
+ static void SaveOrRetrieveDataForThisFrame(void);
+ static void SaveOrRetrieveCarPositions(void);
+ static void StoreInfoForCar(CAutomobile*, CCarStateEachFrame*);
+ static void RestoreInfoForMatrix(CMatrix&, CCarStateEachFrame*);
+ static void RestoreInfoForCar(CAutomobile*, CCarStateEachFrame*, bool);
+ static void ProcessControlCars(void);
+ static bool ShouldThisPadBeLeftAlone(uint8 pad);
+ static void GiveUsACar(int32, CVector, float, CAutomobile**, uint8, uint8);
+ static void StartChaseScene(float);
+ static void CleanUpChaseScene(void);
+ static void SetUpCarsForChaseScene(void);
+ static void CleanUpCarsForChaseScene(void);
+ static void RemoveCarFromChase(int32);
+ static CVehicle* TurnChaseCarIntoScriptCar(int32);
+
+};
+
+struct tGameBuffer
+{
+ float m_fTimeStep;
+ uint32 m_nTimeInMilliseconds;
+ uint8 m_nSizeOfPads[2];
+ uint16 m_nChecksum;
+ uint8 m_ControllerBuffer[116];
+};
+
+class CRecordDataForGame
+{
+ enum {
+ STATE_NONE = 0,
+ STATE_RECORD = 1,
+ STATE_PLAYBACK = 2,
+ };
+ static uint16 RecordingState;
+ static uint8* pDataBuffer;
+ static uint8* pDataBufferPointer;
+ static int FId;
+ static tGameBuffer pDataBufferForFrame;
+
+public:
+ static bool IsRecording() { return RecordingState == STATE_RECORD; }
+ static bool IsPlayingBack() { return RecordingState == STATE_PLAYBACK; }
+
+ static void SaveOrRetrieveDataForThisFrame(void);
+ static void Init(void);
+
+private:
+ static uint16 CalcGameChecksum(void);
+ static uint8* PackCurrentPadValues(uint8*, CControllerState*, CControllerState*);
+ static uint8* UnPackCurrentPadValues(uint8*, uint8, CControllerState*);
+};