ECS ComputerVisualizer (#13289)

This commit is contained in:
AJCM-git
2023-01-15 00:01:47 -04:00
committed by GitHub
parent 0875865d6d
commit 6211ea7064
11 changed files with 523 additions and 591 deletions

View File

@@ -1,79 +0,0 @@
using Content.Shared.Computer;
using JetBrains.Annotations;
using Robust.Client.GameObjects;
using Robust.Shared.GameObjects;
using Robust.Shared.IoC;
using Robust.Shared.Serialization.Manager.Attributes;
namespace Content.Client.Computer
{
[UsedImplicitly]
public sealed class ComputerVisualizer : AppearanceVisualizer
{
[DataField("key")]
private string KeyboardState = "generic_key";
[DataField("screen")]
private string ScreenState = "generic";
[DataField("body")]
private string BodyState = "computer";
[DataField("bodyBroken")]
private string BodyBrokenState = "broken";
private string ScreenBroken = "computer_broken";
[Obsolete("Subscribe to your component being initialised instead.")]
public override void InitializeEntity(EntityUid entity)
{
base.InitializeEntity(entity);
if (!IoCManager.Resolve<IEntityManager>().TryGetComponent<SpriteComponent>(entity, out var sprite)) return;
sprite.LayerSetState(Layers.Screen, ScreenState);
if (!string.IsNullOrEmpty(KeyboardState))
{
sprite.LayerSetState(Layers.Keyboard, $"{KeyboardState}_off");
sprite.LayerSetState(Layers.KeyboardOn, KeyboardState);
}
}
[Obsolete("Subscribe to AppearanceChangeEvent instead.")]
public override void OnChangeData(AppearanceComponent component)
{
base.OnChangeData(component);
if (!IoCManager.Resolve<IEntityManager>().TryGetComponent<SpriteComponent>(component.Owner, out var sprite)) return;
if (!component.TryGetData(ComputerVisuals.Powered, out bool powered))
{
powered = true;
}
component.TryGetData(ComputerVisuals.Broken, out bool broken);
if (broken)
{
sprite.LayerSetState(Layers.Body, BodyBrokenState);
sprite.LayerSetState(Layers.Screen, ScreenBroken);
}
else
{
sprite.LayerSetState(Layers.Body, BodyState);
sprite.LayerSetState(Layers.Screen, ScreenState);
}
sprite.LayerSetVisible(Layers.Screen, powered);
if (sprite.LayerMapTryGet(Layers.KeyboardOn, out _))
{
sprite.LayerSetVisible(Layers.KeyboardOn, powered);
}
}
public enum Layers : byte
{
Body,
Screen,
Keyboard,
KeyboardOn
}
}
}

View File

@@ -5,10 +5,6 @@ namespace Content.Shared.Computer
[Serializable, NetSerializable] [Serializable, NetSerializable]
public enum ComputerVisuals : byte public enum ComputerVisuals : byte
{ {
// Bool Powered
Powered,
// Bool
Broken
} }
} }

View File

@@ -16,21 +16,13 @@
- type: Sprite - type: Sprite
sprite: Structures/Machines/arcade.rsi sprite: Structures/Machines/arcade.rsi
layers: layers:
- state: arcade - map: ["computerLayerBody"]
map: ["enum.ComputerVisualizer+Layers.Body"] state: arcade
- state: invaders - map: ["computerLayerScreen"]
shader: unshaded state: invaders
map: ["enum.ComputerVisualizer+Layers.Screen"]
- type: Icon - type: Icon
sprite: Structures/Machines/arcade.rsi sprite: Structures/Machines/arcade.rsi
state: arcade state: arcade
- type: Appearance
visuals:
- type: ComputerVisualizer
screen: invaders
key: ""
body: arcade
bodyBroken: arcade
- type: Anchorable - type: Anchorable
- type: Pullable - type: Pullable
- type: StaticPrice - type: StaticPrice
@@ -38,6 +30,7 @@
- type: entity - type: entity
id: SpaceVillainArcade id: SpaceVillainArcade
name: space villain arcade
parent: ArcadeBase parent: ArcadeBase
components: components:
- type: SpaceVillainArcade - type: SpaceVillainArcade
@@ -72,6 +65,13 @@
name: NT block game name: NT block game
parent: ArcadeBase parent: ArcadeBase
components: components:
- type: Sprite
sprite: Structures/Machines/arcade.rsi
layers:
- map: ["computerLayerBody"]
state: arcade
- map: ["computerLayerScreen"]
state: blockgame
- type: BlockGameArcade - type: BlockGameArcade
- type: ActivatableUI - type: ActivatableUI
key: enum.BlockGameUiKey.Key key: enum.BlockGameUiKey.Key
@@ -87,10 +87,3 @@
type: WiresBoundUserInterface type: WiresBoundUserInterface
- type: Computer - type: Computer
board: BlockGameArcadeComputerCircuitboard board: BlockGameArcadeComputerCircuitboard
- type: Appearance
visuals:
- type: ComputerVisualizer
screen: blockgame
key: ""
body: arcade
bodyBroken: arcade

View File

@@ -1,5 +1,4 @@
- type: entity - type: entity
abstract: true
parent: ComputerFrame parent: ComputerFrame
id: BaseComputer id: BaseComputer
name: computer name: computer
@@ -23,21 +22,24 @@
sprite: Structures/Machines/computers.rsi sprite: Structures/Machines/computers.rsi
netsync: false netsync: false
layers: layers:
- state: computer - map: ["computerLayerBody"]
map: ["enum.ComputerVisualizer+Layers.Body"] state: computer
- state: generic_key_off - map: ["computerLayerKeyboard"]
map: ["enum.ComputerVisualizer+Layers.Keyboard"] state: generic_keyboard
- state: generic - map: ["computerLayerScreen"]
shader: unshaded state: generic
map: ["enum.ComputerVisualizer+Layers.Screen"] - map: ["computerLayerKeys"]
- state: generic_key state: generic_keys
shader: unshaded
map: ["enum.ComputerVisualizer+Layers.KeyboardOn"]
- type: Appearance - type: Appearance
- type: GenericVisualizer
visuals: visuals:
- type: ComputerVisualizer enum.ComputerVisuals.Powered:
key: generic_key computerLayerScreen:
screen: generic True: { visible: true, shader: unshaded }
False: { visible: false }
computerLayerKeys:
True: { visible: true, shader: unshaded }
False: { visible: true, shader: shaded }
- type: LitOnPowered - type: LitOnPowered
- type: PointLight - type: PointLight
radius: 1.5 radius: 1.5

View File

@@ -4,14 +4,18 @@
name: alerts computer name: alerts computer
description: Used to access the station's automated alert system. description: Used to access the station's automated alert system.
components: components:
- type: Appearance
visuals:
- type: ComputerVisualizer
key: atmos_key
screen: "alert-2"
- type: Computer - type: Computer
board: AlertsComputerCircuitboard board: AlertsComputerCircuitboard
- type: Sprite - type: Sprite
layers:
- map: ["computerLayerBody"]
state: computer
- map: ["computerLayerKeyboard"]
state: generic_keyboard
- map: ["computerLayerScreen"]
state: alert-2
- map: ["computerLayerKeys"]
state: atmos_key
- type: entity - type: entity
parent: BaseComputer parent: BaseComputer
@@ -46,13 +50,11 @@
- type: ShuttleConsole - type: ShuttleConsole
- type: ActivatableUI - type: ActivatableUI
key: enum.ShuttleConsoleUiKey.Key key: enum.ShuttleConsoleUiKey.Key
- type: ActivatableUIRequiresPower
- type: UserInterface - type: UserInterface
interfaces: interfaces:
- key: enum.ShuttleConsoleUiKey.Key - key: enum.ShuttleConsoleUiKey.Key
type: ShuttleConsoleBoundUserInterface type: ShuttleConsoleBoundUserInterface
- type: RadarConsole - type: RadarConsole
- type: ExtensionCableReceiver
- type: PointLight - type: PointLight
radius: 1.5 radius: 1.5
energy: 1.6 energy: 1.6
@@ -66,11 +68,16 @@
name: shuttle console name: shuttle console
description: Used to pilot a shuttle. description: Used to pilot a shuttle.
components: components:
- type: Appearance - type: Sprite
visuals: layers:
- type: ComputerVisualizer - map: ["computerLayerBody"]
key: generic_key state: computer
screen: shuttle - map: ["computerLayerKeyboard"]
state: generic_keyboard
- map: ["computerLayerScreen"]
state: shuttle
- map: ["computerLayerKeys"]
state: generic_keys
- type: Computer - type: Computer
board: ShuttleConsoleCircuitboard board: ShuttleConsoleCircuitboard
@@ -80,14 +87,19 @@
name: syndicate shuttle console name: syndicate shuttle console
description: Used to pilot a syndicate shuttle. description: Used to pilot a syndicate shuttle.
components: components:
- type: Sprite
layers:
- map: ["computerLayerBody"]
state: computer
- map: ["computerLayerKeyboard"]
state: generic_keyboard
- map: ["computerLayerScreen"]
state: syndishuttle
- map: ["computerLayerKeys"]
state: syndie_key
- type: Tag - type: Tag
tags: tags:
- Syndicate - Syndicate
- type: Appearance
visuals:
- type: ComputerVisualizer
key: syndie_key
screen: syndishuttle
- type: RadarConsole - type: RadarConsole
maxRange: 1536 maxRange: 1536
- type: PointLight - type: PointLight
@@ -103,11 +115,16 @@
name: cargo shuttle console name: cargo shuttle console
description: Used to pilot the cargo shuttle. description: Used to pilot the cargo shuttle.
components: components:
- type: Appearance - type: Sprite
visuals: layers:
- type: ComputerVisualizer - map: ["computerLayerBody"]
key: generic_key state: computer
screen: shuttle - map: ["computerLayerKeyboard"]
state: generic_keyboard
- map: ["computerLayerScreen"]
state: shuttle
- map: ["computerLayerKeys"]
state: generic_keys
- type: CargoPilotConsole - type: CargoPilotConsole
- type: RadarConsole - type: RadarConsole
maxRange: 256 maxRange: 256
@@ -127,20 +144,15 @@
- type: IFFConsole - type: IFFConsole
- type: Sprite - type: Sprite
layers: layers:
- map: [ "enum.ComputerVisualizer+Layers.KeyboardOn" ] - map: ["computerLayerBody"]
visible: false
- map: [ "enum.ComputerVisualizer+Layers.Keyboard" ]
visible: false
- map: [ "enum.ComputerVisualizer+Layers.Body" ]
state: computer state: computer
- map: [ "enum.ComputerVisualizer+Layers.Screen" ] - map: ["computerLayerKeyboard"]
state: generic_keyboard
- map: ["computerLayerScreen"]
sprite: Structures/Shuttles/iff.rsi sprite: Structures/Shuttles/iff.rsi
state: helm state: helm
shader: unshaded - map: ["computerLayerKeys"]
- type: Appearance state: generic_keys
visuals:
- type: ComputerVisualizer
screen: helm
- type: ActivatableUI - type: ActivatableUI
key: enum.IFFConsoleUiKey.Key key: enum.IFFConsoleUiKey.Key
- type: UserInterface - type: UserInterface
@@ -159,22 +171,6 @@
allowedFlags: allowedFlags:
- Hide - Hide
- HideLabel - HideLabel
- type: Sprite
layers:
- map: [ "enum.ComputerVisualizer+Layers.KeyboardOn" ]
visible: false
- map: [ "enum.ComputerVisualizer+Layers.Keyboard" ]
visible: false
- map: [ "enum.ComputerVisualizer+Layers.Body" ]
state: computer
- map: [ "enum.ComputerVisualizer+Layers.Screen" ]
sprite: Structures/Shuttles/iff.rsi
state: helm
shader: unshaded
- type: Appearance
visuals:
- type: ComputerVisualizer
screen: helm
- type: ActivatableUI - type: ActivatableUI
key: enum.IFFConsoleUiKey.Key key: enum.IFFConsoleUiKey.Key
- type: UserInterface - type: UserInterface
@@ -188,11 +184,16 @@
name: power monitoring computer name: power monitoring computer
description: It monitors power levels across the station. description: It monitors power levels across the station.
components: components:
- type: Appearance - type: Sprite
visuals: layers:
- type: ComputerVisualizer - map: ["computerLayerBody"]
key: power_key state: computer
screen: power_monitor - map: ["computerLayerKeyboard"]
state: generic_keyboard
- map: ["computerLayerScreen"]
state: power_monitor
- map: ["computerLayerKeys"]
state: power_key
- type: PointLight - type: PointLight
radius: 1.5 radius: 1.5
energy: 1.6 energy: 1.6
@@ -219,11 +220,16 @@
name: medical records computer name: medical records computer
description: This can be used to check medical records. description: This can be used to check medical records.
components: components:
- type: Appearance - type: Sprite
visuals: layers:
- type: ComputerVisualizer - map: ["computerLayerBody"]
key: med_key state: computer
screen: medcomp - map: ["computerLayerKeyboard"]
state: generic_keyboard
- map: ["computerLayerScreen"]
state: medcomp
- map: ["computerLayerKeys"]
state: med_key
- type: PointLight - type: PointLight
radius: 1.5 radius: 1.5
energy: 1.6 energy: 1.6
@@ -237,11 +243,16 @@
name: criminal records computer name: criminal records computer
description: This can be used to check criminal records. description: This can be used to check criminal records.
components: components:
- type: Appearance - type: Sprite
visuals: layers:
- type: ComputerVisualizer - map: ["computerLayerBody"]
key: security_key state: computer
screen: explosive - map: ["computerLayerKeyboard"]
state: generic_keyboard
- map: ["computerLayerScreen"]
state: explosive
- map: ["computerLayerKeys"]
state: security_key
- type: PointLight - type: PointLight
radius: 1.5 radius: 1.5
energy: 1.6 energy: 1.6
@@ -275,11 +286,16 @@
name: crew monitoring console name: crew monitoring console
description: Used to monitor active health sensors built into most of the crew's uniforms. description: Used to monitor active health sensors built into most of the crew's uniforms.
components: components:
- type: Appearance - type: Sprite
visuals: layers:
- type: ComputerVisualizer - map: ["computerLayerBody"]
key: med_key state: computer
screen: crew - map: ["computerLayerKeyboard"]
state: generic_keyboard
- map: ["computerLayerScreen"]
state: crew
- map: ["computerLayerKeys"]
state: med_key
- type: PointLight - type: PointLight
radius: 1.5 radius: 1.5
energy: 1.6 energy: 1.6
@@ -305,11 +321,16 @@
name: R&D computer name: R&D computer
description: A computer used to interface with R&D tools. description: A computer used to interface with R&D tools.
components: components:
- type: Appearance - type: Sprite
visuals: layers:
- type: ComputerVisualizer - map: ["computerLayerBody"]
key: rd_key state: computer
screen: rdcomp - map: ["computerLayerKeyboard"]
state: generic_keyboard
- map: ["computerLayerScreen"]
state: rdcomp
- map: ["computerLayerKeys"]
state: rd_key
- type: ResearchClient - type: ResearchClient
- type: ResearchConsole - type: ResearchConsole
- type: TechnologyDatabase - type: TechnologyDatabase
@@ -337,11 +358,16 @@
name: analysis console name: analysis console
description: A computer used to interface with the artifact analyzer. description: A computer used to interface with the artifact analyzer.
components: components:
- type: Appearance - type: Sprite
visuals: layers:
- type: ComputerVisualizer - map: ["computerLayerBody"]
key: tech_key state: computer
screen: artifact - map: ["computerLayerKeyboard"]
state: generic_keyboard
- map: ["computerLayerScreen"]
state: artifact
- map: ["computerLayerKeys"]
state: tech_key
- type: ResearchClient - type: ResearchClient
- type: AnalysisConsole - type: AnalysisConsole
- type: DeviceList - type: DeviceList
@@ -403,11 +429,16 @@
- key: enum.IdCardConsoleUiKey.Key - key: enum.IdCardConsoleUiKey.Key
type: IdCardConsoleBoundUserInterface type: IdCardConsoleBoundUserInterface
- type: CrewManifestViewer - type: CrewManifestViewer
- type: Appearance - type: Sprite
visuals: layers:
- type: ComputerVisualizer - map: ["computerLayerBody"]
key: id_key state: computer
screen: id - map: ["computerLayerKeyboard"]
state: generic_keyboard
- map: ["computerLayerScreen"]
state: id
- map: ["computerLayerKeys"]
state: id_key
- type: Computer - type: Computer
board: IDComputerCircuitboard board: IDComputerCircuitboard
- type: PointLight - type: PointLight
@@ -437,11 +468,6 @@
interfaces: interfaces:
- key: enum.BodyScannerUiKey.Key - key: enum.BodyScannerUiKey.Key
type: BodyScannerBoundUserInterface type: BodyScannerBoundUserInterface
- type: Appearance
visuals:
- type: ComputerVisualizer
key: generic_key
screen: generic
- type: ApcPowerReceiver - type: ApcPowerReceiver
powerLoad: 500 powerLoad: 500
- type: Computer - type: Computer
@@ -457,11 +483,16 @@
name: communications computer name: communications computer
description: This can be used for various important functions. Still under development. description: This can be used for various important functions. Still under development.
components: components:
- type: Appearance - type: Sprite
visuals: layers:
- type: ComputerVisualizer - map: ["computerLayerBody"]
key: generic_key state: computer
screen: comm - map: ["computerLayerKeyboard"]
state: generic_keyboard
- map: ["computerLayerScreen"]
state: comm
- map: ["computerLayerKeys"]
state: generic_keys
- type: AccessReader - type: AccessReader
access: [[ "Command" ]] access: [[ "Command" ]]
- type: CommunicationsConsole - type: CommunicationsConsole
@@ -485,11 +516,16 @@
name: syndicate communications computer name: syndicate communications computer
description: This can be used for various important functions. Still under development. description: This can be used for various important functions. Still under development.
components: components:
- type: Appearance - type: Sprite
visuals: layers:
- type: ComputerVisualizer - map: ["computerLayerBody"]
key: syndie_key state: computer
screen: comm_syndie - map: ["computerLayerKeyboard"]
state: generic_keyboard
- map: ["computerLayerScreen"]
state: comm_syndie
- map: ["computerLayerKeys"]
state: syndie_key
- type: AccessReader - type: AccessReader
access: [[ "NuclearOperative" ]] access: [[ "NuclearOperative" ]]
- type: CommunicationsConsole - type: CommunicationsConsole
@@ -511,11 +547,16 @@
name: solar control computer name: solar control computer
description: A controller for solar panel arrays. description: A controller for solar panel arrays.
components: components:
- type: Appearance - type: Sprite
visuals: layers:
- type: ComputerVisualizer - map: ["computerLayerBody"]
key: generic_key state: computer
screen: solar_screen - map: ["computerLayerKeyboard"]
state: generic_keyboard
- map: ["computerLayerScreen"]
state: solar_screen
- map: ["computerLayerKeys"]
state: generic_keys
- type: SolarControlConsole - type: SolarControlConsole
- type: ActivatableUI - type: ActivatableUI
key: enum.SolarControlConsoleUiKey.Key key: enum.SolarControlConsoleUiKey.Key
@@ -533,18 +574,22 @@
tags: tags:
- DroneUsable - DroneUsable
- type: entity - type: entity
parent: BaseComputer parent: BaseComputer
id: ComputerRadar id: ComputerRadar
name: mass scanner computer name: mass scanner computer
description: A computer for detecting nearby bodies, displaying them by position and mass. description: A computer for detecting nearby bodies, displaying them by position and mass.
components: components:
- type: Appearance - type: Sprite
visuals: layers:
- type: ComputerVisualizer - map: ["computerLayerBody"]
key: generic_key state: computer
screen: solar_screen - map: ["computerLayerKeyboard"]
state: generic_keyboard
- map: ["computerLayerScreen"]
state: solar_screen
- map: ["computerLayerKeys"]
state: generic_keys
- type: RadarConsole - type: RadarConsole
- type: ActivatableUI - type: ActivatableUI
key: enum.RadarConsoleUiKey.Key key: enum.RadarConsoleUiKey.Key
@@ -565,11 +610,16 @@
name: cargo shuttle computer name: cargo shuttle computer
description: Used to order the shuttle. description: Used to order the shuttle.
components: components:
- type: Appearance - type: Sprite
visuals: layers:
- type: ComputerVisualizer - map: ["computerLayerBody"]
key: tech_key state: computer
screen: supply - map: ["computerLayerKeyboard"]
state: generic_keyboard
- map: ["computerLayerScreen"]
state: supply
- map: ["computerLayerKeys"]
state: tech_key
- type: CargoShuttleConsole - type: CargoShuttleConsole
- type: ActivatableUI - type: ActivatableUI
key: enum.CargoConsoleUiKey.Shuttle key: enum.CargoConsoleUiKey.Shuttle
@@ -592,11 +642,16 @@
name: cargo request computer name: cargo request computer
description: Used to order supplies and approve requests. description: Used to order supplies and approve requests.
components: components:
- type: Appearance - type: Sprite
visuals: layers:
- type: ComputerVisualizer - map: ["computerLayerBody"]
key: tech_key state: computer
screen: request - map: ["computerLayerKeyboard"]
state: generic_keyboard
- map: ["computerLayerScreen"]
state: request
- map: ["computerLayerKeys"]
state: tech_key
- type: CargoOrderConsole - type: CargoOrderConsole
- type: ActivatableUI - type: ActivatableUI
key: enum.CargoConsoleUiKey.Orders key: enum.CargoConsoleUiKey.Orders
@@ -623,11 +678,16 @@
- type: DeviceList - type: DeviceList
- type: DeviceNetwork - type: DeviceNetwork
deviceNetId: Wired deviceNetId: Wired
- type: Appearance - type: Sprite
visuals: layers:
- type: ComputerVisualizer - map: ["computerLayerBody"]
key: generic_key state: computer
screen: dna - map: ["computerLayerKeyboard"]
state: generic_keyboard
- map: ["computerLayerScreen"]
state: dna
- map: ["computerLayerKeys"]
state: generic_keys
- type: ApcPowerReceiver - type: ApcPowerReceiver
powerLoad: 3100 #We want this to fail first so I transferred most of the scanner and pod's power here. (3500 in total) powerLoad: 3100 #We want this to fail first so I transferred most of the scanner and pod's power here. (3500 in total)
- type: Computer - type: Computer
@@ -656,11 +716,16 @@
name: camera monitor name: camera monitor
description: A surveillance camera monitor. You're watching them. Maybe. description: A surveillance camera monitor. You're watching them. Maybe.
components: components:
- type: Appearance - type: Sprite
visuals: layers:
- type: ComputerVisualizer - map: ["computerLayerBody"]
key: tech_key state: computer
screen: cameras - map: ["computerLayerKeyboard"]
state: generic_keyboard
- map: ["computerLayerScreen"]
state: cameras
- map: ["computerLayerKeys"]
state: tech_key
- type: Computer - type: Computer
board: SurveillanceCameraMonitorCircuitboard board: SurveillanceCameraMonitorCircuitboard
- type: DeviceNetwork - type: DeviceNetwork
@@ -686,11 +751,16 @@
name: wireless camera monitor name: wireless camera monitor
description: A wireless surveillance camera monitor. You're watching them. Maybe. description: A wireless surveillance camera monitor. You're watching them. Maybe.
components: components:
- type: Appearance - type: Sprite
visuals: layers:
- type: ComputerVisualizer - map: ["computerLayerBody"]
key: tech_key state: computer
screen: cameras - map: ["computerLayerKeyboard"]
state: generic_keyboard
- map: ["computerLayerScreen"]
state: cameras
- map: ["computerLayerKeys"]
state: tech_key
- type: Computer - type: Computer
board: SurveillanceWirelessCameraMonitorCircuitboard board: SurveillanceWirelessCameraMonitorCircuitboard
- type: DeviceNetwork - type: DeviceNetwork
@@ -711,44 +781,3 @@
interfaces: interfaces:
- key: enum.SurveillanceCameraMonitorUiKey.Key - key: enum.SurveillanceCameraMonitorUiKey.Key
type: SurveillanceCameraMonitorBoundUserInterface type: SurveillanceCameraMonitorBoundUserInterface
- type: entity
parent: ComputerSurveillanceWirelessCameraMonitor
id: ComputerTelevision
name: wooden television
description: Finally, some decent reception around here...
components:
- type: Appearance
visuals:
- type: ComputerVisualizer
body: television
bodyBroken: television_broken
screen: detective_television
- type: Computer
board: ComputerTelevisionCircuitboard
- type: Sprite
sprite: Structures/Machines/computers.rsi
layers:
- map: [ "enum.ComputerVisualizer+Layers.KeyboardOn" ]
visible: false
- map: [ "enum.ComputerVisualizer+Layers.Keyboard" ]
visible: false
- map: [ "enum.ComputerVisualizer+Layers.Body"]
state: television
- map: [ "enum.ComputerVisualizer+Layers.Screen" ]
state: detective_television
shader: unshaded
- type: PointLight
radius: 1.5
energy: 1.6
color: "#b89f25"
- type: Fixtures
fixtures:
- shape:
!type:PhysShapeAabb
bounds: "-0.25,-0.25,0.25,0.25"
density: 200
mask:
- TabletopMachineMask
layer:
- TabletopMachineLayer

View File

@@ -9,18 +9,10 @@
noRot: true noRot: true
sprite: Structures/Machines/tech_disk_printer.rsi sprite: Structures/Machines/tech_disk_printer.rsi
layers: layers:
- state: icon - map: ["computerLayerBody"]
map: ["enum.ComputerVisualizer+Layers.Body"] state: icon
- state: unshaded - map: ["computerLayerScreen"]
shader: unshaded state: unshaded
map: ["enum.ComputerVisualizer+Layers.Screen"]
- type: Appearance
visuals:
- type: ComputerVisualizer
screen: unshaded
key: ""
body: icon
bodyBroken: icon
- type: DiskConsole - type: DiskConsole
- type: ResearchClient - type: ResearchClient
- type: ActivatableUI - type: ActivatableUI

View File

@@ -1,15 +1,38 @@
- type: entity
parent: ComputerSurveillanceWirelessCameraMonitor
id: ComputerTelevision
name: wooden television
description: Finally, some decent reception around here...
components:
- type: Sprite
layers:
- map: ["computerLayerBody"]
state: television
- map: ["computerLayerScreen"]
state: detective_television
- type: Computer
board: ComputerTelevisionCircuitboard
- type: PointLight
radius: 1.5
energy: 1.6
color: "#b89f25"
- type: Fixtures
fixtures:
- shape:
!type:PhysShapeAabb
bounds: "-0.25,-0.25,0.25,0.25"
density: 200
mask:
- TabletopMachineMask
layer:
- TabletopMachineLayer
- type: entity - type: entity
parent: BaseComputer parent: BaseComputer
id: WallmountTelescreenFrame id: WallmountTelescreenFrame
name: telescreen frame name: telescreen frame
description: Finally, some decent reception around here... description: Finally, some decent reception around here...
components: components:
- type: Appearance
visuals:
- type: ComputerVisualizer
body: telescreen
bodyBroken: telescreen_broken
screen: telescreen
- type: Construction - type: Construction
graph: WallmountTelescreen graph: WallmountTelescreen
node: TelescreenFrame node: TelescreenFrame
@@ -18,15 +41,10 @@
netsync: false netsync: false
sprite: Structures/Machines/computers.rsi sprite: Structures/Machines/computers.rsi
layers: layers:
- map: [ "enum.ComputerVisualizer+Layers.KeyboardOn" ] - map: ["computerLayerBody"]
visible: false
- map: [ "enum.ComputerVisualizer+Layers.Keyboard" ]
visible: false
- map: [ "enum.ComputerVisualizer+Layers.Body"]
state: television state: television
- map: [ "enum.ComputerVisualizer+Layers.Screen" ] - map: ["computerLayerScreen"]
state: telescreen state: telescreen
shader: shaded
- type: Fixtures - type: Fixtures
fixtures: fixtures:
- shape: - shape:
@@ -100,13 +118,6 @@
name: television frame name: television frame
description: Finally, some decent reception around here... description: Finally, some decent reception around here...
components: components:
- type: Appearance
visuals:
- type: ComputerVisualizer
key: television_wall
body: television_wall
bodyBroken: television_wallbroken
screen: television_wall
- type: Fixtures - type: Fixtures
fixtures: fixtures:
- shape: - shape:
@@ -125,15 +136,10 @@
netsync: false netsync: false
sprite: Structures/Wallmounts/flatscreentv.rsi sprite: Structures/Wallmounts/flatscreentv.rsi
layers: layers:
- map: [ "enum.ComputerVisualizer+Layers.KeyboardOn" ] - map: ["computerLayerBody"]
visible: false
- map: [ "enum.ComputerVisualizer+Layers.Keyboard" ]
visible: false
- map: [ "enum.ComputerVisualizer+Layers.Body"]
state: television_wall state: television_wall
- map: [ "enum.ComputerVisualizer+Layers.Screen" ] - map: ["computerLayerScreen"]
state: television_wall state: television_wallscreen
shader: shaded
- type: entity - type: entity
parent: WallmountTelevisionFrame parent: WallmountTelevisionFrame
@@ -142,13 +148,6 @@
name: television name: television
description: Finally, some decent reception around here... description: Finally, some decent reception around here...
components: components:
- type: Appearance
visuals:
- type: ComputerVisualizer
key: television_wall
body: television_wall
bodyBroken: television_wallbroken
screen: television_wallscreen
- type: Construction - type: Construction
graph: WallmountTelevision graph: WallmountTelevision
node: Television node: Television

View File

@@ -396,7 +396,7 @@
"directions": 4 "directions": 4
}, },
{ {
"name": "computer_broken", "name": "screen_broken",
"directions": 4 "directions": 4
}, },
{ {
@@ -972,11 +972,11 @@
] ]
}, },
{ {
"name": "generic_key", "name": "generic_keys",
"directions": 4 "directions": 4
}, },
{ {
"name": "generic_key_off", "name": "generic_keyboard",
"directions": 4 "directions": 4
}, },
{ {