+++ /dev/null
-using Robust.Client.GameObjects;
-using Robust.Shared.GameObjects;
-using Robust.Shared.IoC;
-using Robust.Shared.Serialization.Manager.Attributes;
-using static Content.Shared.Foldable.SharedFoldableSystem;
-
-namespace Content.Client.Visualizer;
-
-
-public sealed class FoldableVisualizer : AppearanceVisualizer
-{
- [DataField("key")]
- private string _key = default!;
-
- [Obsolete("Subscribe to AppearanceChangeEvent instead.")]
- public override void OnChangeData(AppearanceComponent appearance)
- {
- base.OnChangeData(appearance);
-
- var entManager = IoCManager.Resolve<IEntityManager>();
-
- if (!entManager.TryGetComponent(appearance.Owner, out SpriteComponent? sprite)) return;
-
- if (appearance.TryGetData(FoldedVisuals.State, out bool folded) && folded)
- {
- sprite.LayerSetState(FoldableVisualLayers.Base, $"{_key}_folded");
- }
- else
- {
- sprite.LayerSetState(FoldableVisualLayers.Base, $"{_key}");
- }
- }
-
- public enum FoldableVisualLayers : byte
- {
- Base,
- }
-}
- type: entity
id: BodyBag_Container
+ parent: BaseFoldable
name: body bag
description: A plastic bag designed for the storage and transportation of cadavers.
components:
sprite: Objects/Specific/Medical/Morgue/bodybags.rsi
layers:
- state: bag
- map: ["enum.FoldableVisualLayers.Base"]
+ map: ["unfoldedLayer"]
+ - state: bag_folded
+ map: ["foldedLayer"]
+ visible: false
- state: open_overlay
map: ["enum.StorageVisualLayers.Door"]
- state: label_overlay
openSound:
path: /Audio/Misc/zip.ogg
- type: EntityStorageLayingDownOverride
- - type: Foldable
- type: PaperLabel
labelSlot:
insertVerbText: Attach Label
visuals:
- type: StorageVisualizer
state_open: open_overlay
- - type: FoldableVisualizer
- key: bag
- type: GenericVisualizer
visuals:
enum.PaperLabelVisuals.HasLabel:
enum.BodyBagVisualLayers.Label:
True: {visible: true}
False: {visible: false}
+ enum.FoldedVisuals.State:
+ foldedLayer:
+ True: {visible: true}
+ False: {visible: false}
+ unfoldedLayer:
+ True: {visible: false}
+ False: {visible: true}
- type: Pullable
- type: AntiRottingContainer
- type: ItemSlots
node: chairCursed
- type: entity
- parent: SeatBase
+ parent: [SeatBase, BaseFoldable]
id: ChairFolding
name: folding chair
description: If you carry six of these you become the coolest kid at church.
sprite: Structures/Furniture/folding_chair.rsi
layers:
- state: folding
- map: ["enum.FoldableVisualLayers.Base"]
+ map: ["unfoldedLayer"]
+ - state: folding_folded
+ map: ["foldedLayer"]
+ visible: false
- type: Item
size: 50
- - type: Foldable
- type: Appearance
- visuals:
- - type: FoldableVisualizer
- key: folding
- type: MeleeWeapon
damage:
types:
- type: entity
id: RollerBed
- parent: BaseItem
+ parent: [BaseItem, BaseFoldable]
name: rollerbed
description: Used to carry patients around without damaging them.
components:
noRot: true
layers:
- state: rollerbed
- map: ["enum.FoldableVisualLayers.Base"]
+ map: ["unfoldedLayer"]
+ - state: rollerbed_folded
+ map: ["foldedLayer"]
+ visible: false
- type: MovedByPressure
- type: DamageOnHighSpeedImpact
soundHit: /Audio/Effects/bang.ogg
rotation: -90
buckleOffset: "0,0.15"
unbuckleOffset: "0,0.15"
- - type: Foldable
- type: Appearance
visuals:
- - type: FoldableVisualizer
- key: rollerbed
- type: RollerbedVisualizer
key: rollerbed
- type: StaticPrice
- type: Sprite
layers:
- state: cheap_rollerbed
- map: [ "enum.FoldableVisualLayers.Base" ]
+ map: ["unfoldedLayer"]
+ - state: cheap_rollerbed_folded
+ map: ["foldedLayer"]
+ visible: false
- type: Appearance
visuals:
- - type: FoldableVisualizer
- key: cheap_rollerbed
- type: RollerbedVisualizer
key: cheap_rollerbed
- type: Sprite
layers:
- state: emergency_rollerbed
- map: [ "enum.FoldableVisualLayers.Base" ]
+ map: ["unfoldedLayer"]
+ - state: emergency_rollerbed_folded
+ map: ["foldedLayer"]
+ visible: false
- type: Appearance
visuals:
- - type: FoldableVisualizer
- key: emergency_rollerbed
- type: RollerbedVisualizer
key: emergency_rollerbed
--- /dev/null
+- type: entity
+ id: BaseFoldable
+ name: "foldable"
+ abstract: true
+ components:
+ - type: Foldable
+ - type: GenericVisualizer
+ visuals:
+ enum.FoldedVisuals.State:
+ foldedLayer:
+ True: {visible: true}
+ False: {visible: false}
+ unfoldedLayer:
+ True: {visible: false}
+ False: {visible: true}