Biome spawner fix. Again (#381)

* Biome spawner update. Round seed system

* Format fix

* Round seed M I T

* Error to Warning

* Test fix #2

* Test fix #3

* VV

* Del out of body

* Fix of flood
This commit is contained in:
Gagarinten-Noverdo
2024-08-02 18:46:00 +03:00
committed by GitHub
parent 599c599a4e
commit c620d66dab
2 changed files with 22 additions and 16 deletions

View File

@@ -36,28 +36,25 @@ public sealed class CP14BiomeSpawnerSystem : EntitySystem
{
SpawnBiome(ent);
QueueDel(ent);
}
private void SpawnBiome(Entity<CP14BiomeSpawnerComponent> ent)
{
var biome = _proto.Index(ent.Comp.Biome);
var spawnerTransform = Transform(ent);
if (spawnerTransform.GridUid == null)
return;
var gridUid = spawnerTransform.ParentUid;
var gridUid = spawnerTransform.GridUid.Value;
if (!TryComp<MapGridComponent>(gridUid, out var map))
return;
if (!_roundSeed.TryGetSeed(out var seed))
{
Log.Warning("Missing RoundSeed. Seed set to 0");
seed = 0;
}
var seed = _roundSeed.GetSeed();
var vec = _transform.GetGridOrMapTilePosition(ent);
if (!_biome.TryGetTile(vec, biome.Layers, seed.Value, map, out var tile))
if (!_biome.TryGetTile(vec, biome.Layers, seed, map, out var tile))
return;
// Set new tile
@@ -73,7 +70,7 @@ public sealed class CP14BiomeSpawnerSystem : EntitySystem
}
//Add decals
if (_biome.TryGetDecals(vec, biome.Layers, seed.Value, map, out var decals))
if (_biome.TryGetDecals(vec, biome.Layers, seed, map, out var decals))
{
foreach (var decal in decals)
{
@@ -89,7 +86,7 @@ public sealed class CP14BiomeSpawnerSystem : EntitySystem
QueueDel(entToRemove);
}
if (_biome.TryGetEntity(vec, biome.Layers, tile.Value, seed.Value, map, out var entityProto))
if (_biome.TryGetEntity(vec, biome.Layers, tile.Value, seed, map, out var entityProto))
Spawn(entityProto, new EntityCoordinates(gridUid, tileCenterVec));
}
}

View File

@@ -7,6 +7,7 @@
using System.Diagnostics.CodeAnalysis;
using JetBrains.Annotations;
using Robust.Shared.Map;
using Robust.Shared.Random;
namespace Content.Server._CP14.RoundSeed;
@@ -28,17 +29,25 @@ public sealed class CP14RoundSeedSystem : EntitySystem
ent.Comp.Seed = _random.Next(CP14RoundSeedComponent.MaxValue);
}
[PublicAPI]
public bool TryGetSeed([NotNullWhen(true)] out int? seed)
private int SetupSeed()
{
return AddComp<CP14RoundSeedComponent>(Spawn(null, MapCoordinates.Nullspace)).Seed;
}
/// <summary>
/// Returns the round seed if assigned, otherwise assigns the round seed itself.
/// </summary>
/// <returns>seed of the round</returns>
public int GetSeed()
{
seed = null;
var query = EntityQuery<CP14RoundSeedComponent>();
foreach (var comp in query)
{
seed = comp.Seed;
return true;
return comp.Seed;
}
return false;
var seed = SetupSeed();
Log.Warning($"Missing RoundSeed. Seed set to {seed}");
return seed;
}
}