preliminary final movement

+ path created
- path costs not working correctly
- only "whole map" path is generated
This commit is contained in:
Gabriel Ksawery Skowron-Rodriguez 2022-06-03 12:59:45 +02:00
parent 8b4b345e23
commit b9b335be01
2 changed files with 9 additions and 17 deletions

View File

@ -52,7 +52,6 @@ public class Pathfinding : MonoBehaviour
if (nodesToExplore.Contains(targetCoord)) // do not add a tile to be explored twice if (nodesToExplore.Contains(targetCoord)) // do not add a tile to be explored twice
{// check if found cheaper path {// check if found cheaper path
PathNode neighbor = (PathNode)nodesToExplore[targetCoord]; PathNode neighbor = (PathNode)nodesToExplore[targetCoord];
//int newCost = GetTargetCost(currentNode.Cost, targetCoord);
if (neighbor.Cost > newCost && newCost > 0) if (neighbor.Cost > newCost && newCost > 0)
{ {
nodesToExplore.Remove(targetCoord); nodesToExplore.Remove(targetCoord);
@ -63,7 +62,6 @@ public class Pathfinding : MonoBehaviour
if (resolvedNodes.Contains(targetCoord)) if (resolvedNodes.Contains(targetCoord))
{// check if found cheaper path {// check if found cheaper path
PathNode neighbor = (PathNode)resolvedNodes[targetCoord]; PathNode neighbor = (PathNode)resolvedNodes[targetCoord];
//int newCost = GetTargetCost(currentNode.Cost, targetCoord);
if (neighbor.Cost > newCost && newCost > 0) if (neighbor.Cost > newCost && newCost > 0)
nodesToExplore.Add(targetCoord, new PathNode(currentNode, targetCoord, newCost)); nodesToExplore.Add(targetCoord, new PathNode(currentNode, targetCoord, newCost));
continue; continue;
@ -80,6 +78,8 @@ public class Pathfinding : MonoBehaviour
} }
path = ConstructPath(finalNode); path = ConstructPath(finalNode);
if (path.Count < 1)
return false;
return true; return true;
} }
@ -113,10 +113,10 @@ public class Pathfinding : MonoBehaviour
{ {
List<Vector2Int> final = new List<Vector2Int>(); List<Vector2Int> final = new List<Vector2Int>();
List<Vector2Int> neighbors = new List<Vector2Int>(); List<Vector2Int> neighbors = new List<Vector2Int>();
neighbors.Add(coords += Vector2Int.up); neighbors.Add(coords + Vector2Int.up);
neighbors.Add(coords += Vector2Int.down); neighbors.Add(coords + Vector2Int.down);
neighbors.Add(coords += Vector2Int.left); neighbors.Add(coords + Vector2Int.left);
neighbors.Add(coords += Vector2Int.right); neighbors.Add(coords + Vector2Int.right);
foreach(Vector2Int neighbor in neighbors) foreach(Vector2Int neighbor in neighbors)
{ {
if(TilemapManager.ins.GetTileState(neighbor.x, neighbor.y) != TilemapManager.TileState.outOfBounds) if(TilemapManager.ins.GetTileState(neighbor.x, neighbor.y) != TilemapManager.TileState.outOfBounds)
@ -134,10 +134,9 @@ public class Pathfinding : MonoBehaviour
while(currentNode.Previous != null) while(currentNode.Previous != null)
{//TEMP just give next step {//TEMP just give next step
path.Add(currentNode.Coords); path.Add(currentNode.Coords);
path.Reverse();
path.RemoveAt(0); // remove start node
currentNode = currentNode.Previous; currentNode = currentNode.Previous;
} }
path.Reverse();
//throw new System.NotImplementedException(); //throw new System.NotImplementedException();
return path; return path;
} }

View File

@ -25,16 +25,9 @@ public class Soldier : Entity
} }
List<Vector2Int> path; List<Vector2Int> path;
if(!Pathfinding if(!Pathfinding.Instance.FindPath(soldier.tileCoord, soldier.movementDestination, out path))
.Instance
.FindPath
(soldier
.tileCoord,
soldier
.movementDestination
, out path))
{ {
return; // cannot find path: do nothing return; // cannot find path: do nothing (for now)
} }
Vector2Int movementStepDestination = path[0]; Vector2Int movementStepDestination = path[0];