Storage system refactor & map init.

* Demonstrated map init working with guns, toolboxes, tool lockers.
* Refactored EntityStorage and ServerStorage to have a common interface.
* EntityStorage no longer uses ServerStorage PURELY for visuals.
  Use an appearance visualizer instead.
This commit is contained in:
Pieter-Jan Briers
2019-05-05 18:52:06 +02:00
parent 030f1f2a57
commit e35d5390db
17 changed files with 384 additions and 950 deletions

View File

@@ -26,19 +26,6 @@ namespace Content.Client.GameObjects.Components.Storage
private int StorageCapacityMax;
private StorageWindow Window;
[ViewVariables] private string _closedState;
[ViewVariables] private string _openState;
public bool Open
{
get => _open;
set
{
_open = value;
SetDoorSprite(_open);
}
}
public override void OnAdd()
{
base.OnAdd();
@@ -56,20 +43,6 @@ namespace Content.Client.GameObjects.Components.Storage
public override void ExposeData(ObjectSerializer serializer)
{
base.ExposeData(serializer);
serializer.DataField(ref _closedState, "state_door_closed", null);
serializer.DataField(ref _openState, "state_door_open", null);
}
/// <inheritdoc />
public override void HandleComponentState(ComponentState curState, ComponentState nextState)
{
base.HandleComponentState(curState, nextState);
if (!(curState is StorageComponentState storageState))
return;
Open = storageState.Open;
}
public override void HandleMessage(ComponentMessage message, INetChannel netChannel = null, IComponent component = null)
@@ -125,27 +98,6 @@ namespace Content.Client.GameObjects.Components.Storage
SendNetworkMessage(new RemoveEntityMessage(entityuid));
}
private void SetDoorSprite(bool open)
{
if(!Owner.TryGetComponent<ISpriteComponent>(out var spriteComp))
return;
if(!spriteComp.Running)
return;
if (spriteComp.BaseRSI == null)
{
return;
}
var baseName = spriteComp.LayerGetState(0).Name;
var stateId = open ? _openState ?? $"{baseName}_open" : _closedState ?? $"{baseName}_door";
if (spriteComp.BaseRSI.TryGetState(stateId, out _))
spriteComp.LayerSetState(1, stateId);
}
/// <summary>
/// GUI class for client storage component
/// </summary>