22 #ifndef MACS2_PATHFINDING_H 23 #define MACS2_PATHFINDING_H 25 #include "common/array.h" 26 #include "common/rect.h" 27 #include "graphics/managed_surface.h" 28 #include "macs2/macs2_constants.h" 34 static constexpr uint16 AREA_OVERRIDE_MIN = 200;
35 static constexpr uint16 AREA_OVERRIDE_MAX = 239;
36 static constexpr uint16 AREA_OVERRIDE_COUNT = AREA_OVERRIDE_MAX - AREA_OVERRIDE_MIN + 1;
47 uint16 _overrideValue = 0;
62 uint16 _areaOverrides[AREA_OVERRIDE_COUNT] = {0};
63 uint16 _numPoints = 0;
65 void createMap(
int width,
int height);
66 void clearWalkOverrides();
67 void clearAreaOverrides();
71 static inline bool isWalkabilityBlocking(uint16 value) {
72 return (int16)value >= 0xC8;
74 static inline bool isWalkabilityWalkable(uint16 value) {
75 return (int16)value < 0xC8;
78 uint16 walkabilityAt(int16 y, int16 x)
const;
80 uint16 areaAt(uint16 x, uint16 y)
const;
82 bool getWalkOverride(uint16 index, uint16 &result)
const;
83 void setWalkOverride(uint16 index, uint16 overrideValue);
84 void removeWalkOverride(uint16 index);
86 bool isLineWalkable(int16 y1, int16 x1, int16 y2, int16 x2)
const;
87 void snapToWalkable(int16 *pTargetY, int16 *pTargetX, int16 charY, int16 charX)
const;
89 int nodeCount()
const {
return (
int)_numPoints; }
91 int walkableDistance(
int nodeA,
int nodeB)
const;
96 int _visitedStack[17] {};
97 int _visitedCount = 0;
98 uint16 areaOverrideAt(uint16 index)
const;
100 int computeMinCostToReachable(
int nodeIndex,
int prevNode,
const bool *reachable,
int nodeCount,
const Common::Point &finalDest);
101 bool canNodeConnectSourceToTarget(uint16 nodeIndex,
const Common::Point &charPos,
const Common::Point &target,
const bool *reachable,
int nodeCount)
const;
102 void floodFillConnectedNodes(
int nodeIndex,
bool *visited,
int nodeCount)
const;
Definition: managed_surface.h:51
Definition: pathfinding.h:44
Definition: pathfinding.h:57
Definition: actionbar.h:31
Definition: pathfinding.h:50
Definition: pathfinding.h:38