Arcade prop.
This commit is contained in:
@@ -11,6 +11,9 @@ namespace Content.Client.GameObjects.Components
|
||||
{
|
||||
private string KeyboardState = "generic_key";
|
||||
private string ScreenState = "generic";
|
||||
private string BodyState = "computer";
|
||||
private string BodyBrokenState = "broken";
|
||||
private string ScreenBroken = "computer_broken";
|
||||
|
||||
public override void LoadData(YamlMappingNode node)
|
||||
{
|
||||
@@ -25,6 +28,16 @@ namespace Content.Client.GameObjects.Components
|
||||
{
|
||||
ScreenState = scalar.AsString();
|
||||
}
|
||||
|
||||
if (node.TryGetNode("body", out scalar))
|
||||
{
|
||||
BodyState = scalar.AsString();
|
||||
}
|
||||
|
||||
if (node.TryGetNode("bodyBroken", out scalar))
|
||||
{
|
||||
BodyBrokenState = scalar.AsString();
|
||||
}
|
||||
}
|
||||
|
||||
public override void InitializeEntity(IEntity entity)
|
||||
@@ -33,9 +46,13 @@ namespace Content.Client.GameObjects.Components
|
||||
|
||||
var sprite = entity.GetComponent<ISpriteComponent>();
|
||||
sprite.LayerSetState(Layers.Screen, ScreenState);
|
||||
|
||||
if (!string.IsNullOrEmpty(KeyboardState))
|
||||
{
|
||||
sprite.LayerSetState(Layers.Keyboard, $"{KeyboardState}_off");
|
||||
sprite.LayerSetState(Layers.KeyboardOn, KeyboardState);
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnChangeData(AppearanceComponent component)
|
||||
{
|
||||
@@ -52,18 +69,21 @@ namespace Content.Client.GameObjects.Components
|
||||
|
||||
if (broken)
|
||||
{
|
||||
sprite.LayerSetState(Layers.Body, "broken");
|
||||
sprite.LayerSetState(Layers.Screen, "computer_broken");
|
||||
sprite.LayerSetState(Layers.Body, BodyBrokenState);
|
||||
sprite.LayerSetState(Layers.Screen, ScreenBroken);
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite.LayerSetState(Layers.Body, "computer");
|
||||
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
|
||||
{
|
||||
|
||||
24
Resources/Prototypes/Entities/Buildings/computers/arcade.yml
Normal file
24
Resources/Prototypes/Entities/Buildings/computers/arcade.yml
Normal file
@@ -0,0 +1,24 @@
|
||||
- type: entity
|
||||
id: Arcade
|
||||
name: arcade
|
||||
parent: ComputerBase
|
||||
components:
|
||||
- type: Icon
|
||||
state: arcade
|
||||
- type: PowerDevice
|
||||
priority: Low
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: arcade
|
||||
map: ["enum.ComputerVisualizer2D+Layers.Body"]
|
||||
- state: invaders
|
||||
shader: unshaded
|
||||
map: ["enum.ComputerVisualizer2D+Layers.Screen"]
|
||||
|
||||
- type: Appearance
|
||||
visuals:
|
||||
- type: ComputerVisualizer2D
|
||||
screen: invaders
|
||||
key: ""
|
||||
body: arcade
|
||||
bodyBroken: arcade
|
||||
BIN
Resources/Textures/Buildings/computer.rsi/arcade.png
Normal file
BIN
Resources/Textures/Buildings/computer.rsi/arcade.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 610 B |
BIN
Resources/Textures/Buildings/computer.rsi/arcade_broken.png
Normal file
BIN
Resources/Textures/Buildings/computer.rsi/arcade_broken.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 225 B |
BIN
Resources/Textures/Buildings/computer.rsi/invaders.png
Normal file
BIN
Resources/Textures/Buildings/computer.rsi/invaders.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 393 B |
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user