Files
RobustToolbox/Robust.Shared/Map/ITileDefinitionManager.cs
Leon Friedrich fbc706f37b Refactor map loading & saving (#5572)
* Refactor map loading & saving

* test fixes

* ISerializationManager tweaks

* Fix component composition

* Try fix entity deserialization component composition

* comments

* CL

* error preinit

* a

* cleanup

* error if version is too new

* Add AlwaysPushSerializationTest

* Add auto-inclusion test

* Better categorization

* Combine test components

* Save -> TrySave

Also better handling for saving multiple entities individually

* Create new partial class for map loading

* Add OrphanSerializationTest

* Include MapIds in BeforeSerializationEvent

* Addd LifetimeSerializationTest

* Add TestMixedLifetimeSerialization

* Add CategorizationTest

* explicitly serialize list of nullspace entities

* Add backwards compatibility test

* Version comments

also fixes wrong v4 format

* add MapMergeTest

* Add NetEntity support

* Optimize EntityDeserializer

Avoid unnecessary component deserialization

* fix assert & other bugs

* fucking containers strike again

* Fix deletion of pre-init entities

* fix release note merge conflict

* Update Robust.Shared/Map/MapManager.GridCollection.cs

Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>

* VV

---------

Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2025-02-16 21:25:07 +11:00

72 lines
2.9 KiB
C#

using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using Robust.Shared.Random;
namespace Robust.Shared.Map
{
/// <summary>
/// This manages tile definitions for grid tiles.
/// </summary>
public interface ITileDefinitionManager : IEnumerable<ITileDefinition>
{
Tile GetVariantTile(string name, IRobustRandom random);
Tile GetVariantTile(string name, System.Random random);
Tile GetVariantTile(ITileDefinition tileDef, IRobustRandom random);
Tile GetVariantTile(ITileDefinition tileDef, System.Random random);
/// <summary>
/// Indexer to retrieve a tile definition by name.
/// Note: In the presence of tile aliases, this[A].ID does not necessarily equal A.
/// </summary>
/// <param name="name">The name of the tile definition.</param>
/// <returns>The named tile definition.</returns>
/// <seealso cref="TryGetDefinition(string,out Robust.Shared.Map.ITileDefinition?)"/>
ITileDefinition this[string name] { get; }
/// <summary>
/// Indexer to retrieve a tile definition by internal ID.
/// </summary>
/// <param name="id">The ID of the tile definition.</param>
/// <returns>The tile definition.</returns>
/// <seealso cref="TryGetDefinition(int,out Robust.Shared.Map.ITileDefinition?)"/>
ITileDefinition this[int id] { get; }
/// <summary>
/// Try to retrieve a tile definition by name.
/// </summary>
/// <remarks>
/// Note: In the presence of tile aliases, this[A].ID does not necessarily equal A.
/// </remarks>
/// <param name="name">The name of the tile definition to look up.</param>
/// <param name="definition">The found tile definition, if it exists.</param>
/// <returns>True if a tile definition was resolved, false otherwise.</returns>
/// <seealso cref="this[string]"/>
bool TryGetDefinition(string name, [NotNullWhen(true)] out ITileDefinition? definition);
/// <summary>
/// Try to retrieve a tile definition by tile ID.
/// </summary>
/// <param name="id">The ID of the tile definition to look up.</param>
/// <param name="definition">The found tile definition, if it exists.</param>
/// <returns>True if a tile definition was resolved, false otherwise.</returns>
/// <seealso cref="this[int]"/>
bool TryGetDefinition(int id, [NotNullWhen(true)] out ITileDefinition? definition);
/// <summary>
/// The number of tile definitions contained inside of this manager.
/// </summary>
int Count { get; }
void Initialize();
/// <summary>
/// Register a definition with this manager.
/// </summary>
/// <param name="tileDef">THe definition to register.</param>
void Register(ITileDefinition tileDef);
}
}