Merge branch 'master' into DecimalReagents
This commit is contained in:
@@ -15,6 +15,7 @@ using Content.Shared.GameObjects.Components.Chemistry;
|
|||||||
using Content.Shared.GameObjects.Components.Markers;
|
using Content.Shared.GameObjects.Components.Markers;
|
||||||
using Content.Shared.GameObjects.Components.Research;
|
using Content.Shared.GameObjects.Components.Research;
|
||||||
using Content.Shared.GameObjects.Components.VendingMachines;
|
using Content.Shared.GameObjects.Components.VendingMachines;
|
||||||
|
using Robust.Client;
|
||||||
using Robust.Client.Interfaces;
|
using Robust.Client.Interfaces;
|
||||||
using Robust.Client.Interfaces.Graphics.Overlays;
|
using Robust.Client.Interfaces.Graphics.Overlays;
|
||||||
using Robust.Client.Interfaces.Input;
|
using Robust.Client.Interfaces.Input;
|
||||||
@@ -227,6 +228,14 @@ namespace Content.Client
|
|||||||
IoCManager.Resolve<IClientPreferencesManager>().Initialize();
|
IoCManager.Resolve<IClientPreferencesManager>().Initialize();
|
||||||
IoCManager.Resolve<IItemSlotManager>().Initialize();
|
IoCManager.Resolve<IItemSlotManager>().Initialize();
|
||||||
|
|
||||||
|
_baseClient.RunLevelChanged += (sender, args) =>
|
||||||
|
{
|
||||||
|
if (args.NewLevel == ClientRunLevel.Initialize)
|
||||||
|
{
|
||||||
|
_stateManager.RequestStateChange<MainScreen>();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
// Fire off into state dependent on launcher or not.
|
// Fire off into state dependent on launcher or not.
|
||||||
if (_gameController.LaunchState.FromLauncher)
|
if (_gameController.LaunchState.FromLauncher)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -76,10 +76,6 @@ namespace Content.Client.GameObjects.Components.Mobs
|
|||||||
|
|
||||||
private void PlayerDetached()
|
private void PlayerDetached()
|
||||||
{
|
{
|
||||||
if (!CurrentlyControlled)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
_ui?.Dispose();
|
_ui?.Dispose();
|
||||||
_ui = null;
|
_ui = null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,7 +34,6 @@ namespace Content.Client.GameObjects.Components.Observer
|
|||||||
|
|
||||||
private void SetGhostVisibility(bool visibility)
|
private void SetGhostVisibility(bool visibility)
|
||||||
{
|
{
|
||||||
// So, for now this is a client-side hack... Please, PLEASE someone make this work server-side.
|
|
||||||
foreach (var ghost in _componentManager.GetAllComponents(typeof(GhostComponent)))
|
foreach (var ghost in _componentManager.GetAllComponents(typeof(GhostComponent)))
|
||||||
{
|
{
|
||||||
if (ghost.Owner.TryGetComponent(out SpriteComponent component))
|
if (ghost.Owner.TryGetComponent(out SpriteComponent component))
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
using Content.Client.UserInterface;
|
using Content.Client.UserInterface.Stylesheets;
|
||||||
using Content.Client.UserInterface.Stylesheets;
|
|
||||||
using Content.Client.Utility;
|
using Content.Client.Utility;
|
||||||
using Content.Shared.GameObjects.Components;
|
using Content.Shared.GameObjects.Components;
|
||||||
using Robust.Client.UserInterface;
|
using Robust.Client.UserInterface;
|
||||||
@@ -14,21 +13,19 @@ namespace Content.Client.GameObjects.Components
|
|||||||
[RegisterComponent]
|
[RegisterComponent]
|
||||||
public class StackComponent : SharedStackComponent, IItemStatus
|
public class StackComponent : SharedStackComponent, IItemStatus
|
||||||
{
|
{
|
||||||
[ViewVariables] public int Count { get; private set; }
|
|
||||||
[ViewVariables] public int MaxCount { get; private set; }
|
|
||||||
|
|
||||||
[ViewVariables(VVAccess.ReadWrite)] private bool _uiUpdateNeeded;
|
[ViewVariables(VVAccess.ReadWrite)] private bool _uiUpdateNeeded;
|
||||||
|
|
||||||
public Control MakeControl() => new StatusControl(this);
|
public Control MakeControl() => new StatusControl(this);
|
||||||
|
|
||||||
public override void HandleComponentState(ComponentState curState, ComponentState nextState)
|
public override int Count
|
||||||
{
|
{
|
||||||
if (!(curState is StackComponentState cast))
|
get => base.Count;
|
||||||
return;
|
set
|
||||||
|
{
|
||||||
|
base.Count = value;
|
||||||
|
|
||||||
Count = cast.Count;
|
_uiUpdateNeeded = true;
|
||||||
MaxCount = cast.MaxCount;
|
}
|
||||||
_uiUpdateNeeded = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private sealed class StatusControl : Control
|
private sealed class StatusControl : Control
|
||||||
|
|||||||
@@ -43,8 +43,6 @@ namespace Content.Client.State
|
|||||||
|
|
||||||
public override void Shutdown()
|
public override void Shutdown()
|
||||||
{
|
{
|
||||||
_playerManager.LocalPlayer.DetachEntity();
|
|
||||||
|
|
||||||
_inputManager.KeyBindStateChanged -= OnKeyBindStateChanged;
|
_inputManager.KeyBindStateChanged -= OnKeyBindStateChanged;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ using Content.Server.GameObjects.Components.Stack;
|
|||||||
using Content.Server.GameObjects.EntitySystems;
|
using Content.Server.GameObjects.EntitySystems;
|
||||||
using Content.Server.Interfaces;
|
using Content.Server.Interfaces;
|
||||||
using Content.Shared.Construction;
|
using Content.Shared.Construction;
|
||||||
|
using Content.Shared.GameObjects.Components;
|
||||||
using Robust.Server.GameObjects;
|
using Robust.Server.GameObjects;
|
||||||
using Robust.Server.GameObjects.EntitySystems;
|
using Robust.Server.GameObjects.EntitySystems;
|
||||||
using Robust.Server.Interfaces.GameObjects;
|
using Robust.Server.Interfaces.GameObjects;
|
||||||
@@ -14,7 +15,6 @@ using Robust.Shared.Interfaces.GameObjects.Components;
|
|||||||
using Robust.Shared.Interfaces.Random;
|
using Robust.Shared.Interfaces.Random;
|
||||||
using Robust.Shared.IoC;
|
using Robust.Shared.IoC;
|
||||||
using Robust.Shared.Localization;
|
using Robust.Shared.Localization;
|
||||||
using Robust.Shared.Map;
|
|
||||||
using Robust.Shared.ViewVariables;
|
using Robust.Shared.ViewVariables;
|
||||||
using static Content.Shared.Construction.ConstructionStepMaterial;
|
using static Content.Shared.Construction.ConstructionStepMaterial;
|
||||||
using static Content.Shared.Construction.ConstructionStepTool;
|
using static Content.Shared.Construction.ConstructionStepTool;
|
||||||
@@ -114,7 +114,7 @@ namespace Content.Server.GameObjects.Components.Construction
|
|||||||
{
|
{
|
||||||
Sprite.AddLayerWithSprite(prototype.Icon);
|
Sprite.AddLayerWithSprite(prototype.Icon);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ using Content.Server.GameObjects.EntitySystems;
|
|||||||
using Content.Server.Players;
|
using Content.Server.Players;
|
||||||
using Content.Shared.GameObjects.Components.Observer;
|
using Content.Shared.GameObjects.Components.Observer;
|
||||||
using Robust.Server.GameObjects;
|
using Robust.Server.GameObjects;
|
||||||
|
using Robust.Server.GameObjects.Components;
|
||||||
using Robust.Server.Interfaces.GameObjects;
|
using Robust.Server.Interfaces.GameObjects;
|
||||||
using Robust.Shared.GameObjects;
|
using Robust.Shared.GameObjects;
|
||||||
using Robust.Shared.Interfaces.GameObjects;
|
using Robust.Shared.Interfaces.GameObjects;
|
||||||
@@ -28,6 +29,13 @@ namespace Content.Server.GameObjects.Components.Observer
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void Initialize()
|
||||||
|
{
|
||||||
|
base.Initialize();
|
||||||
|
|
||||||
|
Owner.EnsureComponent<VisibilityComponent>().Layer = (int)VisibilityFlags.Ghost;
|
||||||
|
}
|
||||||
|
|
||||||
public override ComponentState GetComponentState() => new GhostComponentState(CanReturnToBody);
|
public override ComponentState GetComponentState() => new GhostComponentState(CanReturnToBody);
|
||||||
|
|
||||||
public override void HandleMessage(ComponentMessage message, INetChannel netChannel = null,
|
public override void HandleMessage(ComponentMessage message, INetChannel netChannel = null,
|
||||||
@@ -44,10 +52,12 @@ namespace Content.Server.GameObjects.Components.Observer
|
|||||||
actor.playerSession.ContentData().Mind.UnVisit();
|
actor.playerSession.ContentData().Mind.UnVisit();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PlayerAttachedMsg _:
|
case PlayerAttachedMsg msg:
|
||||||
|
msg.NewPlayer.VisibilityMask |= (int)VisibilityFlags.Ghost;
|
||||||
Dirty();
|
Dirty();
|
||||||
break;
|
break;
|
||||||
case PlayerDetachedMsg _:
|
case PlayerDetachedMsg msg:
|
||||||
|
msg.OldPlayer.VisibilityMask &= ~(int)VisibilityFlags.Ghost;
|
||||||
Timer.Spawn(100, Owner.Delete);
|
Timer.Spawn(100, Owner.Delete);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -1,7 +1,15 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using Content.Server.GameObjects.EntitySystems;
|
||||||
|
using Content.Shared.Audio;
|
||||||
using Robust.Server.GameObjects;
|
using Robust.Server.GameObjects;
|
||||||
|
using Robust.Server.GameObjects.EntitySystems;
|
||||||
using Robust.Shared.GameObjects;
|
using Robust.Shared.GameObjects;
|
||||||
|
using Robust.Shared.Interfaces.GameObjects;
|
||||||
|
using Robust.Shared.Interfaces.Random;
|
||||||
|
using Robust.Shared.IoC;
|
||||||
using Robust.Shared.Maths;
|
using Robust.Shared.Maths;
|
||||||
|
using Robust.Shared.Prototypes;
|
||||||
|
using Robust.Shared.Random;
|
||||||
using Robust.Shared.Serialization;
|
using Robust.Shared.Serialization;
|
||||||
using Robust.Shared.ViewVariables;
|
using Robust.Shared.ViewVariables;
|
||||||
|
|
||||||
@@ -24,9 +32,14 @@ namespace Content.Server.GameObjects.Components.Power
|
|||||||
/// Component that represents a light bulb. Can be broken, or burned, which turns them mostly useless.
|
/// Component that represents a light bulb. Can be broken, or burned, which turns them mostly useless.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[RegisterComponent]
|
[RegisterComponent]
|
||||||
public class LightBulbComponent : Component
|
public class LightBulbComponent : Component, ILand
|
||||||
{
|
{
|
||||||
|
|
||||||
|
#pragma warning disable 649
|
||||||
|
[Dependency] private readonly IPrototypeManager _prototypeManager;
|
||||||
|
[Dependency] private readonly IRobustRandom _random;
|
||||||
|
#pragma warning restore 649
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Invoked whenever the state of the light bulb changes.
|
/// Invoked whenever the state of the light bulb changes.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -104,5 +117,18 @@ namespace Content.Server.GameObjects.Components.Power
|
|||||||
base.Initialize();
|
base.Initialize();
|
||||||
UpdateColor();
|
UpdateColor();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void Land(LandEventArgs eventArgs)
|
||||||
|
{
|
||||||
|
if (State == LightBulbState.Broken)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var soundCollection = _prototypeManager.Index<SoundCollectionPrototype>("glassbreak");
|
||||||
|
var file = _random.Pick(soundCollection.PickFiles);
|
||||||
|
|
||||||
|
IoCManager.Resolve<IEntitySystemManager>().GetEntitySystem<AudioSystem>().Play(file, Owner);
|
||||||
|
|
||||||
|
State = LightBulbState.Broken;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,11 +3,9 @@ using Content.Server.GameObjects.EntitySystems;
|
|||||||
using Content.Shared.GameObjects.Components;
|
using Content.Shared.GameObjects.Components;
|
||||||
using Content.Shared.Interfaces;
|
using Content.Shared.Interfaces;
|
||||||
using Robust.Shared.GameObjects;
|
using Robust.Shared.GameObjects;
|
||||||
using Robust.Shared.Interfaces.Reflection;
|
|
||||||
using Robust.Shared.IoC;
|
using Robust.Shared.IoC;
|
||||||
using Robust.Shared.Localization;
|
using Robust.Shared.Localization;
|
||||||
using Robust.Shared.Map;
|
using Robust.Shared.Map;
|
||||||
using Robust.Shared.Serialization;
|
|
||||||
using Robust.Shared.Timers;
|
using Robust.Shared.Timers;
|
||||||
using Robust.Shared.Utility;
|
using Robust.Shared.Utility;
|
||||||
using Robust.Shared.ViewVariables;
|
using Robust.Shared.ViewVariables;
|
||||||
@@ -23,34 +21,19 @@ namespace Content.Server.GameObjects.Components.Stack
|
|||||||
[Dependency] private readonly ISharedNotifyManager _sharedNotifyManager;
|
[Dependency] private readonly ISharedNotifyManager _sharedNotifyManager;
|
||||||
#pragma warning restore 649
|
#pragma warning restore 649
|
||||||
|
|
||||||
private const string SerializationCache = "stack";
|
|
||||||
private int _count = 50;
|
|
||||||
private int _maxCount = 50;
|
|
||||||
private bool _throwIndividually = false;
|
private bool _throwIndividually = false;
|
||||||
|
|
||||||
[ViewVariables(VVAccess.ReadWrite)]
|
public override int Count
|
||||||
public int Count
|
|
||||||
{
|
{
|
||||||
get => _count;
|
get => base.Count;
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
_count = value;
|
base.Count = value;
|
||||||
if (_count <= 0)
|
|
||||||
|
if (Count <= 0)
|
||||||
{
|
{
|
||||||
Owner.Delete();
|
Owner.Delete();
|
||||||
}
|
}
|
||||||
Dirty();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[ViewVariables]
|
|
||||||
public int MaxCount
|
|
||||||
{
|
|
||||||
get => _maxCount;
|
|
||||||
private set
|
|
||||||
{
|
|
||||||
_maxCount = value;
|
|
||||||
Dirty();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -65,12 +48,6 @@ namespace Content.Server.GameObjects.Components.Stack
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[ViewVariables]
|
|
||||||
public int AvailableSpace => MaxCount - Count;
|
|
||||||
|
|
||||||
[ViewVariables]
|
|
||||||
public object StackType { get; private set; }
|
|
||||||
|
|
||||||
public void Add(int amount)
|
public void Add(int amount)
|
||||||
{
|
{
|
||||||
Count += amount;
|
Count += amount;
|
||||||
@@ -91,42 +68,6 @@ namespace Content.Server.GameObjects.Components.Stack
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void ExposeData(ObjectSerializer serializer)
|
|
||||||
{
|
|
||||||
serializer.DataFieldCached(ref _maxCount, "max", 50);
|
|
||||||
serializer.DataFieldCached(ref _count, "count", MaxCount);
|
|
||||||
|
|
||||||
if (!serializer.Reading)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (serializer.TryGetCacheData(SerializationCache, out object stackType))
|
|
||||||
{
|
|
||||||
StackType = stackType;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (serializer.TryReadDataFieldCached("stacktype", out string raw))
|
|
||||||
{
|
|
||||||
var refl = IoCManager.Resolve<IReflectionManager>();
|
|
||||||
if (refl.TryParseEnumReference(raw, out var @enum))
|
|
||||||
{
|
|
||||||
stackType = @enum;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
stackType = raw;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
stackType = Owner.Prototype.ID;
|
|
||||||
}
|
|
||||||
serializer.SetCacheData(SerializationCache, stackType);
|
|
||||||
StackType = stackType;
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool AttackBy(AttackByEventArgs eventArgs)
|
public bool AttackBy(AttackByEventArgs eventArgs)
|
||||||
{
|
{
|
||||||
if (eventArgs.AttackWith.TryGetComponent<StackComponent>(out var stack))
|
if (eventArgs.AttackWith.TryGetComponent<StackComponent>(out var stack))
|
||||||
@@ -175,20 +116,5 @@ namespace Content.Server.GameObjects.Components.Stack
|
|||||||
"There is [color=lightgray]1[/color] thing in the stack",
|
"There is [color=lightgray]1[/color] thing in the stack",
|
||||||
"There are [color=lightgray]{0}[/color] things in the stack.", Count, Count));
|
"There are [color=lightgray]{0}[/color] things in the stack.", Count, Count));
|
||||||
}
|
}
|
||||||
|
|
||||||
public override ComponentState GetComponentState()
|
|
||||||
{
|
|
||||||
return new StackComponentState(Count, MaxCount);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum StackType
|
|
||||||
{
|
|
||||||
Metal,
|
|
||||||
Glass,
|
|
||||||
Cable,
|
|
||||||
Ointment,
|
|
||||||
Brutepack,
|
|
||||||
FloorTileSteel
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
10
Content.Server/GameObjects/VisibilityFlags.cs
Normal file
10
Content.Server/GameObjects/VisibilityFlags.cs
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
|
namespace Content.Server.GameObjects
|
||||||
|
{
|
||||||
|
[Flags]
|
||||||
|
public enum VisibilityFlags
|
||||||
|
{
|
||||||
|
Ghost = 2,
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,16 +1,109 @@
|
|||||||
using System;
|
using System;
|
||||||
using Robust.Shared.GameObjects;
|
using Robust.Shared.GameObjects;
|
||||||
|
using Robust.Shared.Interfaces.Reflection;
|
||||||
|
using Robust.Shared.IoC;
|
||||||
using Robust.Shared.Serialization;
|
using Robust.Shared.Serialization;
|
||||||
|
using Robust.Shared.ViewVariables;
|
||||||
|
|
||||||
namespace Content.Shared.GameObjects.Components
|
namespace Content.Shared.GameObjects.Components
|
||||||
{
|
{
|
||||||
public abstract class SharedStackComponent : Component
|
public abstract class SharedStackComponent : Component
|
||||||
{
|
{
|
||||||
|
private const string SerializationCache = "stack";
|
||||||
|
|
||||||
public sealed override string Name => "Stack";
|
public sealed override string Name => "Stack";
|
||||||
public sealed override uint? NetID => ContentNetIDs.STACK;
|
public sealed override uint? NetID => ContentNetIDs.STACK;
|
||||||
|
|
||||||
|
private int _count;
|
||||||
|
private int _maxCount;
|
||||||
|
|
||||||
|
[ViewVariables(VVAccess.ReadWrite)]
|
||||||
|
public virtual int Count
|
||||||
|
{
|
||||||
|
get => _count;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_count = value;
|
||||||
|
if (_count <= 0)
|
||||||
|
{
|
||||||
|
Owner.Delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
Dirty();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[ViewVariables]
|
||||||
|
public int MaxCount
|
||||||
|
{
|
||||||
|
get => _maxCount;
|
||||||
|
private set
|
||||||
|
{
|
||||||
|
_maxCount = value;
|
||||||
|
Dirty();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[ViewVariables] public int AvailableSpace => MaxCount - Count;
|
||||||
|
|
||||||
|
[ViewVariables] public object StackType { get; private set; }
|
||||||
|
|
||||||
|
public override void ExposeData(ObjectSerializer serializer)
|
||||||
|
{
|
||||||
|
serializer.DataFieldCached(ref _maxCount, "max", 50);
|
||||||
|
serializer.DataFieldCached(ref _count, "count", MaxCount);
|
||||||
|
|
||||||
|
if (!serializer.Reading)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (serializer.TryGetCacheData(SerializationCache, out object stackType))
|
||||||
|
{
|
||||||
|
StackType = stackType;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (serializer.TryReadDataFieldCached("stacktype", out string raw))
|
||||||
|
{
|
||||||
|
var refl = IoCManager.Resolve<IReflectionManager>();
|
||||||
|
if (refl.TryParseEnumReference(raw, out var @enum))
|
||||||
|
{
|
||||||
|
stackType = @enum;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
stackType = raw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
stackType = Owner.Prototype.ID;
|
||||||
|
}
|
||||||
|
|
||||||
|
serializer.SetCacheData(SerializationCache, stackType);
|
||||||
|
StackType = stackType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override ComponentState GetComponentState()
|
||||||
|
{
|
||||||
|
return new StackComponentState(Count, MaxCount);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void HandleComponentState(ComponentState curState, ComponentState nextState)
|
||||||
|
{
|
||||||
|
if (!(curState is StackComponentState cast))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Count = cast.Count;
|
||||||
|
MaxCount = cast.MaxCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
[Serializable, NetSerializable]
|
[Serializable, NetSerializable]
|
||||||
protected sealed class StackComponentState : ComponentState
|
private sealed class StackComponentState : ComponentState
|
||||||
{
|
{
|
||||||
public int Count { get; }
|
public int Count { get; }
|
||||||
public int MaxCount { get; }
|
public int MaxCount { get; }
|
||||||
@@ -22,4 +115,14 @@ namespace Content.Shared.GameObjects.Components
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public enum StackType
|
||||||
|
{
|
||||||
|
Metal,
|
||||||
|
Glass,
|
||||||
|
Cable,
|
||||||
|
Ointment,
|
||||||
|
Brutepack,
|
||||||
|
FloorTileSteel
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
Resources/Audio/effects/glassbreak1.ogg
Normal file
BIN
Resources/Audio/effects/glassbreak1.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/effects/glassbreak2.ogg
Normal file
BIN
Resources/Audio/effects/glassbreak2.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/effects/glassbreak3.ogg
Normal file
BIN
Resources/Audio/effects/glassbreak3.ogg
Normal file
Binary file not shown.
6
Resources/Prototypes/SoundCollections/glassbreak.yml
Normal file
6
Resources/Prototypes/SoundCollections/glassbreak.yml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
- type: sound_collection
|
||||||
|
id: glassbreak
|
||||||
|
files:
|
||||||
|
- /Audio/effects/glassbreak1.ogg
|
||||||
|
- /Audio/effects/glassbreak2.ogg
|
||||||
|
- /Audio/effects/glassbreak3.ogg
|
||||||
Submodule RobustToolbox updated: 1cdb279319...3d6a3a6216
Reference in New Issue
Block a user