diff --git a/Content.Server/SS220/GateDungeon/GateDungeonComponent.cs b/Content.Server/SS220/GateDungeon/GateDungeonComponent.cs index eed390031e8d..75da371eba19 100644 --- a/Content.Server/SS220/GateDungeon/GateDungeonComponent.cs +++ b/Content.Server/SS220/GateDungeon/GateDungeonComponent.cs @@ -11,8 +11,6 @@ public sealed partial class GateDungeonComponent : Component { public bool IsCharging = true; - public MapId MapId; - [DataField] public TimeSpan ChargingTime = TimeSpan.FromSeconds(300); diff --git a/Content.Server/SS220/GateDungeon/GateDungeonSystem.cs b/Content.Server/SS220/GateDungeon/GateDungeonSystem.cs index c25575957f78..ec3035184be6 100644 --- a/Content.Server/SS220/GateDungeon/GateDungeonSystem.cs +++ b/Content.Server/SS220/GateDungeon/GateDungeonSystem.cs @@ -6,7 +6,6 @@ using Content.Shared.Teleportation.Components; using Content.Shared.Teleportation.Systems; using Robust.Server.GameObjects; -using Robust.Shared.Map; using Robust.Shared.Random; using Timer = Robust.Shared.Timing.Timer; @@ -23,7 +22,6 @@ namespace Content.Server.SS220.GateDungeon; public sealed class GateDungeonSystem : EntitySystem { [Dependency] private readonly SharedMapSystem _map = default!; - [Dependency] private readonly IMapManager _mapManager = default!; [Dependency] private readonly MapLoaderSystem _loader = default!; [Dependency] private readonly PopupSystem _popup = default!; [Dependency] private readonly IRobustRandom _random = default!; @@ -48,63 +46,8 @@ private void OnCreateDungeon(Entity ent, ref MapInitEvent _appearance.SetData(ent.Owner, GatewayVisuals.Active, false); //should be turned off at the beginning - if(ent.Comp.PathDungeon == null) - return; - - var mapDungeon = _random.Pick(ent.Comp.PathDungeon); - - _map.CreateMap(out var mapId); - _loader.TryLoad(mapId, mapDungeon, out _); - _mapManager.SetMapPaused(mapId, true); - - var mapUid = _map.GetMapOrInvalid(mapId); - _meta.SetEntityName(mapUid, "Gate dungeon"); //just a plug for the name - - ent.Comp.MapId = mapId; - Timer.Spawn(ent.Comp.ChargingTime,() => ChargingDone(ent.Owner)); - var gates = EntityQueryEnumerator(); - - var entGates = new List(); - - while (gates.MoveNext(out var entDungeon, out _)) - { - entGates.Add(entDungeon); - } - - _gateList = Enum.GetValues(typeof(GateType)) - .Cast() - .ToDictionary(gateType => gateType, _ => new List()); - - - foreach (var gate in entGates) - { - if(!TryComp(gate, out var gateComp)) - continue; - - switch (gateComp.GateType) - { - case GateType.Start: - _gateList[GateType.Start].Add(gate); - break; - - case GateType.Mid: - _gateList[GateType.Mid].Add(gate); - break; - - case GateType.End: - _gateList[GateType.End].Add(gate); - break; - - case GateType.ToStation: - _gateList[GateType.ToStation].Add(gate); - break; - - default: - continue; - } - } } private void ChargingDone(EntityUid ent) @@ -112,9 +55,7 @@ private void ChargingDone(EntityUid ent) if (!TryComp(ent, out var gateComp)) return; - _mapManager.SetMapPaused(gateComp.MapId, false); - - gateComp.IsCharging = false; + CreateMap(gateComp); var currentGateStart = PickRandom(_gateList[GateType.Start]); var currentGateMedium = PickRandom(_gateList[GateType.Mid]); @@ -129,6 +70,8 @@ private void ChargingDone(EntityUid ent) _appearance.SetData(ent, GatewayVisuals.Active, true); + gateComp.IsCharging = false; + EnsureComp(currentGateStart, out var portalStartComp); EnsureComp(currentGateEnd, out var portalMediumComp); @@ -164,6 +107,62 @@ private void OnDelete(Entity ent, ref ComponentShutdown ar return _random.Pick(list); } + + private void CreateMap(GateDungeonComponent comp) + { + + if(comp.PathDungeon == null) + return; + + var mapDungeon = _random.Pick(comp.PathDungeon); + + _map.CreateMap(out var mapId); + _loader.TryLoad(mapId, mapDungeon, out _); + + _meta.SetEntityName(_map.GetMapOrInvalid(mapId), "Gate dungeon"); //just a plug for the name + + var gates = EntityQueryEnumerator(); + + var entGates = new List(); + + while (gates.MoveNext(out var entDungeon, out _)) + { + entGates.Add(entDungeon); + } + + _gateList = Enum.GetValues(typeof(GateType)) + .Cast() + .ToDictionary(gateType => gateType, _ => new List()); + + + foreach (var gate in entGates) + { + if(!TryComp(gate, out var gateComp)) + continue; + + switch (gateComp.GateType) + { + case GateType.Start: + _gateList[GateType.Start].Add(gate); + break; + + case GateType.Mid: + _gateList[GateType.Mid].Add(gate); + break; + + case GateType.End: + _gateList[GateType.End].Add(gate); + break; + + case GateType.ToStation: + _gateList[GateType.ToStation].Add(gate); + break; + + default: + continue; + } + } + } } public enum GateType : byte diff --git a/Resources/Locale/ru-RU/ss220/gate-dungeon/gate-dungeon.ftl b/Resources/Locale/ru-RU/ss220/gate-dungeon/gate-dungeon.ftl index 020b829b40f8..67efaf4718c4 100644 --- a/Resources/Locale/ru-RU/ss220/gate-dungeon/gate-dungeon.ftl +++ b/Resources/Locale/ru-RU/ss220/gate-dungeon/gate-dungeon.ftl @@ -1,7 +1,7 @@ ent-GatewayDungeonStart = { ent-BaseGateway } .desc = { ent-BaseGateway.desc } -ent-GatewayDungeonMedium = { ent-BaseGateway } +ent-GatewayDungeonMid = { ent-BaseGateway } .desc = { ent-BaseGateway.desc } ent-GatewayDungeonEnd = { ent-BaseGateway } diff --git a/Resources/Prototypes/SS220/Entities/Structures/Machines/gate_dungeon.yml b/Resources/Prototypes/SS220/Entities/Structures/Machines/gate_dungeon.yml index 3189ae157f46..fb056dd021c4 100644 --- a/Resources/Prototypes/SS220/Entities/Structures/Machines/gate_dungeon.yml +++ b/Resources/Prototypes/SS220/Entities/Structures/Machines/gate_dungeon.yml @@ -12,7 +12,7 @@ - type: entity parent: BaseGateway - id: GatewayDungeonMedium + id: GatewayDungeonMid suffix: Start dungeon components: - type: GateDungeon