Files
RobustToolbox/Robust.Shared/GameStates/GameStateMapData.cs
Leon Friedrich 4171b3ec4e Make Grid Uid Nullable (#2942)
* Make Grid Uid Nullable

* Fix recursion

* fix detach to null

* change obsolete text
2022-06-20 10:08:23 +10:00

71 lines
1.9 KiB
C#

using System;
using System.Collections.Generic;
using Robust.Shared.GameObjects;
using Robust.Shared.Map;
using Robust.Shared.Maths;
using Robust.Shared.Serialization;
namespace Robust.Shared.GameStates
{
[Serializable, NetSerializable]
public sealed class GameStateMapData
{
public readonly KeyValuePair<EntityUid, GridDatum>[]? GridData;
public GameStateMapData(KeyValuePair<EntityUid, GridDatum>[]? gridData)
{
GridData = gridData;
}
[Serializable, NetSerializable]
public struct GridDatum
{
// TransformComponent State
public readonly MapCoordinates Coordinates;
public readonly Angle Angle;
// MapGridComponent State
public readonly ChunkDatum[] ChunkData;
public GridDatum(ChunkDatum[] chunkData, MapCoordinates coordinates, Angle angle)
{
ChunkData = chunkData;
Coordinates = coordinates;
Angle = angle;
}
}
[Serializable, NetSerializable]
public readonly struct ChunkDatum
{
public readonly Vector2i Index;
// Definitely wasteful to send EVERY tile.
// Optimize away future coder.
// Also it's stored row-major.
public readonly Tile[] TileData;
public bool IsDeleted()
{
return TileData == default;
}
private ChunkDatum(Vector2i index, Tile[] tileData)
{
Index = index;
TileData = tileData;
}
public static ChunkDatum CreateModified(Vector2i index, Tile[] tileData)
{
return new ChunkDatum(index, tileData);
}
public static ChunkDatum CreateDeleted(Vector2i index)
{
return new ChunkDatum(index, default!);
}
}
}
}