#pragma once
#include "olcPixelGameEngine.h"

struct Pathfinding{
    struct sNode
	{
		bool bObstacle = false;			// Is the node an obstruction?
		bool bObstacleUpper = false;	// Is the node an obstruction on the upper level?
		bool bVisited = false;			// Have we searched this node before?
		float fGlobalGoal;				// Distance to goal so far
		float fLocalGoal;				// Distance to goal if we took the alternative route
		int x;							// Nodes position in 2D space
		int y;
		std::vector<sNode*> vecNeighbours;	// Connections to neighbours
		sNode* parent;					// Node connecting to this node that offers shortest parent
	};

	sNode *nodes = nullptr;

	sNode *nodeStart = nullptr;
	sNode *nodeEnd = nullptr;

    void Initialize();
	//maxRange in tiles. Returns the path as points.
    std::vector<vf2d> Solve_AStar(vf2d startPos,vf2d endPos,float maxRange=8,bool upperLevel=false);
};