using System;
using System.Collections.Generic;
using Robust.Shared.GameObjects;
using Robust.Shared.Map;
using Robust.Shared.Maths;
using Robust.Shared.Serialization;
namespace Content.Shared.AI
{
public static class SharedAiDebug
{
#region Mob Debug
[Serializable, NetSerializable]
public class UtilityAiDebugMessage : EntitySystemMessage
{
public EntityUid EntityUid { get; }
public double PlanningTime { get; }
public float ActionScore { get; }
public string FoundTask { get; }
public int ConsideredTaskCount { get; }
public UtilityAiDebugMessage(
EntityUid entityUid,
double planningTime,
float actionScore,
string foundTask,
int consideredTaskCount)
{
EntityUid = entityUid;
PlanningTime = planningTime;
ActionScore = actionScore;
FoundTask = foundTask;
ConsideredTaskCount = consideredTaskCount;
}
}
#endregion
#region Pathfinder Debug
///
/// Client asks the server for the pathfinding graph details
///
[Serializable, NetSerializable]
public class RequestPathfindingGraphMessage : EntitySystemMessage {}
[Serializable, NetSerializable]
public class PathfindingGraphMessage : EntitySystemMessage
{
public Dictionary> Graph { get; }
public PathfindingGraphMessage(Dictionary> graph)
{
Graph = graph;
}
}
public class AStarRouteDebug
{
public EntityUid EntityUid { get; }
public Queue Route { get; }
public Dictionary CameFrom { get; }
public Dictionary GScores { get; }
public double TimeTaken { get; }
public AStarRouteDebug(
EntityUid uid,
Queue route,
Dictionary cameFrom,
Dictionary gScores,
double timeTaken)
{
EntityUid = uid;
Route = route;
CameFrom = cameFrom;
GScores = gScores;
TimeTaken = timeTaken;
}
}
public class JpsRouteDebug
{
public EntityUid EntityUid { get; }
public Queue Route { get; }
public HashSet JumpNodes { get; }
public double TimeTaken { get; }
public JpsRouteDebug(
EntityUid uid,
Queue route,
HashSet jumpNodes,
double timeTaken)
{
EntityUid = uid;
Route = route;
JumpNodes = jumpNodes;
TimeTaken = timeTaken;
}
}
[Serializable, NetSerializable]
public class AStarRouteMessage : EntitySystemMessage
{
public readonly EntityUid EntityUid;
public readonly IEnumerable Route;
public readonly Dictionary CameFrom;
public readonly Dictionary GScores;
public double TimeTaken;
public AStarRouteMessage(
EntityUid uid,
IEnumerable route,
Dictionary cameFrom,
Dictionary gScores,
double timeTaken)
{
EntityUid = uid;
Route = route;
CameFrom = cameFrom;
GScores = gScores;
TimeTaken = timeTaken;
}
}
[Serializable, NetSerializable]
public class JpsRouteMessage : EntitySystemMessage
{
public readonly EntityUid EntityUid;
public readonly IEnumerable Route;
public readonly List JumpNodes;
public double TimeTaken;
public JpsRouteMessage(
EntityUid uid,
IEnumerable route,
List jumpNodes,
double timeTaken)
{
EntityUid = uid;
Route = route;
JumpNodes = jumpNodes;
TimeTaken = timeTaken;
}
}
#endregion
#region Reachable Debug
[Serializable, NetSerializable]
public sealed class ReachableChunkRegionsDebugMessage : EntitySystemMessage
{
public GridId GridId { get; }
public Dictionary>> Regions { get; }
public ReachableChunkRegionsDebugMessage(GridId gridId, Dictionary>> regions)
{
GridId = gridId;
Regions = regions;
}
}
[Serializable, NetSerializable]
public sealed class ReachableCacheDebugMessage : EntitySystemMessage
{
public GridId GridId { get; }
public Dictionary> Regions { get; }
public bool Cached { get; }
public ReachableCacheDebugMessage(GridId gridId, Dictionary> regions, bool cached)
{
GridId = gridId;
Regions = regions;
Cached = cached;
}
}
#endregion
}
}