]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
biome flexibility changes (#28017)
authordeltanedas <39013340+deltanedas@users.noreply.github.com>
Wed, 15 May 2024 03:27:25 +0000 (03:27 +0000)
committerGitHub <noreply@github.com>
Wed, 15 May 2024 03:27:25 +0000 (23:27 -0400)
make biome apply template on mapinit, add api for setting Enabled

Co-authored-by: deltanedas <@deltanedas:kde.org>
Content.Server/Parallax/BiomeSystem.cs
Content.Shared/Parallax/Biomes/BiomeComponent.cs

index 0543518dcc9a3ed426101986ec4b0187018167bc..ec780d1f99c4bfce3339bed97a3bc01c6fe3a82e 100644 (file)
@@ -39,6 +39,7 @@ public sealed partial class BiomeSystem : SharedBiomeSystem
     [Dependency] private readonly IConsoleHost _console = default!;
     [Dependency] private readonly IMapManager _mapManager = default!;
     [Dependency] private readonly IParallelManager _parallel = default!;
+    [Dependency] private readonly IPrototypeManager _proto = default!;
     [Dependency] private readonly IPlayerManager _playerManager = default!;
     [Dependency] private readonly IRobustRandom _random = default!;
     [Dependency] private readonly AtmosphereSystem _atmos = default!;
@@ -119,6 +120,9 @@ public sealed partial class BiomeSystem : SharedBiomeSystem
             SetSeed(uid, component, _random.Next());
         }
 
+        if (_proto.TryIndex(component.Template, out var biome))
+            SetTemplate(uid, component, biome);
+
         var xform = Transform(uid);
         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)
     {
         component.Seed = seed;
index 8446febfb2593bf7f58e1f98ce2fd232d01aa71c..af8eb8868381434637a49bbbd23e7bc747cd4d35 100644 (file)
@@ -30,14 +30,13 @@ public sealed partial class BiomeComponent : Component
     public List<IBiomeLayer> Layers = new();
 
     /// <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>
-    /// <remarks>
-    /// This is really just here for prototype reload support.
-    /// </remarks>
-    [ViewVariables(VVAccess.ReadWrite),
-     DataField("template", customTypeSerializer: typeof(PrototypeIdSerializer<BiomeTemplatePrototype>))]
-    public string? Template;
+    [DataField]
+    public ProtoId<BiomeTemplatePrototype>? Template;
 
     /// <summary>
     /// If we've already generated a tile and couldn't deload it then we won't ever reload it in future.