Rollerbed / foldable strap fixes. (#16106)

This commit is contained in:
Leon Friedrich
2023-05-05 19:27:15 +12:00
committed by GitHub
parent 1a4f522267
commit cc4edb9f87
8 changed files with 19 additions and 24 deletions

View File

@@ -14,7 +14,7 @@ public sealed class StrapComponent : Component
/// <summary>
/// The entities that are currently buckled
/// </summary>
[ViewVariables]
[ViewVariables] // TODO serialization
public readonly HashSet<EntityUid> BuckledEntities = new();
/// <summary>

View File

@@ -169,6 +169,7 @@ public abstract partial class SharedBuckleSystem
/// <param name="strapComp"> strap component of the thing we are strapping to </param>
private void UpdateBuckleStatus(EntityUid uid, BuckleComponent buckleComp, StrapComponent? strapComp = null)
{
AppearanceSystem.SetData(uid, StrapVisuals.State, buckleComp.Buckled);
if (buckleComp.BuckledTo != null)
{
if (!Resolve(buckleComp.BuckledTo.Value, ref strapComp))
@@ -471,8 +472,6 @@ public abstract partial class SharedBuckleSystem
{
_standingSystem.Down(buckleUid);
}
// Sync StrapComponent data
AppearanceSystem.SetData(strapUid, StrapVisuals.State, false);
if (strapComp.BuckledEntities.Remove(buckleUid))
{
strapComp.OccupiedSize -= buckleComp.Size;
@@ -480,6 +479,7 @@ public abstract partial class SharedBuckleSystem
Dirty(strapComp);
}
AppearanceSystem.SetData(strapUid, StrapVisuals.State, strapComp.BuckledEntities.Count != 0);
_audioSystem.PlayPredicted(strapComp.UnbuckleSound, strapUid, buckleUid);
var ev = new BuckleChangeEvent(strapUid, buckleUid, false);

View File

@@ -14,6 +14,7 @@ public abstract partial class SharedBuckleSystem
{
private void InitializeStrap()
{
SubscribeLocalEvent<StrapComponent, ComponentStartup>(OnStrapStartup);
SubscribeLocalEvent<StrapComponent, ComponentShutdown>(OnStrapShutdown);
SubscribeLocalEvent<StrapComponent, ComponentRemove>((_, c, _) => StrapRemoveAll(c));
@@ -34,6 +35,11 @@ public abstract partial class SharedBuckleSystem
SubscribeLocalEvent<StrapComponent, MoveEvent>(OnStrapMoveEvent);
}
private void OnStrapStartup(EntityUid uid, StrapComponent component, ComponentStartup args)
{
AppearanceSystem.SetData(uid, StrapVisuals.State, component.BuckledEntities.Count != 0);
}
private void OnStrapShutdown(EntityUid uid, StrapComponent component, ComponentShutdown args)
{
if (LifeStage(uid) > EntityLifeStage.MapInitialized)