biome flexibility changes (#28017)
make biome apply template on mapinit, add api for setting Enabled Co-authored-by: deltanedas <@deltanedas:kde.org>
This commit is contained in:
@@ -39,6 +39,7 @@ public sealed partial class BiomeSystem : SharedBiomeSystem
|
|||||||
[Dependency] private readonly IConsoleHost _console = default!;
|
[Dependency] private readonly IConsoleHost _console = default!;
|
||||||
[Dependency] private readonly IMapManager _mapManager = default!;
|
[Dependency] private readonly IMapManager _mapManager = default!;
|
||||||
[Dependency] private readonly IParallelManager _parallel = default!;
|
[Dependency] private readonly IParallelManager _parallel = default!;
|
||||||
|
[Dependency] private readonly IPrototypeManager _proto = default!;
|
||||||
[Dependency] private readonly IPlayerManager _playerManager = default!;
|
[Dependency] private readonly IPlayerManager _playerManager = default!;
|
||||||
[Dependency] private readonly IRobustRandom _random = default!;
|
[Dependency] private readonly IRobustRandom _random = default!;
|
||||||
[Dependency] private readonly AtmosphereSystem _atmos = default!;
|
[Dependency] private readonly AtmosphereSystem _atmos = default!;
|
||||||
@@ -119,6 +120,9 @@ public sealed partial class BiomeSystem : SharedBiomeSystem
|
|||||||
SetSeed(uid, component, _random.Next());
|
SetSeed(uid, component, _random.Next());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (_proto.TryIndex(component.Template, out var biome))
|
||||||
|
SetTemplate(uid, component, biome);
|
||||||
|
|
||||||
var xform = Transform(uid);
|
var xform = Transform(uid);
|
||||||
var mapId = xform.MapID;
|
var mapId = xform.MapID;
|
||||||
|
|
||||||
@@ -151,6 +155,15 @@ public sealed partial class BiomeSystem : SharedBiomeSystem
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SetEnabled(Entity<BiomeComponent?> ent, bool enabled = true)
|
||||||
|
{
|
||||||
|
if (!Resolve(ent, ref ent.Comp) || ent.Comp.Enabled == enabled)
|
||||||
|
return;
|
||||||
|
|
||||||
|
ent.Comp.Enabled = enabled;
|
||||||
|
Dirty(ent, ent.Comp);
|
||||||
|
}
|
||||||
|
|
||||||
public void SetSeed(EntityUid uid, BiomeComponent component, int seed, bool dirty = true)
|
public void SetSeed(EntityUid uid, BiomeComponent component, int seed, bool dirty = true)
|
||||||
{
|
{
|
||||||
component.Seed = seed;
|
component.Seed = seed;
|
||||||
|
|||||||
@@ -30,14 +30,13 @@ public sealed partial class BiomeComponent : Component
|
|||||||
public List<IBiomeLayer> Layers = new();
|
public List<IBiomeLayer> Layers = new();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Templates to use for <see cref="Layers"/>. Optional as this can be set elsewhere.
|
/// Templates to use for <see cref="Layers"/>.
|
||||||
|
/// If this is set on mapinit, it will fill out layers automatically.
|
||||||
|
/// If not set, use <c>BiomeSystem</c> to do it.
|
||||||
|
/// Prototype reloading will also use this.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
[DataField]
|
||||||
/// This is really just here for prototype reload support.
|
public ProtoId<BiomeTemplatePrototype>? Template;
|
||||||
/// </remarks>
|
|
||||||
[ViewVariables(VVAccess.ReadWrite),
|
|
||||||
DataField("template", customTypeSerializer: typeof(PrototypeIdSerializer<BiomeTemplatePrototype>))]
|
|
||||||
public string? Template;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// If we've already generated a tile and couldn't deload it then we won't ever reload it in future.
|
/// If we've already generated a tile and couldn't deload it then we won't ever reload it in future.
|
||||||
|
|||||||
Reference in New Issue
Block a user