Power improvements:
* crashes fixed * made lights an RSI.
This commit is contained in:
@@ -129,7 +129,7 @@ namespace Content.Server.GameObjects.Components.Power
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnRemove()
|
public override void Shutdown()
|
||||||
{
|
{
|
||||||
if (Owner.TryGetComponent(out PowerNodeComponent node))
|
if (Owner.TryGetComponent(out PowerNodeComponent node))
|
||||||
{
|
{
|
||||||
@@ -143,20 +143,25 @@ namespace Content.Server.GameObjects.Components.Power
|
|||||||
node.OnPowernetRegenerate -= PowernetRegenerate;
|
node.OnPowernetRegenerate -= PowernetRegenerate;
|
||||||
}
|
}
|
||||||
|
|
||||||
base.OnRemove();
|
if (Provider != null)
|
||||||
|
{
|
||||||
|
Provider.RemoveDevice(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
base.Shutdown();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void LoadParameters(YamlMappingNode mapping)
|
public override void LoadParameters(YamlMappingNode mapping)
|
||||||
{
|
{
|
||||||
if (mapping.TryGetNode("Drawtype", out YamlNode node))
|
if (mapping.TryGetNode("drawtype", out YamlNode node))
|
||||||
{
|
{
|
||||||
DrawType = node.AsEnum<DrawTypes>();
|
DrawType = node.AsEnum<DrawTypes>();
|
||||||
}
|
}
|
||||||
if (mapping.TryGetNode("Load", out node))
|
if (mapping.TryGetNode("load", out node))
|
||||||
{
|
{
|
||||||
Load = node.AsFloat();
|
Load = node.AsFloat();
|
||||||
}
|
}
|
||||||
if (mapping.TryGetNode("Priority", out node))
|
if (mapping.TryGetNode("priority", out node))
|
||||||
{
|
{
|
||||||
Priority = node.AsEnum<Powernet.Priority>();
|
Priority = node.AsEnum<Powernet.Priority>();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ namespace Content.Server.GameObjects.Components.Power
|
|||||||
|
|
||||||
public override void LoadParameters(YamlMappingNode mapping)
|
public override void LoadParameters(YamlMappingNode mapping)
|
||||||
{
|
{
|
||||||
if (mapping.TryGetNode("Supply", out YamlNode node))
|
if (mapping.TryGetNode("supply", out YamlNode node))
|
||||||
{
|
{
|
||||||
Supply = node.AsFloat();
|
Supply = node.AsFloat();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,27 +31,38 @@ namespace Content.Server.GameObjects.Components.Power
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public SortedSet<PowerDeviceComponent> DeviceLoadList = new SortedSet<PowerDeviceComponent>(new Powernet.DevicePriorityCompare());
|
public SortedSet<PowerDeviceComponent> DeviceLoadList = new SortedSet<PowerDeviceComponent>(new Powernet.DevicePriorityCompare());
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// List of devices in range that we "advertised" to.
|
||||||
|
/// </summary>
|
||||||
|
public HashSet<PowerDeviceComponent> AdvertisedDevices = new HashSet<PowerDeviceComponent>();
|
||||||
|
|
||||||
public List<PowerDeviceComponent> DepoweredDevices = new List<PowerDeviceComponent>();
|
public List<PowerDeviceComponent> DepoweredDevices = new List<PowerDeviceComponent>();
|
||||||
|
|
||||||
public override Powernet.Priority Priority { get; protected set; } = Powernet.Priority.Provider;
|
public override Powernet.Priority Priority { get; protected set; } = Powernet.Priority.Provider;
|
||||||
|
|
||||||
public override void OnRemove()
|
public PowerProviderComponent()
|
||||||
{
|
{
|
||||||
base.OnRemove();
|
Load = 0;
|
||||||
|
}
|
||||||
|
|
||||||
foreach (var device in DeviceLoadList)
|
public override void Shutdown()
|
||||||
|
{
|
||||||
|
base.Shutdown();
|
||||||
|
|
||||||
|
foreach (var device in AdvertisedDevices.ToList())
|
||||||
{
|
{
|
||||||
device.RemoveProvider(this);
|
device.RemoveProvider(this);
|
||||||
}
|
}
|
||||||
|
AdvertisedDevices.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void LoadParameters(YamlMappingNode mapping)
|
public override void LoadParameters(YamlMappingNode mapping)
|
||||||
{
|
{
|
||||||
if (mapping.TryGetNode("Range", out YamlNode node))
|
if (mapping.TryGetNode("range", out YamlNode node))
|
||||||
{
|
{
|
||||||
PowerRange = node.AsInt();
|
PowerRange = node.AsInt();
|
||||||
}
|
}
|
||||||
if (mapping.TryGetNode("Priority", out node))
|
if (mapping.TryGetNode("priority", out node))
|
||||||
{
|
{
|
||||||
Priority = node.AsEnum<Powernet.Priority>();
|
Priority = node.AsEnum<Powernet.Priority>();
|
||||||
}
|
}
|
||||||
@@ -139,7 +150,11 @@ namespace Content.Server.GameObjects.Components.Power
|
|||||||
//Make sure the device can accept power providers to give it power
|
//Make sure the device can accept power providers to give it power
|
||||||
if (device.DrawType == DrawTypes.Provider || device.DrawType == DrawTypes.Both)
|
if (device.DrawType == DrawTypes.Provider || device.DrawType == DrawTypes.Both)
|
||||||
{
|
{
|
||||||
device.AddProvider(this);
|
if (!AdvertisedDevices.Contains(device))
|
||||||
|
{
|
||||||
|
device.AddProvider(this);
|
||||||
|
AdvertisedDevices.Add(device);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -150,10 +165,11 @@ namespace Content.Server.GameObjects.Components.Power
|
|||||||
base.PowernetDisconnect(sender, eventarg);
|
base.PowernetDisconnect(sender, eventarg);
|
||||||
|
|
||||||
//We don't want to make the devices under us think we're still a valid provider if we have no powernet to connect to
|
//We don't want to make the devices under us think we're still a valid provider if we have no powernet to connect to
|
||||||
foreach (var device in DeviceLoadList.ToList())
|
foreach (var device in AdvertisedDevices.ToList())
|
||||||
{
|
{
|
||||||
device.RemoveProvider(this);
|
device.RemoveProvider(this);
|
||||||
}
|
}
|
||||||
|
AdvertisedDevices.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -194,7 +210,7 @@ namespace Content.Server.GameObjects.Components.Power
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
var name = device.Owner.Prototype.Name;
|
var name = device.Owner.Prototype.Name;
|
||||||
Logger.Info(String.Format("We tried to remove a device twice from the same {0} somehow, prototype {1}", Name, name));
|
Logger.WarningS("power", "We tried to remove a device twice from the same {0} somehow, prototype {1}", Name, name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,23 +60,23 @@ namespace Content.Server.GameObjects.Components.Power
|
|||||||
|
|
||||||
public override void LoadParameters(YamlMappingNode mapping)
|
public override void LoadParameters(YamlMappingNode mapping)
|
||||||
{
|
{
|
||||||
if (mapping.TryGetNode("Capacity", out YamlNode node))
|
if (mapping.TryGetNode("capacity", out YamlNode node))
|
||||||
{
|
{
|
||||||
Capacity = node.AsFloat();
|
Capacity = node.AsFloat();
|
||||||
}
|
}
|
||||||
if (mapping.TryGetNode("Charge", out node))
|
if (mapping.TryGetNode("charge", out node))
|
||||||
{
|
{
|
||||||
Charge = node.AsFloat();
|
Charge = node.AsFloat();
|
||||||
}
|
}
|
||||||
if (mapping.TryGetNode("ChargeRate", out node))
|
if (mapping.TryGetNode("chargerate", out node))
|
||||||
{
|
{
|
||||||
ChargeRate = node.AsFloat();
|
ChargeRate = node.AsFloat();
|
||||||
}
|
}
|
||||||
if (mapping.TryGetNode("DistributionRate", out node))
|
if (mapping.TryGetNode("distributionrate", out node))
|
||||||
{
|
{
|
||||||
DistributionRate = node.AsFloat();
|
DistributionRate = node.AsFloat();
|
||||||
}
|
}
|
||||||
if (mapping.TryGetNode("ChargePowernet", out node))
|
if (mapping.TryGetNode("chargepowernet", out node))
|
||||||
{
|
{
|
||||||
_chargepowernet = node.AsBool();
|
_chargepowernet = node.AsBool();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,12 +19,12 @@ namespace Content.Server.GameObjects.Components.Power
|
|||||||
{
|
{
|
||||||
if (args.Powered)
|
if (args.Powered)
|
||||||
{
|
{
|
||||||
sprite.LayerSetTexture(0, "Objects/wall_light.png");
|
sprite.LayerSetState(0, "on");
|
||||||
light.State = LightState.On;
|
light.State = LightState.On;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sprite.LayerSetTexture(0, "Objects/wall_light_off.png");
|
sprite.LayerSetState(0, "off");
|
||||||
light.State = LightState.Off;
|
light.State = LightState.Off;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -303,7 +303,7 @@ namespace Content.Server.GameObjects.Components.Power
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
var name = device.Owner.Prototype.Name;
|
var name = device.Owner.Prototype.Name;
|
||||||
Logger.Info(String.Format("We tried to remove a device twice from the same powernet somehow, prototype {0}", name));
|
Logger.Info("We tried to remove a device twice from the same powernet somehow, prototype {0}", name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -55,9 +55,9 @@
|
|||||||
- type: Icon
|
- type: Icon
|
||||||
texture: Objects/provider.png
|
texture: Objects/provider.png
|
||||||
- type: PowerProvider
|
- type: PowerProvider
|
||||||
Range: 5
|
range: 5
|
||||||
Priority: Provider
|
priority: Provider
|
||||||
Load: 0
|
load: 0
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: WPPnobattery
|
parent: WPPnobattery
|
||||||
@@ -66,10 +66,10 @@
|
|||||||
description: Supplies power at range, has a backup battery just in case
|
description: Supplies power at range, has a backup battery just in case
|
||||||
components:
|
components:
|
||||||
- type: PowerStorage
|
- type: PowerStorage
|
||||||
Capacity: 1000
|
capacity: 1000
|
||||||
Charge: 1000
|
charge: 1000
|
||||||
ChargeRate: 200
|
chargerate: 200
|
||||||
ChargePowernet: false
|
chargepowernet: false
|
||||||
|
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
@@ -86,11 +86,11 @@
|
|||||||
- type: Icon
|
- type: Icon
|
||||||
texture: Objects/storage.png
|
texture: Objects/storage.png
|
||||||
- type: PowerStorage
|
- type: PowerStorage
|
||||||
Capacity: 3000
|
capacity: 3000
|
||||||
Charge: 1000
|
charge: 1000
|
||||||
ChargeRate: 200
|
chargerate: 200
|
||||||
DistributionRate: 400
|
distributionrate: 400
|
||||||
ChargePowernet: true
|
chargepowernet: true
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
id: WiredMachine
|
id: WiredMachine
|
||||||
@@ -106,9 +106,9 @@
|
|||||||
- type: Icon
|
- type: Icon
|
||||||
texture: Objects/wiredmachine.png
|
texture: Objects/wiredmachine.png
|
||||||
- type: PowerDevice
|
- type: PowerDevice
|
||||||
Drawtype: Node
|
drawtype: Node
|
||||||
Load: 100
|
load: 100
|
||||||
Priority: High
|
priority: High
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
id: WirelessMachine
|
id: WirelessMachine
|
||||||
@@ -124,6 +124,6 @@
|
|||||||
- type: Icon
|
- type: Icon
|
||||||
texture: Objects/wirelessmachine.png
|
texture: Objects/wirelessmachine.png
|
||||||
- type: PowerDevice
|
- type: PowerDevice
|
||||||
Drawtype: Both
|
drawtype: Both
|
||||||
Load: 200
|
load: 200
|
||||||
Priority: Low
|
priority: Low
|
||||||
|
|||||||
@@ -1,17 +1,28 @@
|
|||||||
- type: entity
|
- type: entity
|
||||||
name: Light
|
name: Light
|
||||||
id: poweredlight
|
id: poweredlight
|
||||||
parent: __engine_wall_light
|
|
||||||
components:
|
components:
|
||||||
|
- type: Transform
|
||||||
|
- type: Clickable
|
||||||
# So we can click on it for deletion.
|
# So we can click on it for deletion.
|
||||||
- type: BoundingBox
|
- type: BoundingBox
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
texture: Objects/wall_light_off.png
|
sprite: Objects/lighting.rsi
|
||||||
|
state: off
|
||||||
|
|
||||||
|
- type: Icon
|
||||||
|
sprite: Objects/lighting.rsi
|
||||||
|
state: off
|
||||||
|
|
||||||
|
- type: PointLight
|
||||||
|
state: Off
|
||||||
|
radius: 8
|
||||||
|
energy: 1.2
|
||||||
|
offset: "0, -16"
|
||||||
|
color: "#DCDCC6"
|
||||||
|
|
||||||
- type: PowerDevice
|
- type: PowerDevice
|
||||||
load: 1
|
load: 50
|
||||||
priority: Low
|
priority: Low
|
||||||
|
|
||||||
- type: PoweredLight
|
- type: PoweredLight
|
||||||
- type: PointLight
|
|
||||||
state: Off
|
|
||||||
|
|||||||
21
Resources/Textures/Objects/lighting.rsi/meta.json
Normal file
21
Resources/Textures/Objects/lighting.rsi/meta.json
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"size": {
|
||||||
|
"x": 32,
|
||||||
|
"y": 32
|
||||||
|
},
|
||||||
|
"states": [
|
||||||
|
{
|
||||||
|
"name": "on",
|
||||||
|
"select": [],
|
||||||
|
"flags": {},
|
||||||
|
"directions": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "off",
|
||||||
|
"select": [],
|
||||||
|
"flags": {},
|
||||||
|
"directions": 4
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
BIN
Resources/Textures/Objects/lighting.rsi/off.png
Normal file
BIN
Resources/Textures/Objects/lighting.rsi/off.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 576 B |
BIN
Resources/Textures/Objects/lighting.rsi/on.png
Normal file
BIN
Resources/Textures/Objects/lighting.rsi/on.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 842 B |
2
engine
2
engine
Submodule engine updated: 3728c7eeee...b761d9a1eb
Reference in New Issue
Block a user