mirror of
https://github.com/space-wizards/RobustToolbox.git
synced 2026-02-15 03:30:53 +01:00
* Refactor tile IDs. Tile IDs are now automatically assigned at runtime. A mapping is also stored in map files to avoid compatibility issues. Also removed tile prototypes. Content is now responsible for it. This is so content can define its own data for tiles. * Update map format specification. * Fix tile placement.
47 lines
1.4 KiB
C#
47 lines
1.4 KiB
C#
using SS14.Client.Interfaces.Map;
|
|
using SS14.Client.Interfaces.ResourceManagement;
|
|
using SS14.Client.ResourceManagement;
|
|
using SS14.Shared.Interfaces.Map;
|
|
using SS14.Shared.IoC;
|
|
using SS14.Shared.Map;
|
|
using System.Collections.Generic;
|
|
using SS14.Shared.Utility;
|
|
|
|
namespace SS14.Client.Map
|
|
{
|
|
/// <summary>
|
|
/// Special TileDefinitionManager that makes a Godot TileSet for usage by TileMaps.
|
|
/// </summary>
|
|
internal sealed class GodotTileDefinitionManager : TileDefinitionManager, IGodotTileDefinitionManager
|
|
{
|
|
[Dependency] readonly IResourceCache resourceCache;
|
|
|
|
public Godot.TileSet TileSet { get; private set; }
|
|
|
|
private Dictionary<ushort, TextureResource> Textures = new Dictionary<ushort, TextureResource>();
|
|
|
|
public GodotTileDefinitionManager()
|
|
{
|
|
TileSet = new Godot.TileSet();
|
|
}
|
|
|
|
public override void Register(ITileDefinition tileDef)
|
|
{
|
|
base.Register(tileDef);
|
|
|
|
var id = tileDef.TileId;
|
|
TileSet.CreateTile(id);
|
|
if (string.IsNullOrEmpty(tileDef.SpriteName))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var texture =
|
|
resourceCache.GetResource<TextureResource>(
|
|
new ResourcePath("/Textures/Tiles/") / $@"{tileDef.SpriteName}.png");
|
|
TileSet.TileSetTexture(id, texture.Texture.GodotTexture);
|
|
Textures[id] = texture;
|
|
}
|
|
}
|
|
}
|