Delta-v/Content.Client/GameObjects/Components/Doors/ClientDoorComponent.cs

72 lines
1.7 KiB
C#

using Content.Shared.GameObjects;
using Lidgren.Network;
using SS14.Client.GameObjects;
using SS14.Shared.GameObjects;
using SS14.Shared.Utility;
using YamlDotNet.RepresentationModel;
namespace Content.Client.GameObjects
{
public class ClientDoorComponent : SharedDoorComponent
{
public bool Opened { get; private set; }
private SpriteComponent spriteComponent;
private string OpenSprite = "door_ewo";
private string CloseSprite = "door_ew";
public override void Initialize()
{
base.Initialize();
spriteComponent = Owner.GetComponent<SpriteComponent>();
}
private void Open()
{
Opened = true;
spriteComponent.SetSpriteByKey(OpenSprite);
}
private void Close()
{
Opened = false;
spriteComponent.SetSpriteByKey(CloseSprite);
}
public override void HandleComponentState(ComponentState state)
{
var castState = (DoorComponentState)state;
if (castState.Opened == Opened)
{
return;
}
if (castState.Opened)
{
Open();
}
else
{
Close();
}
}
public override void LoadParameters(YamlMappingNode mapping)
{
base.LoadParameters(mapping);
YamlNode node;
if (mapping.TryGetNode("openstate", out node))
{
OpenSprite = node.AsString();
}
if (mapping.TryGetNode("closestate", out node))
{
CloseSprite = node.AsString();
}
}
}
}