Skip to content

Commit

Permalink
Pow3r goes brrr with generational IDs.
Browse files Browse the repository at this point in the history
  • Loading branch information
PJB3005 committed Jul 31, 2021
1 parent b92a2ba commit 73e4946
Show file tree
Hide file tree
Showing 5 changed files with 310 additions and 78 deletions.
30 changes: 10 additions & 20 deletions Content.Server/Power/EntitySystems/PowerNetSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ public class PowerNetSystem : EntitySystem
private readonly HashSet<PowerNet> _powerNetReconnectQueue = new();
private readonly HashSet<ApcNet> _apcNetReconnectQueue = new();

private int _nextId = 1;
private readonly BatteryRampPegSolver _solver = new();

public override void Initialize()
Expand Down Expand Up @@ -50,7 +49,7 @@ private void ApcPowerReceiverInit(EntityUid uid, ApcPowerReceiverComponent compo
private void ApcPowerReceiverShutdown(EntityUid uid, ApcPowerReceiverComponent component,
ComponentShutdown args)
{
_powerState.Loads.Remove(component.NetworkLoad.Id);
_powerState.Loads.Free(component.NetworkLoad.Id);
}

private static void ApcPowerReceiverPaused(
Expand All @@ -68,7 +67,7 @@ private void BatteryInit(EntityUid uid, PowerNetworkBatteryComponent component,

private void BatteryShutdown(EntityUid uid, PowerNetworkBatteryComponent component, ComponentShutdown args)
{
_powerState.Batteries.Remove(component.NetworkBattery.Id);
_powerState.Batteries.Free(component.NetworkBattery.Id);
}

private static void BatteryPaused(EntityUid uid, PowerNetworkBatteryComponent component, EntityPausedEvent args)
Expand All @@ -83,7 +82,7 @@ private void PowerConsumerInit(EntityUid uid, PowerConsumerComponent component,

private void PowerConsumerShutdown(EntityUid uid, PowerConsumerComponent component, ComponentShutdown args)
{
_powerState.Loads.Remove(component.NetworkLoad.Id);
_powerState.Loads.Free(component.NetworkLoad.Id);
}

private static void PowerConsumerPaused(EntityUid uid, PowerConsumerComponent component, EntityPausedEvent args)
Expand All @@ -98,7 +97,7 @@ private void PowerSupplierInit(EntityUid uid, PowerSupplierComponent component,

private void PowerSupplierShutdown(EntityUid uid, PowerSupplierComponent component, ComponentShutdown args)
{
_powerState.Supplies.Remove(component.NetworkSupply.Id);
_powerState.Supplies.Free(component.NetworkSupply.Id);
}

private static void PowerSupplierPaused(EntityUid uid, PowerSupplierComponent component, EntityPausedEvent args)
Expand All @@ -113,7 +112,7 @@ public void InitPowerNet(PowerNet powerNet)

public void DestroyPowerNet(PowerNet powerNet)
{
_powerState.Networks.Remove(powerNet.NetworkNode.Id);
_powerState.Networks.Free(powerNet.NetworkNode.Id);
}

public void QueueReconnectPowerNet(PowerNet powerNet)
Expand All @@ -128,7 +127,7 @@ public void InitApcNet(ApcNet apcNet)

public void DestroyApcNet(ApcNet apcNet)
{
_powerState.Networks.Remove(apcNet.NetworkNode.Id);
_powerState.Networks.Free(apcNet.NetworkNode.Id);
}

public void QueueReconnectApcNet(ApcNet apcNet)
Expand Down Expand Up @@ -213,26 +212,22 @@ public override void Update(float frameTime)

private void AllocLoad(PowerState.Load load)
{
load.Id = AllocId();
_powerState.Loads.Add(load.Id, load);
_powerState.Loads.Allocate(out load.Id) = load;
}

private void AllocSupply(PowerState.Supply supply)
{
supply.Id = AllocId();
_powerState.Supplies.Add(supply.Id, supply);
_powerState.Supplies.Allocate(out supply.Id) = supply;
}

private void AllocBattery(PowerState.Battery battery)
{
battery.Id = AllocId();
_powerState.Batteries.Add(battery.Id, battery);
_powerState.Batteries.Allocate(out battery.Id) = battery;
}

private void AllocNetwork(PowerState.Network network)
{
network.Id = AllocId();
_powerState.Networks.Add(network.Id, network);
_powerState.Networks.Allocate(out network.Id) = network;
}

private static void DoReconnectApcNet(ApcNet net)
Expand Down Expand Up @@ -296,11 +291,6 @@ private static void DoReconnectPowerNet(PowerNet net)
battery.NetworkBattery.LinkedNetworkDischarging = netNode.Id;
}
}

private PowerState.NodeId AllocId()
{
return new(_nextId++);
}
}

/// <summary>
Expand Down
Loading

0 comments on commit 73e4946

Please sign in to comment.