Arcade prop.

This commit is contained in:
Pieter-Jan Briers
2020-04-23 23:51:15 +02:00
parent c07c0c0032
commit 5a09e91ca3
6 changed files with 51 additions and 7 deletions

View File

@@ -11,6 +11,9 @@ namespace Content.Client.GameObjects.Components
{ {
private string KeyboardState = "generic_key"; private string KeyboardState = "generic_key";
private string ScreenState = "generic"; private string ScreenState = "generic";
private string BodyState = "computer";
private string BodyBrokenState = "broken";
private string ScreenBroken = "computer_broken";
public override void LoadData(YamlMappingNode node) public override void LoadData(YamlMappingNode node)
{ {
@@ -25,6 +28,16 @@ namespace Content.Client.GameObjects.Components
{ {
ScreenState = scalar.AsString(); 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) public override void InitializeEntity(IEntity entity)
@@ -33,9 +46,13 @@ namespace Content.Client.GameObjects.Components
var sprite = entity.GetComponent<ISpriteComponent>(); var sprite = entity.GetComponent<ISpriteComponent>();
sprite.LayerSetState(Layers.Screen, ScreenState); sprite.LayerSetState(Layers.Screen, ScreenState);
if (!string.IsNullOrEmpty(KeyboardState))
{
sprite.LayerSetState(Layers.Keyboard, $"{KeyboardState}_off"); sprite.LayerSetState(Layers.Keyboard, $"{KeyboardState}_off");
sprite.LayerSetState(Layers.KeyboardOn, KeyboardState); sprite.LayerSetState(Layers.KeyboardOn, KeyboardState);
} }
}
public override void OnChangeData(AppearanceComponent component) public override void OnChangeData(AppearanceComponent component)
{ {
@@ -52,18 +69,21 @@ namespace Content.Client.GameObjects.Components
if (broken) if (broken)
{ {
sprite.LayerSetState(Layers.Body, "broken"); sprite.LayerSetState(Layers.Body, BodyBrokenState);
sprite.LayerSetState(Layers.Screen, "computer_broken"); sprite.LayerSetState(Layers.Screen, ScreenBroken);
} }
else else
{ {
sprite.LayerSetState(Layers.Body, "computer"); sprite.LayerSetState(Layers.Body, BodyState);
sprite.LayerSetState(Layers.Screen, ScreenState); sprite.LayerSetState(Layers.Screen, ScreenState);
} }
sprite.LayerSetVisible(Layers.Screen, powered); sprite.LayerSetVisible(Layers.Screen, powered);
if (sprite.LayerMapTryGet(Layers.KeyboardOn, out _))
{
sprite.LayerSetVisible(Layers.KeyboardOn, powered); sprite.LayerSetVisible(Layers.KeyboardOn, powered);
} }
}
public enum Layers public enum Layers
{ {

View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 610 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 225 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 393 B

File diff suppressed because one or more lines are too long