Prettied it up, comments, refactors
This commit is contained in:
@@ -1,11 +1,9 @@
|
||||
#pragma once
|
||||
#include "node.h"
|
||||
#include "Pather.h"
|
||||
|
||||
node::node(sf::Vector2i XY, int h, int cF, int cL, node* p, Pather* pather_) {
|
||||
xy = XY;
|
||||
node::node(sf::Vector2i XY, double h, int cF, node* p, Pather* pather_) {
|
||||
position = XY;
|
||||
hueristic = h;
|
||||
cameFrom = cF;
|
||||
closedList = cL;
|
||||
came_from = cF;
|
||||
parent = p;
|
||||
pather = pather_;
|
||||
}
|
||||
@@ -16,13 +14,14 @@ node::~node() {
|
||||
|
||||
}
|
||||
|
||||
void node::neighbors() {
|
||||
void node::getNewNeighbors() {
|
||||
|
||||
// Get the end node position for calculating distance from end(hueristic)
|
||||
int x = pather->getEndNodePosition().x;
|
||||
int y = pather->getEndNodePosition().y;
|
||||
|
||||
sf::Vector2i dest0XY(xy.x, xy.y - 1); // North
|
||||
if (!pather->map->isTileSolid(dest0XY) && pather->visitedMap[dest0XY.x][dest0XY.y] != 1) {
|
||||
sf::Vector2i dest0XY(position.x, position.y - 1); // North
|
||||
if (!pather->map->isTileSolid(dest0XY) && pather->visited_map(dest0XY.x, dest0XY.y) != 1) {
|
||||
// If so, find the distance between this node and the end node, the hueristic
|
||||
int tempx = (x - dest0XY.x);
|
||||
int tempy = (y - dest0XY.y);
|
||||
@@ -30,17 +29,17 @@ void node::neighbors() {
|
||||
// I think dv is the hueristic??
|
||||
double dv = sqrt((tempx * tempx) + (tempy * tempy));
|
||||
|
||||
int v = static_cast<int>(dv);
|
||||
double v = dv;
|
||||
|
||||
// Take that value and create a new node
|
||||
pather->openList.emplace(new node(dest0XY, v, 0, 1, pather->active_node, pather), v);
|
||||
pather->open_list.emplace(new node(dest0XY, v, 0, pather->getActiveNode(), pather), v);
|
||||
|
||||
// Set that tile as visited so we don't get stuck in a loop
|
||||
pather->visitedMap[dest0XY.x][dest0XY.y] = 1;
|
||||
pather->visited_map(dest0XY.x, dest0XY.y) = 1;
|
||||
}
|
||||
|
||||
sf::Vector2i dest1XY(xy.x + 1, xy.y); // East
|
||||
if (!pather->map->isTileSolid(dest1XY) && pather->visitedMap[dest1XY.x][dest1XY.y] != 1) {
|
||||
sf::Vector2i dest1XY(position.x + 1, position.y); // East
|
||||
if (!pather->map->isTileSolid(dest1XY) && pather->visited_map(dest1XY.x, dest1XY.y) != 1) {
|
||||
// If so, find the distance between this node and the end node, the hueristic
|
||||
int tempx = (x - dest1XY.x);
|
||||
int tempy = (y - dest1XY.y);
|
||||
@@ -48,17 +47,17 @@ void node::neighbors() {
|
||||
// I think dv is the hueristic??
|
||||
double dv = sqrt((tempx * tempx) + (tempy * tempy));
|
||||
|
||||
int v = static_cast<int>(dv);
|
||||
double v = dv;
|
||||
|
||||
// Take that value and create a new node
|
||||
pather->openList.emplace(new node(dest1XY, v, 0, 1, pather->active_node, pather), v);
|
||||
pather->open_list.emplace(new node(dest1XY, v, 1, pather->getActiveNode(), pather), v);
|
||||
|
||||
// Set that tile as visited so we don't get stuck in a loop
|
||||
pather->visitedMap[dest1XY.x][dest1XY.y] = 1;
|
||||
pather->visited_map(dest1XY.x, dest1XY.y) = 1;
|
||||
}
|
||||
|
||||
sf::Vector2i dest2XY(xy.x, xy.y + 1); // South
|
||||
if (!pather->map->isTileSolid(dest2XY) && pather->visitedMap[dest2XY.x][dest2XY.y] != 1) {
|
||||
sf::Vector2i dest2XY(position.x, position.y + 1); // South
|
||||
if (!pather->map->isTileSolid(dest2XY) && pather->visited_map(dest2XY.x, dest2XY.y) != 1) {
|
||||
// If so, find the distance between this node and the end node, the hueristic
|
||||
int tempx = (x - dest2XY.x);
|
||||
int tempy = (y - dest2XY.y);
|
||||
@@ -66,17 +65,17 @@ void node::neighbors() {
|
||||
// I think dv is the hueristic??
|
||||
double dv = sqrt((tempx * tempx) + (tempy * tempy));
|
||||
|
||||
int v = static_cast<int>(dv);
|
||||
double v = dv;
|
||||
|
||||
// Take that value and create a new node
|
||||
pather->openList.emplace(new node(dest2XY, v, 0, 1, pather->active_node, pather), v);
|
||||
pather->open_list.emplace(new node(dest2XY, v, 2, pather->getActiveNode(), pather), v);
|
||||
|
||||
// Set that tile as visited so we don't get stuck in a loop
|
||||
pather->visitedMap[dest2XY.x][dest2XY.y] = 1;
|
||||
pather->visited_map(dest2XY.x, dest2XY.y) = 1;
|
||||
}
|
||||
|
||||
sf::Vector2i dest3XY(xy.x - 1, xy.y); // West
|
||||
if (!pather->map->isTileSolid(dest3XY) && pather->visitedMap[dest3XY.x][dest3XY.y] != 1) {
|
||||
sf::Vector2i dest3XY(position.x - 1, position.y); // West
|
||||
if (!pather->map->isTileSolid(dest3XY) && pather->visited_map(dest3XY.x, dest3XY.y) != 1) {
|
||||
// If so, find the distance between this node and the end node, the hueristic
|
||||
int tempx = (x - dest3XY.x);
|
||||
int tempy = (y - dest3XY.y);
|
||||
@@ -84,12 +83,28 @@ void node::neighbors() {
|
||||
// I think dv is the hueristic??
|
||||
double dv = sqrt((tempx * tempx) + (tempy * tempy));
|
||||
|
||||
int v = static_cast<int>(dv);
|
||||
double v = dv;
|
||||
|
||||
// Take that value and create a new node
|
||||
pather->openList.emplace(new node(dest3XY, v, 0, 1, pather->active_node, pather), v);
|
||||
pather->open_list.emplace(new node(dest3XY, v, 3, pather->getActiveNode(), pather), v);
|
||||
|
||||
// Set that tile as visited so we don't get stuck in a loop
|
||||
pather->visitedMap[dest3XY.x][dest3XY.y] = 1;
|
||||
pather->visited_map(dest3XY.x, dest3XY.y) = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sf::Vector2i node::getPosition() {
|
||||
return position;
|
||||
}
|
||||
|
||||
node* node::getParent() {
|
||||
return parent;
|
||||
}
|
||||
|
||||
double node::getHueristic() {
|
||||
return hueristic;
|
||||
}
|
||||
|
||||
int node::getCameFrom() {
|
||||
return came_from;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user