using Robust.Shared.Serialization; using Robust.Shared.Utility; namespace Content.Shared.Pinpointer; public abstract class SharedNavMapSystem : EntitySystem { public const byte ChunkSize = 4; /// /// Converts the chunk's tile into a bitflag for the slot. /// public static int GetFlag(Vector2i relativeTile) { return 1 << (relativeTile.X * ChunkSize + relativeTile.Y); } /// /// Converts the chunk's tile into a bitflag for the slot. /// public static Vector2i GetTile(int flag) { var value = Math.Log2(flag); var x = (int) value / ChunkSize; var y = (int) value % ChunkSize; var result = new Vector2i(x, y); DebugTools.Assert(GetFlag(result) == flag); return new Vector2i(x, y); } [Serializable, NetSerializable] protected sealed class NavMapComponentState : ComponentState { public Dictionary TileData = new(); } [Serializable, NetSerializable] protected sealed class NavMapDiffComponentState : ComponentState { public Dictionary TileData = new(); public List RemovedChunks = new(); } }