From 4918c0319a2c2f6903a685a5d76057ec9b6e5c85 Mon Sep 17 00:00:00 2001 From: Katja Date: Thu, 6 Jun 2024 02:31:02 +0200 Subject: [PATCH] Merged unit info into Node. --- src/MultilevelAStarEx.cpp | 17 ++++++++--------- src/MultilevelAStarEx.h | 3 ++- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/MultilevelAStarEx.cpp b/src/MultilevelAStarEx.cpp index de07a78..a5a3b73 100644 --- a/src/MultilevelAStarEx.cpp +++ b/src/MultilevelAStarEx.cpp @@ -7,7 +7,6 @@ #include #define TERRAIN(x, y) (_terrain[(x) + (y) * _width]) -#define UNITS(x, y) (_units[(x) + (y) * _width]) #define NODES(x, y) (_nodes[(x) + (y) * _width]) using namespace godot; @@ -15,14 +14,15 @@ using namespace godot; static const int STRAIGHT_DISTANCE = 10; static const int DIAGONAL_DISTANCE = 14; -Node::Node() +Node::Node() { } + +Node::Node(int x, int y) { + this->hasUnit = false; + this->openPass = 0; this->closedPass = 0; -} -Node::Node(int x, int y) : Node() -{ this->x = x; this->y = y; } @@ -153,7 +153,6 @@ void MultilevelAStarEx::init(const Rect2i ®ion) _trans = region.get_position(); _terrain.resize(_width * _height, BLOCKED); - _units.resize(_width * _height, false); _nodes.resize(_width * _height); std::vector::iterator iter = _nodes.begin(); @@ -199,7 +198,7 @@ void MultilevelAStarEx::set_unit(const Vector2i &cell, bool blocked) DEV_ASSERT(_region.has_point(cell)); Vector2i cell2 = cell - _trans; - UNITS(cell2.x, cell2.y) = blocked; + NODES(cell2.x, cell2.y).hasUnit = blocked; } bool MultilevelAStarEx::get_unit(const Vector2i &cell) const @@ -208,12 +207,12 @@ bool MultilevelAStarEx::get_unit(const Vector2i &cell) const DEV_ASSERT(_region.has_point(cell)); Vector2i cell2 = cell - _trans; - return UNITS(cell2.x, cell2.y); + return NODES(cell2.x, cell2.y).hasUnit; } bool MultilevelAStarEx::can_move(const Node *current, int x, int y) const { - if (UNITS(x, y)) return false; + if (NODES(x, y).hasUnit) return false; TerrainType tc = TERRAIN(current->x, current->y); TerrainType td = TERRAIN(x, y); diff --git a/src/MultilevelAStarEx.h b/src/MultilevelAStarEx.h index 16b0bf6..6da2eba 100644 --- a/src/MultilevelAStarEx.h +++ b/src/MultilevelAStarEx.h @@ -20,6 +20,8 @@ public: }; private: + bool hasUnit; + int openPass, closedPass; int x, y; @@ -57,7 +59,6 @@ private: bool _init; int _pass; std::vector _terrain; - std::vector _units; std::vector _nodes; Rect2i _region;