Piping sprites cleanup (#3022)

* Moves piping visualizers to own folder

* Pump visualizer update

* Siphon and vent visualiser only set enabled visibility

* PipeVisualizer cleanup

* Replaces off vent/scrubber sprites

* Gas filter sprite update

* Revert "Gas filter sprite update"

This reverts commit 676e5d55e1157a229b1445eeea53a5c8032dbbb5.

* Rotates gas filter sprites to match T-junction pipe directions

* Removes pipes from scruber and vent state

* Makes sprite components use layers

* disabled sprite netsync on piping entities

* piping meta.json cleanup

Co-authored-by: py01 <pyronetics01@gmail.com>
This commit is contained in:
py01
2021-01-19 07:26:16 -06:00
committed by GitHub
parent 6a41194bc9
commit f9f724b4af
27 changed files with 251 additions and 358 deletions

View File

@@ -5,7 +5,6 @@ using Robust.Client.GameObjects;
using Robust.Client.Interfaces.GameObjects.Components; using Robust.Client.Interfaces.GameObjects.Components;
using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Interfaces.GameObjects;
using Robust.Shared.Serialization; using Robust.Shared.Serialization;
using Robust.Shared.Utility;
using YamlDotNet.RepresentationModel; using YamlDotNet.RepresentationModel;
namespace Content.Client.GameObjects.Components.Atmos namespace Content.Client.GameObjects.Components.Atmos

View File

@@ -10,6 +10,7 @@ using Robust.Shared.GameObjects.Components.Renderable;
using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Interfaces.GameObjects;
using Robust.Shared.IoC; using Robust.Shared.IoC;
using Robust.Shared.Log; using Robust.Shared.Log;
using Robust.Shared.Serialization;
using Robust.Shared.Utility; using Robust.Shared.Utility;
using YamlDotNet.RepresentationModel; using YamlDotNet.RepresentationModel;
@@ -18,14 +19,18 @@ namespace Content.Client.GameObjects.Components.Atmos
[UsedImplicitly] [UsedImplicitly]
public class PipeVisualizer : AppearanceVisualizer public class PipeVisualizer : AppearanceVisualizer
{ {
private string _rsiString;
private RSI _pipeRSI; private RSI _pipeRSI;
public override void LoadData(YamlMappingNode node) public override void LoadData(YamlMappingNode node)
{ {
base.LoadData(node); base.LoadData(node);
var rsiString = node.GetNode("pipeRSI").ToString(); var serializer = YamlObjectSerializer.NewReader(node);
var rsiPath = SharedSpriteComponent.TextureRoot / rsiString; serializer.DataField(ref _rsiString, "rsiString", "Constructible/Atmos/pipe.rsi");
var rsiPath = SharedSpriteComponent.TextureRoot / _rsiString;
try try
{ {
var resourceCache = IoCManager.Resolve<IResourceCache>(); var resourceCache = IoCManager.Resolve<IResourceCache>();

View File

@@ -1,9 +1,9 @@
using Content.Shared.GameObjects.Components.Atmos; using Content.Shared.GameObjects.Components.Atmos;
using JetBrains.Annotations; using JetBrains.Annotations;
using Robust.Client.GameObjects; using Robust.Client.GameObjects;
using Robust.Client.Interfaces.GameObjects.Components; using Robust.Client.Interfaces.GameObjects.Components;
using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Interfaces.GameObjects;
using Robust.Shared.Utility; using Robust.Shared.Serialization;
using YamlDotNet.RepresentationModel; using YamlDotNet.RepresentationModel;
namespace Content.Client.GameObjects.Components.Atmos namespace Content.Client.GameObjects.Components.Atmos
@@ -16,7 +16,9 @@ namespace Content.Client.GameObjects.Components.Atmos
public override void LoadData(YamlMappingNode node) public override void LoadData(YamlMappingNode node)
{ {
base.LoadData(node); base.LoadData(node);
_pumpEnabledState = node.GetNode("pumpEnabledState").ToString();
var serializer = YamlObjectSerializer.NewReader(node);
serializer.DataField(ref _pumpEnabledState, "pumpEnabledState", "pumpPressureOn");
} }
public override void InitializeEntity(IEntity entity) public override void InitializeEntity(IEntity entity)

View File

@@ -0,0 +1,51 @@
using JetBrains.Annotations;
using Robust.Client.GameObjects;
using Robust.Client.Interfaces.GameObjects.Components;
using Content.Shared.GameObjects.Components.Atmos;
using YamlDotNet.RepresentationModel;
using Robust.Shared.Interfaces.GameObjects;
using Robust.Shared.Serialization;
namespace Content.Client.GameObjects.Components.Atmos
{
[UsedImplicitly]
public class SiphonVisualizer : AppearanceVisualizer
{
private string _siphonOnState;
public override void LoadData(YamlMappingNode node)
{
base.LoadData(node);
var serializer = YamlObjectSerializer.NewReader(node);
serializer.DataField(ref _siphonOnState, "siphonOnState", "scrubOn");
}
public override void InitializeEntity(IEntity entity)
{
base.InitializeEntity(entity);
if (!entity.TryGetComponent(out ISpriteComponent sprite)) return;
sprite.LayerMapReserveBlank(Layer.SiphonEnabled);
var layer = sprite.LayerMapGet(Layer.SiphonEnabled);
sprite.LayerSetState(layer, _siphonOnState);
}
public override void OnChangeData(AppearanceComponent component)
{
base.OnChangeData(component);
if (!component.Owner.TryGetComponent(out ISpriteComponent sprite)) return;
if (!component.TryGetData(SiphonVisuals.VisualState, out SiphonVisualState siphonVisualState)) return;
var layer = sprite.LayerMapGet(Layer.SiphonEnabled);
sprite.LayerSetVisible(layer, siphonVisualState.SiphonEnabled);
}
private enum Layer : byte
{
SiphonEnabled,
}
}
}

View File

@@ -0,0 +1,51 @@
using JetBrains.Annotations;
using Robust.Client.GameObjects;
using Robust.Client.Interfaces.GameObjects.Components;
using Content.Shared.GameObjects.Components.Atmos;
using YamlDotNet.RepresentationModel;
using Robust.Shared.Interfaces.GameObjects;
using Robust.Shared.Serialization;
namespace Content.Client.GameObjects.Components.Atmos
{
[UsedImplicitly]
public class VentVisualizer : AppearanceVisualizer
{
private string _ventOnstate;
public override void LoadData(YamlMappingNode node)
{
base.LoadData(node);
var serializer = YamlObjectSerializer.NewReader(node);
serializer.DataField(ref _ventOnstate, "ventOnState", "ventOn");
}
public override void InitializeEntity(IEntity entity)
{
base.InitializeEntity(entity);
if (!entity.TryGetComponent(out ISpriteComponent sprite)) return;
sprite.LayerMapReserveBlank(Layer.VentEnabled);
var layer = sprite.LayerMapGet(Layer.VentEnabled);
sprite.LayerSetState(layer, _ventOnstate);
}
public override void OnChangeData(AppearanceComponent component)
{
base.OnChangeData(component);
if (!component.Owner.TryGetComponent(out ISpriteComponent sprite)) return;
if (!component.TryGetData(VentVisuals.VisualState, out VentVisualState ventVisualState)) return;
var layer = sprite.LayerMapGet(Layer.VentEnabled);
sprite.LayerSetVisible(layer, ventVisualState.VentEnabled);
}
private enum Layer : byte
{
VentEnabled,
}
}
}

View File

@@ -1,72 +0,0 @@
using JetBrains.Annotations;
using Robust.Client.GameObjects;
using Robust.Client.Graphics;
using Robust.Client.Interfaces.GameObjects.Components;
using Robust.Client.Interfaces.ResourceManagement;
using Robust.Client.ResourceManagement;
using Robust.Shared.GameObjects.Components.Renderable;
using Robust.Shared.IoC;
using Robust.Shared.Log;
using Robust.Shared.Utility;
using System;
using Content.Shared.GameObjects.Components.Atmos;
using YamlDotNet.RepresentationModel;
using Robust.Shared.Interfaces.GameObjects;
namespace Content.Client.GameObjects.Components.Atmos
{
[UsedImplicitly]
public class SiphonVisualizer : AppearanceVisualizer
{
private RSI _siphonRSI;
public override void LoadData(YamlMappingNode node)
{
base.LoadData(node);
var rsiString = node.GetNode("siphonRSI").ToString();
var rsiPath = SharedSpriteComponent.TextureRoot / rsiString;
try
{
var resourceCache = IoCManager.Resolve<IResourceCache>();
var resource = resourceCache.GetResource<RSIResource>(rsiPath);
_siphonRSI = resource.RSI;
}
catch (Exception e)
{
Logger.ErrorS("go.siphonvisualizer", "Unable to load RSI '{0}'. Trace:\n{1}", rsiPath, e);
}
}
public override void InitializeEntity(IEntity entity)
{
base.InitializeEntity(entity);
if (!entity.TryGetComponent(out ISpriteComponent sprite)) return;
sprite.LayerMapReserveBlank(Layer.SiphonBase);
var pipeBaseLayer = sprite.LayerMapGet(Layer.SiphonBase);
sprite.LayerSetRSI(pipeBaseLayer, _siphonRSI);
sprite.LayerSetVisible(pipeBaseLayer, true);
}
public override void OnChangeData(AppearanceComponent component)
{
base.OnChangeData(component);
if (!component.Owner.TryGetComponent(out ISpriteComponent sprite)) return;
if (!component.TryGetData(SiphonVisuals.VisualState, out SiphonVisualState siphonVisualState)) return;
var siphonBaseState = "scrub";
siphonBaseState += siphonVisualState.SiphonEnabled ? "On" : "Off";
var baseSiphonLayer = sprite.LayerMapGet(Layer.SiphonBase);
sprite.LayerSetRSI(baseSiphonLayer, _siphonRSI);
sprite.LayerSetState(baseSiphonLayer, siphonBaseState);
sprite.LayerSetVisible(baseSiphonLayer, true);
}
private enum Layer : byte
{
SiphonBase,
}
}
}

View File

@@ -1,72 +0,0 @@
using JetBrains.Annotations;
using Robust.Client.GameObjects;
using Robust.Client.Graphics;
using Robust.Client.Interfaces.GameObjects.Components;
using Robust.Client.Interfaces.ResourceManagement;
using Robust.Client.ResourceManagement;
using Robust.Shared.GameObjects.Components.Renderable;
using Robust.Shared.IoC;
using Robust.Shared.Log;
using Robust.Shared.Utility;
using System;
using Content.Shared.GameObjects.Components.Atmos;
using YamlDotNet.RepresentationModel;
using Robust.Shared.Interfaces.GameObjects;
namespace Content.Client.GameObjects.Components.Atmos
{
[UsedImplicitly]
public class VentVisualizer : AppearanceVisualizer
{
private RSI _ventRSI;
public override void LoadData(YamlMappingNode node)
{
base.LoadData(node);
var rsiString = node.GetNode("ventRSI").ToString();
var rsiPath = SharedSpriteComponent.TextureRoot / rsiString;
try
{
var resourceCache = IoCManager.Resolve<IResourceCache>();
var resource = resourceCache.GetResource<RSIResource>(rsiPath);
_ventRSI = resource.RSI;
}
catch (Exception e)
{
Logger.ErrorS("go.ventvisualizer", "Unable to load RSI '{0}'. Trace:\n{1}", rsiPath, e);
}
}
public override void InitializeEntity(IEntity entity)
{
base.InitializeEntity(entity);
if (!entity.TryGetComponent(out ISpriteComponent sprite)) return;
sprite.LayerMapReserveBlank(Layer.VentBase);
var pipeBaseLayer = sprite.LayerMapGet(Layer.VentBase);
sprite.LayerSetRSI(pipeBaseLayer, _ventRSI);
sprite.LayerSetVisible(pipeBaseLayer, true);
}
public override void OnChangeData(AppearanceComponent component)
{
base.OnChangeData(component);
if (!component.Owner.TryGetComponent(out ISpriteComponent sprite)) return;
if (!component.TryGetData(VentVisuals.VisualState, out VentVisualState ventVisualState)) return;
var ventBaseState = "vent";
ventBaseState += ventVisualState.VentEnabled ? "On" : "Off";
var baseVentLayer = sprite.LayerMapGet(Layer.VentBase);
sprite.LayerSetRSI(baseVentLayer, _ventRSI);
sprite.LayerSetState(baseVentLayer, ventBaseState);
sprite.LayerSetVisible(baseVentLayer, true);
}
private enum Layer : byte
{
VentBase,
}
}
}

View File

@@ -10,15 +10,12 @@
- type: SnapGrid - type: SnapGrid
offset: Center offset: Center
- type: Sprite - type: Sprite
netsync: false
sprite: Constructible/Atmos/gascanisterport.rsi sprite: Constructible/Atmos/gascanisterport.rsi
state: gasCanisterPort layers:
- type: Icon - sprite: Constructible/Atmos/pipe.rsi
sprite: Constructible/Atmos/gascanisterport.rsi state: pipeHalf
state: gasCanisterPort - state: gasCanisterPort
- type: Appearance
visuals:
- type: PipeVisualizer
pipeRSI: Constructible/Atmos/pipe.rsi
- type: Damageable - type: Damageable
- type: Destructible - type: Destructible
thresholds: thresholds:

View File

@@ -17,19 +17,23 @@
behaviors: behaviors:
- !type:DoActsBehavior - !type:DoActsBehavior
acts: ["Destruction"] acts: ["Destruction"]
- type: Sprite
netsync: false
sprite: Constructible/Atmos/gasfilter.rsi
layers:
- sprite: Constructible/Atmos/pipe.rsi
state: pipeTJunction
- state: gasFilter
- type: Appearance
visuals:
- type: GasFilterVisualizer
- type: entity - type: entity
parent: GasFilterBase parent: GasFilterBase
id: GasFilter id: GasFilter
name: Gas Filter name: Gas Filter
description: It filters gases. description: It filters gases.
components: components:
- type: Sprite
sprite: Constructible/Atmos/gasfilter.rsi
state: gasFilter
- type: Icon
sprite: Constructible/Atmos/gasfilter.rsi
state: gasFilter
- type: NodeContainer - type: NodeContainer
nodes: nodes:
- !type:PipeNode - !type:PipeNode
@@ -45,7 +49,3 @@
inletDirection: South inletDirection: South
filterOutletDirection: East filterOutletDirection: East
outletDirection: North outletDirection: North
- type: Appearance
visuals:
- type: GasFilterVisualizer
filerEnabledState: gasFilterOn

View File

@@ -19,10 +19,10 @@
- !type:DoActsBehavior - !type:DoActsBehavior
acts: ["Destruction"] acts: ["Destruction"]
- type: Sprite - type: Sprite
netsync: false
- type: Appearance - type: Appearance
visuals: visuals:
- type: PipeVisualizer - type: PipeVisualizer
pipeRSI: Constructible/Atmos/pipe.rsi
- type: Icon - type: Icon
sprite: Constructible/Atmos/pipe.rsi sprite: Constructible/Atmos/pipe.rsi

View File

@@ -18,9 +18,15 @@
- !type:DoActsBehavior - !type:DoActsBehavior
acts: ["Destruction"] acts: ["Destruction"]
- type: Sprite - type: Sprite
netsync: false
sprite: Constructible/Atmos/pump.rsi sprite: Constructible/Atmos/pump.rsi
- type: Icon layers:
sprite: Constructible/Atmos/pump.rsi - sprite: Constructible/Atmos/pipe.rsi
state: pipeStraight
- state: pumpPressure
- type: Appearance
visuals:
- type: PumpVisualizer
- type: entity - type: entity
parent: PumpBase parent: PumpBase
@@ -38,11 +44,4 @@
- type: PressurePump - type: PressurePump
inletDirection: West inletDirection: West
outletDirection: East outletDirection: East
- type: Sprite
state: pumpPressure
- type: Icon
state: pumpPressure
- type: Appearance
visuals:
- type: PumpVisualizer
pumpEnabledState: pumpPressureOn

View File

@@ -9,16 +9,6 @@
- type: Physics - type: Physics
- type: SnapGrid - type: SnapGrid
offset: Center offset: Center
- type: Sprite
sprite: Constructible/Atmos/pipeitems.rsi
state: scrubber
- type: Appearance
visuals:
- type: PipeVisualizer
pipeRSI: Constructible/Atmos/pipe.rsi
- type: SiphonVisualizer
siphonRSI: Constructible/Atmos/scrubber.rsi
- type: Damageable - type: Damageable
resistances: metallicResistances resistances: metallicResistances
- type: Destructible - type: Destructible
@@ -27,7 +17,17 @@
behaviors: behaviors:
- !type:DoActsBehavior - !type:DoActsBehavior
acts: ["Destruction"] acts: ["Destruction"]
- type: Sprite
netsync: false
sprite: Constructible/Atmos/scrubber.rsi
layers:
- sprite: Constructible/Atmos/pipe.rsi
state: pipeHalf
- state: scrubOff
- type: Appearance
visuals:
- type: SiphonVisualizer
- type: entity - type: entity
parent: ScrubberBase parent: ScrubberBase
id: Scrubber id: Scrubber

View File

@@ -9,16 +9,6 @@
- type: Physics - type: Physics
- type: SnapGrid - type: SnapGrid
offset: Center offset: Center
- type: Sprite
sprite: Constructible/Atmos/pipeitems.rsi
state: vent
- type: Appearance
visuals:
- type: PipeVisualizer
pipeRSI: Constructible/Atmos/pipe.rsi
- type: VentVisualizer
ventRSI: Constructible/Atmos/vent.rsi
- type: Damageable - type: Damageable
resistances: metallicResistances resistances: metallicResistances
- type: Destructible - type: Destructible
@@ -27,7 +17,17 @@
behaviors: behaviors:
- !type:DoActsBehavior - !type:DoActsBehavior
acts: ["Destruction"] acts: ["Destruction"]
- type: Sprite
netsync: false
sprite: Constructible/Atmos/vent.rsi
layers:
- sprite: Constructible/Atmos/pipe.rsi
state: pipeHalf
- state: ventOff
- type: Appearance
visuals:
- type: VentVisualizer
- type: entity - type: entity
parent: VentBase parent: VentBase
id: Vent id: Vent

View File

@@ -1 +1,15 @@
{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/tgstation/tgstation at commit 57cd1d59ca019dd0e7811ac451f295f818e573da", "states": [{"name": "gasCanisterPort", "directions": 1, "delays": [[1.0]]}]} {
"version":1,
"size":{
"x":32,
"y":32
},
"license":"CC-BY-SA-3.0",
"copyright":"Taken from https://github.com/tgstation/tgstation at commit 57cd1d59ca019dd0e7811ac451f295f818e573da",
"states":[
{
"name":"gasCanisterPort",
"directions":1
}
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 825 B

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -1 +1,20 @@
{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/tgstation/tgstation at commit 57cd1d59ca019dd0e7811ac451f295f818e573da", "states": [{"name": "gasFilter", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "gasFilterOn", "directions": 4, "delays": [[0.2, 0.2, 0.2, 0.2], [0.2, 0.2, 0.2, 0.2], [0.2, 0.2, 0.2, 0.2], [0.2, 0.2, 0.2, 0.2]]}]} {
"version":1,
"size":{
"x":32,
"y":32
},
"license":"CC-BY-SA-3.0",
"copyright":"Taken from https://github.com/tgstation/tgstation at commit 57cd1d59ca019dd0e7811ac451f295f818e573da",
"states":[
{
"name":"gasFilter",
"directions":4
},
{
"name":"gasFilterOn",
"directions":4,
"delays":[ [ 0.2, 0.2, 0.2, 0.2 ], [ 0.2, 0.2, 0.2, 0.2 ], [ 0.2, 0.2, 0.2, 0.2 ], [ 0.2, 0.2, 0.2, 0.2 ] ]
}
]
}

View File

@@ -9,84 +9,23 @@
"states":[ "states":[
{ {
"name":"pipeTJunction", "name":"pipeTJunction",
"directions":4, "directions":4
"delays":[
[
1.0
],
[
1.0
],
[
1.0
],
[
1.0
]
]
}, },
{ {
"name":"pipeHalf", "name":"pipeHalf",
"directions":4, "directions":4
"delays":[
[
1.0
],
[
1.0
],
[
1.0
],
[
1.0
]
]
}, },
{ {
"name":"pipeBend", "name":"pipeBend",
"directions":4, "directions":4
"delays":[
[
1.0
],
[
1.0
],
[
1.0
],
[
1.0
]
]
}, },
{ {
"name":"pipeFourway", "name":"pipeFourway",
"directions":1, "directions":1
"delays":[
[
1.0
]
]
}, },
{ {
"name":"pipeStraight", "name":"pipeStraight",
"directions":4, "directions":4
"delays":[
[
1.0
],
[
1.0
],
[
1.0
],
[
1.0
]
]
} }
] ]
} }

View File

@@ -1,47 +0,0 @@
{
"version":1,
"size":{
"x":32,
"y":32
},
"license":"CC-BY-SA-3.0",
"copyright":"Taken from https://github.com/tgstation/tgstation at commit 57cd1d59ca019dd0e7811ac451f295f818e573da",
"states":[
{
"name": "scrubber",
"directions": 4,
"delays": [
[
1
],
[
1
],
[
1
],
[
1
]
]
},
{
"name": "vent",
"directions": 4,
"delays": [
[
1
],
[
1
],
[
1
],
[
1
]
]
}
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 649 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -1 +1,45 @@
{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/tgstation/tgstation at commit 57cd1d59ca019dd0e7811ac451f295f818e573da", "states": [{"name": "pumpDigitalValve", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "pumpManualValve", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "pumpPassiveGate", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "pumpPassiveGateOn", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "pumpPressure", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "pumpPressureOn", "directions": 4, "delays": [[0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "pumpVolume", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "pumpVolumeOn", "directions": 4, "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}]} {
"version":1,
"size":{
"x":32,
"y":32
},
"license":"CC-BY-SA-3.0",
"copyright":"Taken from https://github.com/tgstation/tgstation at commit 57cd1d59ca019dd0e7811ac451f295f818e573da",
"states":[
{
"name":"pumpDigitalValve",
"directions":4
},
{
"name":"pumpManualValve",
"directions":4
},
{
"name":"pumpPassiveGate",
"directions":4
},
{
"name":"pumpPassiveGateOn",
"directions":4
},
{
"name":"pumpPressure",
"directions":4
},
{
"name":"pumpPressureOn",
"directions":4,
"delays":[ [ 0.1, 0.1, 0.1, 0.1, 0.1 ], [ 0.1, 0.1, 0.1, 0.1, 0.1 ], [ 0.1, 0.1, 0.1, 0.1, 0.1 ], [ 0.1, 0.1, 0.1, 0.1, 0.1 ] ]
},
{
"name":"pumpVolume",
"directions":4
},
{
"name":"pumpVolumeOn",
"directions":4,
"delays":[ [ 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 ], [ 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 ], [ 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 ], [ 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 ] ]
}
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

@@ -9,40 +9,12 @@
"states":[ "states":[
{ {
"name":"scrubOff", "name":"scrubOff",
"directions":1, "directions":4
"delays":[ [ 1.0 ] ]
}, },
{ {
"name":"scrubOn", "name":"scrubOn",
"directions":1, "directions":1,
"delays":[ "delays":[ [ 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08 ] ]
[
0.08,
0.08,
0.08,
0.08,
0.08,
0.08,
0.08,
0.08,
0.08,
0.08,
0.08,
0.08,
0.08,
0.08,
0.08,
0.08,
0.08,
0.08,
0.08,
0.08,
0.08,
0.08,
0.08,
0.08
]
]
} }
] ]
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 767 B

After

Width:  |  Height:  |  Size: 6.0 KiB

View File

@@ -9,20 +9,12 @@
"states":[ "states":[
{ {
"name":"ventOff", "name":"ventOff",
"directions":1, "directions":4
"delays":[ [ 1.0 ] ]
}, },
{ {
"name":"ventOn", "name":"ventOn",
"directions":1, "directions":1,
"delays":[ "delays":[ [ 0.08, 0.08, 0.08, 0.08 ] ]
[
0.08,
0.08,
0.08,
0.08
]
]
} }
] ]
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 612 B

After

Width:  |  Height:  |  Size: 6.4 KiB