@@ -68,7 +68,7 @@ public sealed class DoorSystem : SharedDoorSystem
|
|||||||
{
|
{
|
||||||
new AnimationTrackSpriteFlick
|
new AnimationTrackSpriteFlick
|
||||||
{
|
{
|
||||||
LayerKey = DoorVisualLayers.BaseUnlit,
|
LayerKey = DoorVisualLayers.BaseEmagging,
|
||||||
KeyFrames =
|
KeyFrames =
|
||||||
{
|
{
|
||||||
new AnimationTrackSpriteFlick.KeyFrame(comp.EmaggingSpriteState, 0f),
|
new AnimationTrackSpriteFlick.KeyFrame(comp.EmaggingSpriteState, 0f),
|
||||||
@@ -92,6 +92,10 @@ public sealed class DoorSystem : SharedDoorSystem
|
|||||||
if (_animationSystem.HasRunningAnimation(entity, DoorComponent.AnimationKey))
|
if (_animationSystem.HasRunningAnimation(entity, DoorComponent.AnimationKey))
|
||||||
_animationSystem.Stop(entity.Owner, DoorComponent.AnimationKey);
|
_animationSystem.Stop(entity.Owner, DoorComponent.AnimationKey);
|
||||||
|
|
||||||
|
// We are checking beforehand since some doors may not have an emagging visual layer, and we don't want LayerSetVisible to throw an error.
|
||||||
|
if (_sprite.TryGetLayer(entity.Owner, DoorVisualLayers.BaseEmagging, out var _, false))
|
||||||
|
_sprite.LayerSetVisible(entity.Owner, DoorVisualLayers.BaseEmagging, state == DoorState.Emagging);
|
||||||
|
|
||||||
UpdateAppearanceForDoorState(entity, args.Sprite, state);
|
UpdateAppearanceForDoorState(entity, args.Sprite, state);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -134,6 +138,8 @@ public sealed class DoorSystem : SharedDoorSystem
|
|||||||
|
|
||||||
return;
|
return;
|
||||||
case DoorState.Emagging:
|
case DoorState.Emagging:
|
||||||
|
// We are checking beforehand since some doors may not have an emagging visual layer.
|
||||||
|
if (_sprite.TryGetLayer(entity.Owner, DoorVisualLayers.BaseEmagging, out var _, false))
|
||||||
_animationSystem.Play(entity, (Animation)entity.Comp.EmaggingAnimation, DoorComponent.AnimationKey);
|
_animationSystem.Play(entity, (Animation)entity.Comp.EmaggingAnimation, DoorComponent.AnimationKey);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -325,4 +325,5 @@ public enum DoorVisualLayers : byte
|
|||||||
BaseUnlit,
|
BaseUnlit,
|
||||||
BaseBolted,
|
BaseBolted,
|
||||||
BaseEmergencyAccess,
|
BaseEmergencyAccess,
|
||||||
|
BaseEmagging,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,6 +45,10 @@
|
|||||||
shader: unshaded
|
shader: unshaded
|
||||||
visible: false
|
visible: false
|
||||||
map: ["enum.ElectrifiedLayers.Sparks"]
|
map: ["enum.ElectrifiedLayers.Sparks"]
|
||||||
|
- state: sparks
|
||||||
|
map: ["enum.DoorVisualLayers.BaseEmagging"]
|
||||||
|
shader: unshaded
|
||||||
|
visible: false
|
||||||
- type: AnimationPlayer
|
- type: AnimationPlayer
|
||||||
- type: Physics
|
- type: Physics
|
||||||
- type: Fixtures
|
- type: Fixtures
|
||||||
|
|||||||
@@ -42,6 +42,10 @@
|
|||||||
shader: unshaded
|
shader: unshaded
|
||||||
visible: false
|
visible: false
|
||||||
map: ["enum.ElectrifiedLayers.Sparks"]
|
map: ["enum.ElectrifiedLayers.Sparks"]
|
||||||
|
- state: sparks
|
||||||
|
map: ["enum.DoorVisualLayers.BaseEmagging"]
|
||||||
|
shader: unshaded
|
||||||
|
visible: false
|
||||||
- type: AnimationPlayer
|
- type: AnimationPlayer
|
||||||
- type: Physics
|
- type: Physics
|
||||||
- type: Fixtures
|
- type: Fixtures
|
||||||
|
|||||||
@@ -31,6 +31,33 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Structures/Doors/Airlocks/Standard/shuttle.rsi
|
sprite: Structures/Doors/Airlocks/Standard/shuttle.rsi
|
||||||
snapCardinals: false
|
snapCardinals: false
|
||||||
|
layers:
|
||||||
|
- state: closed
|
||||||
|
map: ["enum.DoorVisualLayers.Base"]
|
||||||
|
- state: closed_unlit
|
||||||
|
shader: unshaded
|
||||||
|
map: ["enum.DoorVisualLayers.BaseUnlit"]
|
||||||
|
visible: false
|
||||||
|
- state: welded
|
||||||
|
map: ["enum.WeldableLayers.BaseWelded"]
|
||||||
|
- state: bolted_unlit
|
||||||
|
shader: unshaded
|
||||||
|
map: ["enum.DoorVisualLayers.BaseBolted"]
|
||||||
|
- state: emergency_unlit
|
||||||
|
map: ["enum.DoorVisualLayers.BaseEmergencyAccess"]
|
||||||
|
shader: unshaded
|
||||||
|
- state: panel_open
|
||||||
|
map: ["enum.WiresVisualLayers.MaintenancePanel"]
|
||||||
|
- state: electrified_ai
|
||||||
|
sprite: Interface/Misc/ai_hud.rsi
|
||||||
|
shader: unshaded
|
||||||
|
visible: false
|
||||||
|
map: ["enum.ElectrifiedLayers.HUD"]
|
||||||
|
- state: electrified
|
||||||
|
sprite: Effects/electricity.rsi
|
||||||
|
shader: unshaded
|
||||||
|
visible: false
|
||||||
|
map: ["enum.ElectrifiedLayers.Sparks"]
|
||||||
- type: Wires
|
- type: Wires
|
||||||
layoutId: Docking
|
layoutId: Docking
|
||||||
- type: Door
|
- type: Door
|
||||||
|
|||||||
@@ -57,6 +57,10 @@
|
|||||||
shader: unshaded
|
shader: unshaded
|
||||||
visible: false
|
visible: false
|
||||||
map: ["enum.ElectrifiedLayers.Sparks"]
|
map: ["enum.ElectrifiedLayers.Sparks"]
|
||||||
|
- state: sparks
|
||||||
|
map: ["enum.DoorVisualLayers.BaseEmagging"]
|
||||||
|
shader: unshaded
|
||||||
|
visible: false
|
||||||
- type: AnimationPlayer
|
- type: AnimationPlayer
|
||||||
- type: ApcPowerReceiver
|
- type: ApcPowerReceiver
|
||||||
- type: ExtensionCableReceiver
|
- type: ExtensionCableReceiver
|
||||||
@@ -208,6 +212,10 @@
|
|||||||
shader: unshaded
|
shader: unshaded
|
||||||
visible: false
|
visible: false
|
||||||
map: [ "enum.ElectrifiedLayers.Sparks" ]
|
map: [ "enum.ElectrifiedLayers.Sparks" ]
|
||||||
|
- state: sparks
|
||||||
|
map: ["enum.DoorVisualLayers.BaseEmagging"]
|
||||||
|
shader: unshaded
|
||||||
|
visible: false
|
||||||
- type: Damageable
|
- type: Damageable
|
||||||
damageModifierSet: RGlass
|
damageModifierSet: RGlass
|
||||||
- type: Destructible
|
- type: Destructible
|
||||||
@@ -279,6 +287,10 @@
|
|||||||
shader: unshaded
|
shader: unshaded
|
||||||
visible: false
|
visible: false
|
||||||
map: [ "enum.ElectrifiedLayers.Sparks" ]
|
map: [ "enum.ElectrifiedLayers.Sparks" ]
|
||||||
|
- state: sparks
|
||||||
|
map: ["enum.DoorVisualLayers.BaseEmagging"]
|
||||||
|
shader: unshaded
|
||||||
|
visible: false
|
||||||
- type: Destructible
|
- type: Destructible
|
||||||
thresholds:
|
thresholds:
|
||||||
- trigger:
|
- trigger:
|
||||||
@@ -345,6 +357,10 @@
|
|||||||
shader: unshaded
|
shader: unshaded
|
||||||
visible: false
|
visible: false
|
||||||
map: [ "enum.ElectrifiedLayers.Sparks" ]
|
map: [ "enum.ElectrifiedLayers.Sparks" ]
|
||||||
|
- state: sparks
|
||||||
|
map: ["enum.DoorVisualLayers.BaseEmagging"]
|
||||||
|
shader: unshaded
|
||||||
|
visible: false
|
||||||
- type: Destructible
|
- type: Destructible
|
||||||
thresholds:
|
thresholds:
|
||||||
- trigger:
|
- trigger:
|
||||||
@@ -416,6 +432,10 @@
|
|||||||
shader: unshaded
|
shader: unshaded
|
||||||
visible: false
|
visible: false
|
||||||
map: [ "enum.ElectrifiedLayers.Sparks" ]
|
map: [ "enum.ElectrifiedLayers.Sparks" ]
|
||||||
|
- state: sparks
|
||||||
|
map: ["enum.DoorVisualLayers.BaseEmagging"]
|
||||||
|
shader: unshaded
|
||||||
|
visible: false
|
||||||
- type: Destructible
|
- type: Destructible
|
||||||
thresholds:
|
thresholds:
|
||||||
- trigger:
|
- trigger:
|
||||||
@@ -482,6 +502,10 @@
|
|||||||
shader: unshaded
|
shader: unshaded
|
||||||
visible: false
|
visible: false
|
||||||
map: [ "enum.ElectrifiedLayers.Sparks" ]
|
map: [ "enum.ElectrifiedLayers.Sparks" ]
|
||||||
|
- state: sparks
|
||||||
|
map: ["enum.DoorVisualLayers.BaseEmagging"]
|
||||||
|
shader: unshaded
|
||||||
|
visible: false
|
||||||
- type: Destructible
|
- type: Destructible
|
||||||
thresholds:
|
thresholds:
|
||||||
- trigger:
|
- trigger:
|
||||||
|
|||||||
@@ -6,6 +6,33 @@
|
|||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Structures/Doors/Windoors/clockwork_windoor.rsi
|
sprite: Structures/Doors/Windoors/clockwork_windoor.rsi
|
||||||
|
layers:
|
||||||
|
- state: closed
|
||||||
|
map: ["enum.DoorVisualLayers.Base"]
|
||||||
|
- state: closed_unlit
|
||||||
|
shader: unshaded
|
||||||
|
map: ["enum.DoorVisualLayers.BaseUnlit"]
|
||||||
|
visible: false
|
||||||
|
- state: welded
|
||||||
|
map: ["enum.WeldableLayers.BaseWelded"]
|
||||||
|
- state: bolted_unlit
|
||||||
|
shader: unshaded
|
||||||
|
map: ["enum.DoorVisualLayers.BaseBolted"]
|
||||||
|
- state: emergency_unlit
|
||||||
|
shader: unshaded
|
||||||
|
map: ["enum.DoorVisualLayers.BaseEmergencyAccess"]
|
||||||
|
- state: panel_open
|
||||||
|
map: ["enum.WiresVisualLayers.MaintenancePanel"]
|
||||||
|
- state: electrified_ai
|
||||||
|
sprite: Interface/Misc/ai_hud.rsi
|
||||||
|
shader: unshaded
|
||||||
|
visible: false
|
||||||
|
map: ["enum.ElectrifiedLayers.HUD"]
|
||||||
|
- state: electrified
|
||||||
|
sprite: Effects/electricity.rsi
|
||||||
|
shader: unshaded
|
||||||
|
visible: false
|
||||||
|
map: ["enum.ElectrifiedLayers.Sparks"]
|
||||||
- type: Destructible
|
- type: Destructible
|
||||||
thresholds:
|
thresholds:
|
||||||
- trigger:
|
- trigger:
|
||||||
|
|||||||
Reference in New Issue
Block a user