Skip to content

Commit

Permalink
pobeda?
Browse files Browse the repository at this point in the history
  • Loading branch information
21Melkuu committed Feb 6, 2025
1 parent 4839b18 commit 66424e5
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 64 deletions.
2 changes: 0 additions & 2 deletions Content.Server/SS220/GateDungeon/GateDungeonComponent.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,6 @@ public sealed partial class GateDungeonComponent : Component
{
public bool IsCharging = true;

public MapId MapId;

[DataField]
public TimeSpan ChargingTime = TimeSpan.FromSeconds(300);

Expand Down
119 changes: 59 additions & 60 deletions Content.Server/SS220/GateDungeon/GateDungeonSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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!;
Expand All @@ -48,73 +46,16 @@ private void OnCreateDungeon(Entity<GateDungeonComponent> 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<GateDungeonComponent>();

var entGates = new List<EntityUid>();

while (gates.MoveNext(out var entDungeon, out _))
{
entGates.Add(entDungeon);
}

_gateList = Enum.GetValues(typeof(GateType))
.Cast<GateType>()
.ToDictionary(gateType => gateType, _ => new List<EntityUid>());


foreach (var gate in entGates)
{
if(!TryComp<GateDungeonComponent>(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)
{
if (!TryComp<GateDungeonComponent>(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]);
Expand All @@ -129,6 +70,8 @@ private void ChargingDone(EntityUid ent)

_appearance.SetData(ent, GatewayVisuals.Active, true);

gateComp.IsCharging = false;

EnsureComp<PortalComponent>(currentGateStart, out var portalStartComp);
EnsureComp<PortalComponent>(currentGateEnd, out var portalMediumComp);

Expand Down Expand Up @@ -164,6 +107,62 @@ private void OnDelete(Entity<GateDungeonComponent> 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<GateDungeonComponent>();

var entGates = new List<EntityUid>();

while (gates.MoveNext(out var entDungeon, out _))
{
entGates.Add(entDungeon);
}

_gateList = Enum.GetValues(typeof(GateType))
.Cast<GateType>()
.ToDictionary(gateType => gateType, _ => new List<EntityUid>());


foreach (var gate in entGates)
{
if(!TryComp<GateDungeonComponent>(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
Expand Down
2 changes: 1 addition & 1 deletion Resources/Locale/ru-RU/ss220/gate-dungeon/gate-dungeon.ftl
Original file line number Diff line number Diff line change
@@ -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 }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

- type: entity
parent: BaseGateway
id: GatewayDungeonMedium
id: GatewayDungeonMid
suffix: Start dungeon
components:
- type: GateDungeon
Expand Down

0 comments on commit 66424e5

Please sign in to comment.