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:
committed by
GitHub
parent
599c599a4e
commit
c620d66dab
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user