Use named tuples
Thanks remie
This commit is contained in:
@@ -66,7 +66,7 @@ namespace Content.Server.GameObjects.EntitySystems.AI.Steering
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Pathfinding request jobs we're waiting on
|
/// Pathfinding request jobs we're waiting on
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private readonly Dictionary<IEntity, (CancellationTokenSource, Job<Queue<TileRef>>)> _pathfindingRequests =
|
private readonly Dictionary<IEntity, (CancellationTokenSource CancelToken, Job<Queue<TileRef>> Job)> _pathfindingRequests =
|
||||||
new Dictionary<IEntity, (CancellationTokenSource, Job<Queue<TileRef>>)>();
|
new Dictionary<IEntity, (CancellationTokenSource, Job<Queue<TileRef>>)>();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -135,7 +135,7 @@ namespace Content.Server.GameObjects.EntitySystems.AI.Steering
|
|||||||
|
|
||||||
if (_pathfindingRequests.TryGetValue(entity, out var request))
|
if (_pathfindingRequests.TryGetValue(entity, out var request))
|
||||||
{
|
{
|
||||||
switch (request.Item2.Status)
|
switch (request.Job.Status)
|
||||||
{
|
{
|
||||||
case JobStatus.Pending:
|
case JobStatus.Pending:
|
||||||
case JobStatus.Finished:
|
case JobStatus.Finished:
|
||||||
@@ -143,16 +143,16 @@ namespace Content.Server.GameObjects.EntitySystems.AI.Steering
|
|||||||
case JobStatus.Running:
|
case JobStatus.Running:
|
||||||
case JobStatus.Paused:
|
case JobStatus.Paused:
|
||||||
case JobStatus.Waiting:
|
case JobStatus.Waiting:
|
||||||
request.Item1.Cancel();
|
request.CancelToken.Cancel();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (request.Item2.Exception)
|
switch (request.Job.Exception)
|
||||||
{
|
{
|
||||||
case null:
|
case null:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
throw request.Item2.Exception;
|
throw request.Job.Exception;
|
||||||
}
|
}
|
||||||
_pathfindingRequests.Remove(entity);
|
_pathfindingRequests.Remove(entity);
|
||||||
}
|
}
|
||||||
@@ -276,9 +276,9 @@ namespace Content.Server.GameObjects.EntitySystems.AI.Steering
|
|||||||
|
|
||||||
// Handle pathfinding job
|
// Handle pathfinding job
|
||||||
// If we still have an existing path then keep following that until the new path arrives
|
// If we still have an existing path then keep following that until the new path arrives
|
||||||
if (_pathfindingRequests.TryGetValue(entity, out var pathRequest) && pathRequest.Item2.Status == JobStatus.Finished)
|
if (_pathfindingRequests.TryGetValue(entity, out var pathRequest) && pathRequest.Job.Status == JobStatus.Finished)
|
||||||
{
|
{
|
||||||
switch (pathRequest.Item2.Exception)
|
switch (pathRequest.Job.Exception)
|
||||||
{
|
{
|
||||||
case null:
|
case null:
|
||||||
break;
|
break;
|
||||||
@@ -287,10 +287,10 @@ namespace Content.Server.GameObjects.EntitySystems.AI.Steering
|
|||||||
controller.VelocityDir = Vector2.Zero;
|
controller.VelocityDir = Vector2.Zero;
|
||||||
return SteeringStatus.NoPath;
|
return SteeringStatus.NoPath;
|
||||||
default:
|
default:
|
||||||
throw pathRequest.Item2.Exception;
|
throw pathRequest.Job.Exception;
|
||||||
}
|
}
|
||||||
// No actual path
|
// No actual path
|
||||||
var path = _pathfindingRequests[entity].Item2.Result;
|
var path = _pathfindingRequests[entity].Job.Result;
|
||||||
if (path == null || path.Count == 0)
|
if (path == null || path.Count == 0)
|
||||||
{
|
{
|
||||||
controller.VelocityDir = Vector2.Zero;
|
controller.VelocityDir = Vector2.Zero;
|
||||||
|
|||||||
Reference in New Issue
Block a user