From bc2f6fab7cae7410713c1116296a2d30b48e2441 Mon Sep 17 00:00:00 2001 From: Ed <96445749+TheShuEd@users.noreply.github.com> Date: Thu, 22 Aug 2024 13:05:03 +0300 Subject: [PATCH] fix --- .../EntitySystems/CP14BiomeSpawnerSystem.cs | 92 ------------------- .../BiomeSpawner/CP14BiomeSpawnerComponent.cs | 4 +- .../BiomeSpawner/CP14BiomeSpawnerSystem.cs | 69 +++++++------- 3 files changed, 33 insertions(+), 132 deletions(-) delete mode 100644 Content.Server/_CP14/BiomeSpawner/EntitySystems/CP14BiomeSpawnerSystem.cs diff --git a/Content.Server/_CP14/BiomeSpawner/EntitySystems/CP14BiomeSpawnerSystem.cs b/Content.Server/_CP14/BiomeSpawner/EntitySystems/CP14BiomeSpawnerSystem.cs deleted file mode 100644 index ba73b5e96a..0000000000 --- a/Content.Server/_CP14/BiomeSpawner/EntitySystems/CP14BiomeSpawnerSystem.cs +++ /dev/null @@ -1,92 +0,0 @@ -/* - * All right reserved to CrystallPunk. - * - * BUT this file is sublicensed under MIT License - * - */ - -using System.Linq; -using Content.Server._CP14.Procedural.BiomeSpawner; -using Content.Server._CP14.RoundSeed; -using Content.Server.Decals; -using Content.Server.Parallax; -using Robust.Server.GameObjects; -using Robust.Shared.Map; -using Robust.Shared.Map.Components; -using Robust.Shared.Prototypes; - -namespace Content.Server._CP14.BiomeSpawner.EntitySystems; - -public sealed class CP14BiomeSpawnerSystem : EntitySystem -{ - [Dependency] private readonly IPrototypeManager _proto = default!; - [Dependency] private readonly BiomeSystem _biome = default!; - [Dependency] private readonly TransformSystem _transform = default!; - [Dependency] private readonly SharedMapSystem _maps = default!; - [Dependency] private readonly DecalSystem _decals = default!; - [Dependency] private readonly EntityLookupSystem _lookup = default!; - [Dependency] private readonly CP14RoundSeedSystem _roundSeed = default!; - - public override void Initialize() - { - SubscribeLocalEvent(OnMapInit); - } - - private void OnMapInit(Entity ent, ref MapInitEvent args) - { - SpawnBiome(ent); - QueueDel(ent); - } - - private void SpawnBiome(Entity ent) - { - var biome = _proto.Index(ent.Comp.Biome); - var spawnerTransform = Transform(ent); - if (spawnerTransform.GridUid == null) - return; - - var gridUid = spawnerTransform.GridUid.Value; - - if (!TryComp(gridUid, out var map)) - return; - - var seed = _roundSeed.GetSeed(); - - var vec = _transform.GetGridOrMapTilePosition(ent); - - if (!_biome.TryGetTile(vec, biome.Layers, seed, map, out var tile)) - return; - - // Set new tile - _maps.SetTile(gridUid, map, vec, tile.Value); - - var tileCenterVec = vec + map.TileSizeHalfVector; - - // Remove old decals - var oldDecals = _decals.GetDecalsInRange(gridUid, tileCenterVec); - foreach (var (id, _) in oldDecals) - { - _decals.RemoveDecal(gridUid, id); - } - - //Add decals - if (_biome.TryGetDecals(vec, biome.Layers, seed, map, out var decals)) - { - foreach (var decal in decals) - { - _decals.TryAddDecal(decal.ID, new EntityCoordinates(gridUid, decal.Position), out _); - } - } - - // Remove entities - var oldEntities = _lookup.GetEntitiesInRange(spawnerTransform.Coordinates, 0.48f); - // TODO: Replace this shit with GetEntitiesInBox2 - foreach (var entToRemove in oldEntities.Concat(new[] { ent.Owner })) // Do not remove self - { - QueueDel(entToRemove); - } - - if (_biome.TryGetEntity(vec, biome.Layers, tile.Value, seed, map, out var entityProto)) - Spawn(entityProto, new EntityCoordinates(gridUid, tileCenterVec)); - } -} diff --git a/Content.Server/_CP14/Procedural/BiomeSpawner/CP14BiomeSpawnerComponent.cs b/Content.Server/_CP14/Procedural/BiomeSpawner/CP14BiomeSpawnerComponent.cs index 7e8c34c80d..9e77f7d805 100644 --- a/Content.Server/_CP14/Procedural/BiomeSpawner/CP14BiomeSpawnerComponent.cs +++ b/Content.Server/_CP14/Procedural/BiomeSpawner/CP14BiomeSpawnerComponent.cs @@ -1,10 +1,8 @@ /* * All right reserved to CrystallPunk. * - * This file is sublicensed under Custom License Agreement for Stalker14 project (https://github.com/stalker14-project/stalker14) only + * BUT this file is sublicensed under MIT License * - * See LICENSE.TXT file in the project root for full license information. - * Copyright (c) 2024 TheShuEd (Github) */ using Content.Shared.Parallax.Biomes; diff --git a/Content.Server/_CP14/Procedural/BiomeSpawner/CP14BiomeSpawnerSystem.cs b/Content.Server/_CP14/Procedural/BiomeSpawner/CP14BiomeSpawnerSystem.cs index 10d12edcc7..217477b90b 100644 --- a/Content.Server/_CP14/Procedural/BiomeSpawner/CP14BiomeSpawnerSystem.cs +++ b/Content.Server/_CP14/Procedural/BiomeSpawner/CP14BiomeSpawnerSystem.cs @@ -1,21 +1,18 @@ /* * All right reserved to CrystallPunk. * - * This file is sublicensed under Custom License Agreement for Stalker14 project (https://github.com/stalker14-project/stalker14) only + * BUT this file is sublicensed under MIT License * - * See LICENSE.TXT file in the project root for full license information. - * Copyright (c) 2024 TheShuEd (Github) */ -using System.Numerics; +using System.Linq; +using Content.Server._CP14.RoundSeed; using Content.Server.Decals; -using Content.Server.GameTicking; using Content.Server.Parallax; using Robust.Server.GameObjects; using Robust.Shared.Map; using Robust.Shared.Map.Components; using Robust.Shared.Prototypes; -using Robust.Shared.Random; namespace Content.Server._CP14.Procedural.BiomeSpawner; @@ -26,58 +23,53 @@ public sealed class CP14BiomeSpawnerSystem : EntitySystem [Dependency] private readonly TransformSystem _transform = default!; [Dependency] private readonly SharedMapSystem _maps = default!; [Dependency] private readonly DecalSystem _decals = default!; - [Dependency] private readonly IEntityManager _entManager = default!; - [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly EntityLookupSystem _lookup = default!; + [Dependency] private readonly CP14RoundSeedSystem _roundSeed = default!; - private int _seed = 27; public override void Initialize() { - base.Initialize(); - - SubscribeLocalEvent(OnRoundStartAttempt); SubscribeLocalEvent(OnMapInit); } - private void OnRoundStartAttempt(RoundStartAttemptEvent ev) + private void OnMapInit(Entity ent, ref MapInitEvent args) { - _seed = _random.Next(100000); + SpawnBiome(ent); + QueueDel(ent); } - private void OnMapInit(Entity spawner, ref MapInitEvent args) + private void SpawnBiome(Entity ent) { - SpawnBiome(spawner); - QueueDel(spawner); - } - - private void SpawnBiome(Entity spawner) - { - var biome = _proto.Index(spawner.Comp.Biome); - var parent = _transform.GetParent(spawner); - - if (parent == null) + var biome = _proto.Index(ent.Comp.Biome); + var spawnerTransform = Transform(ent); + if (spawnerTransform.GridUid == null) return; - var gridUid = parent.Owner; + var gridUid = spawnerTransform.GridUid.Value; if (!TryComp(gridUid, out var map)) return; - var v2i = _transform.GetGridOrMapTilePosition(spawner); - if (!_biome.TryGetTile(v2i, biome.Layers, _seed, map, out var tile)) + var seed = _roundSeed.GetSeed(); + + var vec = _transform.GetGridOrMapTilePosition(ent); + + if (!_biome.TryGetTile(vec, biome.Layers, seed, map, out var tile)) return; // Set new tile - _maps.SetTile(gridUid, map, v2i, tile.Value); + _maps.SetTile(gridUid, map, vec, tile.Value); + + var tileCenterVec = vec + map.TileSizeHalfVector; // Remove old decals - var oldDecals = _decals.GetDecalsInRange(gridUid, v2i + new Vector2(0.5f, 0.5f)); + var oldDecals = _decals.GetDecalsInRange(gridUid, tileCenterVec); foreach (var (id, _) in oldDecals) { _decals.RemoveDecal(gridUid, id); } //Add decals - if (_biome.TryGetDecals(v2i, biome.Layers, _seed, map, out var decals)) + if (_biome.TryGetDecals(vec, biome.Layers, seed, map, out var decals)) { foreach (var decal in decals) { @@ -85,13 +77,16 @@ public sealed class CP14BiomeSpawnerSystem : EntitySystem } } - //TODO maybe need remove anchored entities here - - //Add entities - if (_biome.TryGetEntity(v2i, biome.Layers, tile.Value, _seed, map, out var entityProto)) + // Remove entities + var oldEntities = _lookup.GetEntitiesInRange(spawnerTransform.Coordinates, 0.48f); + // TODO: Replace this shit with GetEntitiesInBox2 + foreach (var entToRemove in oldEntities.Concat(new[] { ent.Owner })) // Do not remove self { - var ent = _entManager.SpawnEntity(entityProto, - new EntityCoordinates(gridUid, v2i + map.TileSizeHalfVector)); + QueueDel(entToRemove); } + + // Add entities + if (_biome.TryGetEntity(vec, biome.Layers, tile.Value, seed, map, out var entityProto)) + Spawn(entityProto, new EntityCoordinates(gridUid, tileCenterVec)); } }