summaryrefslogtreecommitdiffstats
path: root/src/control/PathFind.h
diff options
context:
space:
mode:
authorNikolay Korolev <nickvnuk@gmail.com>2020-05-05 19:22:17 +0200
committerNikolay Korolev <nickvnuk@gmail.com>2020-05-05 19:22:17 +0200
commitf45ea0a1cf5ab2c46e53d3e352cb3a5b0ded1b80 (patch)
treedc15134e54afea71e397a16ab828a0a73edc0ea9 /src/control/PathFind.h
parentsome more miami (diff)
parentsome miami limits (diff)
downloadre3-f45ea0a1cf5ab2c46e53d3e352cb3a5b0ded1b80.tar
re3-f45ea0a1cf5ab2c46e53d3e352cb3a5b0ded1b80.tar.gz
re3-f45ea0a1cf5ab2c46e53d3e352cb3a5b0ded1b80.tar.bz2
re3-f45ea0a1cf5ab2c46e53d3e352cb3a5b0ded1b80.tar.lz
re3-f45ea0a1cf5ab2c46e53d3e352cb3a5b0ded1b80.tar.xz
re3-f45ea0a1cf5ab2c46e53d3e352cb3a5b0ded1b80.tar.zst
re3-f45ea0a1cf5ab2c46e53d3e352cb3a5b0ded1b80.zip
Diffstat (limited to 'src/control/PathFind.h')
-rw-r--r--src/control/PathFind.h116
1 files changed, 1 insertions, 115 deletions
diff --git a/src/control/PathFind.h b/src/control/PathFind.h
index d2799f87..73bce325 100644
--- a/src/control/PathFind.h
+++ b/src/control/PathFind.h
@@ -9,9 +9,6 @@ enum
{
NodeTypeExtern = 1,
NodeTypeIntern = 2,
-
- UseInRoadBlock = 1,
- ObjectEastWest = 2,
};
enum
@@ -55,33 +52,6 @@ public:
struct CPathNode
{
-#ifndef MIAMI
- CVector pos;
- CPathNode *prev;
- CPathNode *next;
- int16 distance; // in path search
- int16 objectIndex;
- int16 firstLink;
- uint8 numLinks;
-
- uint8 unkBits : 2;
- uint8 bDeadEnd : 1;
- uint8 bDisabled : 1;
- uint8 bBetweenLevels : 1;
-
- int8 group;
-
- CVector &GetPosition(void) { return pos; }
- void SetPosition(const CVector &p) { pos = p; }
- float GetX(void) { return pos.x; }
- float GetY(void) { return pos.y; }
- float GetZ(void) { return pos.z; }
-
- CPathNode *GetPrev(void) { return prev; }
- CPathNode *GetNext(void) { return next; }
- void SetPrev(CPathNode *node) { prev = node; }
- void SetNext(CPathNode *node) { next = node; }
-#else
int16 prevIndex;
int16 nextIndex;
int16 x;
@@ -118,7 +88,6 @@ struct CPathNode
CPathNode *GetNext(void);
void SetPrev(CPathNode *node);
void SetNext(CPathNode *node);
-#endif
};
union CConnectionFlags
@@ -132,24 +101,6 @@ union CConnectionFlags
struct CCarPathLink
{
-#ifndef MIAMI
- CVector2D pos;
- CVector2D dir;
- int16 pathNodeIndex;
- int8 numLeftLanes;
- int8 numRightLanes;
- uint8 trafficLightType;
-
- uint8 bBridgeLights : 1;
- // more?
-
- CVector2D &GetPosition(void) { return pos; }
- CVector2D &GetDirection(void) { return dir; }
- float GetX(void) { return pos.x; }
- float GetY(void) { return pos.y; }
- float GetDirX(void) { return dir.x; }
- float GetDirY(void) { return dir.y; }
-#else
int16 x;
int16 y;
int16 pathNodeIndex;
@@ -168,7 +119,6 @@ struct CCarPathLink
float GetY(void) { return y/8.0f; }
float GetDirX(void) { return dirX/100.0f; }
float GetDirY(void) { return dirY/100.0f; }
-#endif
float OneWayLaneOffset()
{
@@ -183,16 +133,6 @@ struct CCarPathLink
// This is what we're reading from the files, only temporary
struct CPathInfoForObject
{
-#ifndef MIAMI
- int16 x;
- int16 y;
- int16 z;
- int8 type;
- int8 next;
- int8 numLeftLanes;
- int8 numRightLanes;
- uint8 crossing : 1;
-#else
float x;
float y;
float z;
@@ -213,7 +153,6 @@ struct CPathInfoForObject
uint8 spawnRate : 4;
void SwapConnectionsToBeRightWayRound(void);
-#endif
};
extern CPathInfoForObject *InfoForTileCars;
extern CPathInfoForObject *InfoForTilePeds;
@@ -221,15 +160,6 @@ extern CPathInfoForObject *InfoForTilePeds;
struct CTempNode
{
CVector pos;
-#ifndef MIAMI
- float dirX;
- float dirY;
- int16 link1;
- int16 link2;
- int8 numLeftLanes;
- int8 numRightLanes;
- int8 linkState;
-#else
int8 dirX; // *100
int8 dirY;
int16 link1;
@@ -239,10 +169,8 @@ struct CTempNode
int8 width;
bool isCross;
int8 linkState;
-#endif
};
-#ifdef MIAMI
struct CTempNodeExternal // made up name
{
CVector pos;
@@ -252,14 +180,6 @@ struct CTempNodeExternal // made up name
int8 width;
bool isCross;
};
-#endif
-
-#ifndef MIAMI
-struct CTempDetachedNode // unused
-{
- uint8 foo[20];
-};
-#endif
class CPathFind
{
@@ -267,15 +187,8 @@ public:
CPathNode m_pathNodes[NUM_PATHNODES];
CCarPathLink m_carPathLinks[NUM_CARPATHLINKS];
CTreadable *m_mapObjects[NUM_MAPOBJECTS];
-#ifndef MIAMI
- uint8 m_objectFlags[NUM_MAPOBJECTS];
- int16 m_connections[NUM_PATHCONNECTIONS];
- int16 m_distances[NUM_PATHCONNECTIONS];
- CConnectionFlags m_connectionFlags[NUM_PATHCONNECTIONS];
-#else
uint16 m_connections[NUM_PATHCONNECTIONS]; // and flags
uint8 m_distances[NUM_PATHCONNECTIONS];
-#endif
int16 m_carPathConnections[NUM_PATHCONNECTIONS];
int32 m_numPathNodes;
@@ -293,20 +206,12 @@ public:
void RegisterMapObject(CTreadable *mapObject);
void StoreNodeInfoPed(int16 id, int16 node, int8 type, int8 next, int16 x, int16 y, int16 z, int16 width, bool crossing);
void StoreNodeInfoCar(int16 id, int16 node, int8 type, int8 next, int16 x, int16 y, int16 z, int16 width, int8 numLeft, int8 numRight);
-#ifndef MIAMI
- void CalcNodeCoors(int16 x, int16 y, int16 z, int32 id, CVector *out);
-#else
void CalcNodeCoors(float x, float y, float z, int32 id, CVector *out);
-#endif
bool LoadPathFindData(void);
void PreparePathData(void);
void CountFloodFillGroups(uint8 type);
void PreparePathDataForType(uint8 type, CTempNode *tempnodes, CPathInfoForObject *objectpathinfo,
-#ifndef MIAMI
- float maxdist, CTempDetachedNode *detachednodes, int32 numDetached);
-#else
float maxdist, CPathInfoForObject *detachednodes, int32 numDetached);
-#endif
bool IsPathObject(int id) { return id < PATHNODESIZE && (InfoForTileCars[id*12].type != 0 || InfoForTilePeds[id*12].type != 0); }
@@ -324,27 +229,19 @@ public:
void MarkRoadsBetweenLevelsNodeAndNeighbours(int32 nodeId);
void MarkRoadsBetweenLevelsInArea(float x1, float x2, float y1, float y2, float z1, float z2);
void PedMarkRoadsBetweenLevelsInArea(float x1, float x2, float y1, float y2, float z1, float z2);
-#ifndef MIAMI
- int32 FindNodeClosestToCoors(CVector coors, uint8 type, float distLimit, bool ignoreDisabled = false, bool ignoreBetweenLevels = false);
-#else
-//--MIAMI: TODO: check callers for new arguments
+// TODO(MIAMI): check callers for new arguments
int32 FindNodeClosestToCoors(CVector coors, uint8 type, float distLimit, bool ignoreDisabled = false, bool ignoreBetweenLevels = false, bool ignoreFlagB4 = false, bool bWaterPath = false);
-#endif
int32 FindNodeClosestToCoorsFavourDirection(CVector coors, uint8 type, float dirX, float dirY);
float FindNodeOrientationForCarPlacement(int32 nodeId);
float FindNodeOrientationForCarPlacementFacingDestination(int32 nodeId, float x, float y, bool towards);
bool NewGenerateCarCreationCoors(float x, float y, float dirX, float dirY, float spawnDist, float angleLimit, bool forward, CVector *pPosition, int32 *pNode1, int32 *pNode2, float *pPositionBetweenNodes, bool ignoreDisabled = false);
bool GeneratePedCreationCoors(float x, float y, float minDist, float maxDist, float minDistOffScreen, float maxDistOffScreen, CVector *pPosition, int32 *pNode1, int32 *pNode2, float *pPositionBetweenNodes, CMatrix *camMatrix);
-#ifndef MIAMI
- CTreadable *FindRoadObjectClosestToCoors(CVector coors, uint8 type);
-#endif
void FindNextNodeWandering(uint8, CVector, CPathNode**, CPathNode**, uint8, uint8*);
void DoPathSearch(uint8 type, CVector start, int32 startNodeId, CVector target, CPathNode **nodes, int16 *numNodes, int16 maxNumNodes, CVehicle *vehicle, float *dist, float distLimit, int32 forcedTargetNode);
bool TestCoorsCloseness(CVector target, uint8 type, CVector start);
void Save(uint8 *buf, uint32 *size);
void Load(uint8 *buf, uint32 size);
-#ifdef MIAMI
CPathNode *GetNode(int16 index);
int16 GetIndex(CPathNode *node);
@@ -352,27 +249,16 @@ public:
bool ConnectionCrossesRoad(int id) { return !!(m_connections[id] & 0x8000); }
bool ConnectionHasTrafficLight(int id) { return !!(m_connections[id] & 0x4000); }
void ConnectionSetTrafficLight(int id) { m_connections[id] |= 0x4000; }
-#else
- uint16 ConnectedNode(int id) { return m_connections[id]; }
- bool ConnectionCrossesRoad(int id) { return m_connectionFlags[id].bCrossesRoad; }
- bool ConnectionHasTrafficLight(int id) { return m_connectionFlags[id].bTrafficLight; }
- void ConnectionSetTrafficLight(int id) { m_connectionFlags[id].bTrafficLight = true; }
-#endif
void DisplayPathData(void);
};
-#ifndef MIAMI
-static_assert(sizeof(CPathFind) == 0x49bf4, "CPathFind: error");
-#endif
extern CPathFind ThePaths;
-#ifdef MIAMI
inline CPathNode *CPathNode::GetPrev(void) { return ThePaths.GetNode(prevIndex); }
inline CPathNode *CPathNode::GetNext(void) { return ThePaths.GetNode(nextIndex); }
inline void CPathNode::SetPrev(CPathNode *node) { prevIndex = ThePaths.GetIndex(node); }
inline void CPathNode::SetNext(CPathNode *node) { nextIndex = ThePaths.GetIndex(node); }
-#endif
extern bool gbShowPedPaths;
extern bool gbShowCarPaths;