Remove IMoveSpeedModifier in favor of events (#5212)
* Remove IMoveSpeedModifier * fucking magboots * yope * rabiews
This commit is contained in:
@@ -12,6 +12,7 @@ using Content.Shared.ActionBlocker;
|
||||
using Content.Shared.Acts;
|
||||
using Content.Shared.Inventory;
|
||||
using Content.Shared.Movement.Components;
|
||||
using Content.Shared.Movement.EntitySystems;
|
||||
using Content.Shared.Popups;
|
||||
using Content.Shared.Verbs;
|
||||
using Robust.Server.Console;
|
||||
@@ -60,46 +61,6 @@ namespace Content.Server.Inventory.Components
|
||||
}
|
||||
}
|
||||
|
||||
public override float WalkSpeedModifier
|
||||
{
|
||||
get
|
||||
{
|
||||
var mod = 1f;
|
||||
foreach (var slot in _slotContainers.Values)
|
||||
{
|
||||
if (slot.ContainedEntity != null)
|
||||
{
|
||||
foreach (var modifier in slot.ContainedEntity.GetAllComponents<IMoveSpeedModifier>())
|
||||
{
|
||||
mod *= modifier.WalkSpeedModifier;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return mod;
|
||||
}
|
||||
}
|
||||
|
||||
public override float SprintSpeedModifier
|
||||
{
|
||||
get
|
||||
{
|
||||
var mod = 1f;
|
||||
foreach (var slot in _slotContainers.Values)
|
||||
{
|
||||
if (slot.ContainedEntity != null)
|
||||
{
|
||||
foreach (var modifier in slot.ContainedEntity.GetAllComponents<IMoveSpeedModifier>())
|
||||
{
|
||||
mod *= modifier.SprintSpeedModifier;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return mod;
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnRemove()
|
||||
{
|
||||
var slots = _slotContainers.Keys.ToList();
|
||||
@@ -333,10 +294,7 @@ namespace Content.Server.Inventory.Components
|
||||
|
||||
private void UpdateMovementSpeed()
|
||||
{
|
||||
if (Owner.TryGetComponent(out MovementSpeedModifierComponent? mod))
|
||||
{
|
||||
mod.RefreshMovementSpeedModifiers();
|
||||
}
|
||||
EntitySystem.Get<MovementSpeedModifierSystem>().RefreshMovementSpeedModifiers(OwnerUid);
|
||||
}
|
||||
|
||||
public void ForceUnequip(Slots slot)
|
||||
|
||||
@@ -5,6 +5,7 @@ using Content.Shared.Inventory;
|
||||
using Content.Shared.Slippery;
|
||||
using Content.Shared.Damage;
|
||||
using Content.Shared.Electrocution;
|
||||
using Content.Shared.Movement.EntitySystems;
|
||||
using Robust.Shared.Containers;
|
||||
using Robust.Shared.GameObjects;
|
||||
|
||||
@@ -23,6 +24,7 @@ namespace Content.Server.Inventory
|
||||
SubscribeLocalEvent<InventoryComponent, DamageModifyEvent>(OnDamageModify);
|
||||
SubscribeLocalEvent<InventoryComponent, ElectrocutionAttemptEvent>(OnElectrocutionAttempt);
|
||||
SubscribeLocalEvent<InventoryComponent, SlipAttemptEvent>(OnSlipAttemptEvent);
|
||||
SubscribeLocalEvent<InventoryComponent, RefreshMovementSpeedModifiersEvent>(OnRefreshMovespeed);
|
||||
}
|
||||
|
||||
private void OnSlipAttemptEvent(EntityUid uid, InventoryComponent component, SlipAttemptEvent args)
|
||||
@@ -33,6 +35,11 @@ namespace Content.Server.Inventory
|
||||
}
|
||||
}
|
||||
|
||||
private void OnRefreshMovespeed(EntityUid uid, InventoryComponent component, RefreshMovementSpeedModifiersEvent args)
|
||||
{
|
||||
RelayInventoryEvent(component, args);
|
||||
}
|
||||
|
||||
private static void HandleInvRemovedFromContainer(EntityUid uid, InventoryComponent component, EntRemovedFromContainerMessage args)
|
||||
{
|
||||
component.ForceUnequip(args.Container, args.Entity);
|
||||
@@ -45,31 +52,25 @@ namespace Content.Server.Inventory
|
||||
|
||||
private void OnHighPressureEvent(EntityUid uid, InventoryComponent component, HighPressureEvent args)
|
||||
{
|
||||
RelayPressureEvent(component, args);
|
||||
RelayInventoryEvent(component, args);
|
||||
}
|
||||
|
||||
private void OnLowPressureEvent(EntityUid uid, InventoryComponent component, LowPressureEvent args)
|
||||
{
|
||||
RelayPressureEvent(component, args);
|
||||
RelayInventoryEvent(component, args);
|
||||
}
|
||||
|
||||
private void OnElectrocutionAttempt(EntityUid uid, InventoryComponent component, ElectrocutionAttemptEvent args)
|
||||
{
|
||||
foreach (var equipped in component.GetAllHeldItems())
|
||||
{
|
||||
RaiseLocalEvent(equipped.Uid, args, false);
|
||||
}
|
||||
RelayInventoryEvent(component, args);
|
||||
}
|
||||
|
||||
private void OnDamageModify(EntityUid uid, InventoryComponent component, DamageModifyEvent args)
|
||||
{
|
||||
foreach (var equipped in component.GetAllHeldItems())
|
||||
{
|
||||
RaiseLocalEvent(equipped.Uid, args, false);
|
||||
}
|
||||
RelayInventoryEvent(component, args);
|
||||
}
|
||||
|
||||
private void RelayPressureEvent<T>(InventoryComponent component, T args) where T : PressureEvent
|
||||
private void RelayInventoryEvent<T>(InventoryComponent component, T args) where T : EntityEventArgs
|
||||
{
|
||||
foreach (var equipped in component.GetAllHeldItems())
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user