using Robust.Shared.Map;
using Robust.Shared.Serialization;
namespace Content.Shared.AI
{
public static class SharedAiDebug
{
#region Mob Debug
[Serializable, NetSerializable]
public sealed class UtilityAiDebugMessage : EntityEventArgs
{
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 sealed class RequestPathfindingGraphMessage : EntityEventArgs {}
[Serializable, NetSerializable]
public sealed class PathfindingGraphMessage : EntityEventArgs
{
public Dictionary> Graph { get; }
public PathfindingGraphMessage(Dictionary> graph)
{
Graph = graph;
}
}
public sealed 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 sealed 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 sealed class AStarRouteMessage : EntityEventArgs
{
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 sealed class JpsRouteMessage : EntityEventArgs
{
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 : EntityEventArgs
{
public EntityUid GridId { get; }
public Dictionary>> Regions { get; }
public ReachableChunkRegionsDebugMessage(EntityUid gridId, Dictionary>> regions)
{
GridId = gridId;
Regions = regions;
}
}
[Serializable, NetSerializable]
public sealed class ReachableCacheDebugMessage : EntityEventArgs
{
public EntityUid GridId { get; }
public Dictionary> Regions { get; }
public bool Cached { get; }
public ReachableCacheDebugMessage(EntityUid gridId, Dictionary> regions, bool cached)
{
GridId = gridId;
Regions = regions;
Cached = cached;
}
}
///
/// Send if someone is subscribing to reachable regions for NPCs.
///
[Serializable, NetSerializable]
public sealed class SubscribeReachableMessage : EntityEventArgs {}
///
/// Send if someone is unsubscribing to reachable regions for NPCs.
///
[Serializable, NetSerializable]
public sealed class UnsubscribeReachableMessage : EntityEventArgs {}
#endregion
}
}