PotatoPlan/Game1/Sources/Pathing/A-Star/PathSaver/Nodes.cs
2020-05-09 15:54:53 +02:00

124 lines
2.2 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Graphics;
using C5;
class Nodes : IComparable<Nodes>, IEqualityComparer<Nodes>, IPriorityQueueHandle<Nodes>
{
private int F = 0;
private int G = 0;
private int H = 0;
private Vector2 Coordinates;
private Nodes Parent = null;
private int Direction = 0;
public Nodes(Vector2 coordinates)
{
Coordinates = coordinates;
}
public Nodes(Vector2 coordinates, int direction)
{
Coordinates = coordinates;
Direction = direction;
}
public Nodes(int f, Vector2 coordinates)
{
Coordinates = coordinates;
F = f;
}
public Nodes(Nodes node)
{
F = node.F;
G = node.G;
H = node.H;
Coordinates = node.Coordinates;
Parent = node.Parent;
}
public Nodes(int f, int g, int h, Vector2 coordinates, Nodes parent)
{
F = f;
G = g;
H = h;
Coordinates = coordinates;
Parent = parent;
}
public Vector2 getCords()
{
return Coordinates;
}
public int getF()
{
return F;
}
public int getG()
{
return G;
}
public int getH()
{
return H;
}
public void calculateF()
{
F = G + H;
}
public void setG(int g)
{
G = g;
}
public void setH(int h)
{
H = h;
}
public Nodes getParent()
{
return Parent;
}
public void setParent(Nodes parent)
{
Parent = parent;
}
public int getDirection()
{
return Direction;
}
public int CompareTo(Nodes other)
{
if (this.F < other.F)
return -1;
else if (this.F > other.F)
return 1;
else
return 0;
}
public bool Equals(Nodes source, Nodes other)
{
return (source.Coordinates.X == other.Coordinates.X && source.Coordinates.Y == other.Coordinates.Y);
}
public int GetHashCode(Nodes nodes)
{
return (nodes.Coordinates.GetHashCode());
}
}