summaryrefslogtreecommitdiff
path: root/src/control/AutoPilot.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/AutoPilot.h
downloadre3-9f61c9e6ac6b1ac5692cf6352d2ebbd47a31a686.tar.gz
re3-9f61c9e6ac6b1ac5692cf6352d2ebbd47a31a686.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/AutoPilot.h')
-rw-r--r--src/control/AutoPilot.h137
1 files changed, 137 insertions, 0 deletions
diff --git a/src/control/AutoPilot.h b/src/control/AutoPilot.h
new file mode 100644
index 0000000..ec3bb8d
--- /dev/null
+++ b/src/control/AutoPilot.h
@@ -0,0 +1,137 @@
+#pragma once
+#include "Timer.h"
+
+class CVehicle;
+struct CPathNode;
+
+enum eCarMission
+{
+ MISSION_NONE,
+ MISSION_CRUISE,
+ MISSION_RAMPLAYER_FARAWAY,
+ MISSION_RAMPLAYER_CLOSE,
+ MISSION_BLOCKPLAYER_FARAWAY,
+ MISSION_BLOCKPLAYER_CLOSE,
+ MISSION_BLOCKPLAYER_HANDBRAKESTOP,
+ MISSION_WAITFORDELETION,
+ MISSION_GOTOCOORDS,
+ MISSION_GOTOCOORDS_STRAIGHT,
+ MISSION_EMERGENCYVEHICLE_STOP,
+ MISSION_STOP_FOREVER,
+ MISSION_GOTOCOORDS_ACCURATE,
+ MISSION_GOTO_COORDS_STRAIGHT_ACCURATE,
+ MISSION_GOTOCOORDS_ASTHECROWSWIMS,
+ MISSION_RAMCAR_FARAWAY,
+ MISSION_RAMCAR_CLOSE,
+ MISSION_BLOCKCAR_FARAWAY,
+ MISSION_BLOCKCAR_CLOSE,
+ MISSION_BLOCKCAR_HANDBRAKESTOP,
+ MISSION_HELI_FLYTOCOORS,
+ MISSION_ATTACKPLAYER,
+ MISSION_PLANE_FLYTOCOORS,
+ MISSION_HELI_LAND,
+ MISSION_SLOWLY_DRIVE_TOWARDS_PLAYER_1,
+ MISSION_SLOWLY_DRIVE_TOWARDS_PLAYER_2,
+ MISSION_BLOCKPLAYER_FORWARDANDBACK
+};
+
+enum eCarTempAction
+{
+ TEMPACT_NONE,
+ TEMPACT_WAIT,
+ TEMPACT_REVERSE,
+ TEMPACT_HANDBRAKETURNLEFT,
+ TEMPACT_HANDBRAKETURNRIGHT,
+ TEMPACT_HANDBRAKESTRAIGHT,
+ TEMPACT_TURNLEFT,
+ TEMPACT_TURNRIGHT,
+ TEMPACT_GOFORWARD,
+ TEMPACT_SWERVELEFT,
+ TEMPACT_SWERVERIGHT
+};
+
+enum eCarDrivingStyle
+{
+ DRIVINGSTYLE_STOP_FOR_CARS,
+ DRIVINGSTYLE_SLOW_DOWN_FOR_CARS,
+ DRIVINGSTYLE_AVOID_CARS,
+ DRIVINGSTYLE_PLOUGH_THROUGH,
+ DRIVINGSTYLE_STOP_FOR_CARS_IGNORE_LIGHTS
+};
+
+class CAutoPilot {
+public:
+ int32 m_nCurrentRouteNode;
+ int32 m_nNextRouteNode;
+ int32 m_nPrevRouteNode;
+ int32 m_nTimeEnteredCurve;
+ int32 m_nTimeToSpendOnCurrentCurve;
+ uint32 m_nCurrentPathNodeInfo;
+ uint32 m_nNextPathNodeInfo;
+ uint32 m_nPreviousPathNodeInfo;
+ uint32 m_nAntiReverseTimer;
+ uint32 m_nTimeToStartMission;
+ int8 m_nPreviousDirection;
+ int8 m_nCurrentDirection;
+ int8 m_nNextDirection;
+ int8 m_nCurrentLane;
+ int8 m_nNextLane;
+ uint8 m_nDrivingStyle;
+ uint8 m_nCarMission;
+ uint8 m_nTempAction;
+ uint32 m_nTimeTempAction;
+ float m_fMaxTrafficSpeed;
+ uint8 m_nCruiseSpeed;
+ uint8 m_nCruiseSpeedMultiplierType;
+ float m_fCruiseSpeedMultiplier;
+ uint8 m_bSlowedDownBecauseOfCars : 1;
+ uint8 m_bSlowedDownBecauseOfPeds : 1;
+ uint8 m_bStayInCurrentLevel : 1;
+ uint8 m_bStayInFastLane : 1;
+ uint8 m_bIgnorePathfinding : 1;
+ uint8 m_nSwitchDistance;
+ CVector m_vecDestinationCoors;
+ CPathNode *m_aPathFindNodesInfo[NUM_PATH_NODES_IN_AUTOPILOT];
+ int16 m_nPathFindNodesCount;
+ CVehicle *m_pTargetCar;
+
+ CAutoPilot(void) {
+ m_nPrevRouteNode = 0;
+ m_nNextRouteNode = m_nPrevRouteNode;
+ m_nCurrentRouteNode = m_nNextRouteNode;
+ m_nTimeEnteredCurve = 0;
+ m_nTimeToSpendOnCurrentCurve = 1000;
+ m_nPreviousPathNodeInfo = 0;
+ m_nNextPathNodeInfo = m_nPreviousPathNodeInfo;
+ m_nCurrentPathNodeInfo = m_nNextPathNodeInfo;
+ m_nNextDirection = 1;
+ m_nCurrentDirection = m_nNextDirection;
+ m_nCurrentLane = m_nNextLane = 0;
+ m_nDrivingStyle = DRIVINGSTYLE_STOP_FOR_CARS;
+ m_nCarMission = MISSION_NONE;
+ m_nTempAction = TEMPACT_NONE;
+ m_nCruiseSpeed = 10;
+ m_fMaxTrafficSpeed = 10.0f;
+ m_bSlowedDownBecauseOfPeds = false;
+ m_bSlowedDownBecauseOfCars = false;
+ m_nPathFindNodesCount = 0;
+ m_pTargetCar = 0;
+ m_nTimeToStartMission = CTimer::GetTimeInMilliseconds();
+ m_nAntiReverseTimer = m_nTimeToStartMission;
+ m_bStayInFastLane = false;
+ m_nCruiseSpeedMultiplierType = 0;
+ m_fCruiseSpeedMultiplier = 1.0f;
+ }
+
+ void ModifySpeed(float);
+ void RemoveOnePathNode();
+#ifdef COMPATIBLE_SAVES
+ void Save(uint8*& buf);
+ void Load(uint8*& buf);
+#endif
+
+ float GetCruiseSpeed(void) { return m_nCruiseSpeed * m_fCruiseSpeedMultiplier; }
+
+};
+
+VALIDATE_SIZE(CAutoPilot, 0x70);