UseEntity with an EventArg object for a parameter

This commit is contained in:
PrPleGoo
2019-04-05 19:42:49 +02:00
parent 7d85141c9b
commit c90d54664b
6 changed files with 18 additions and 13 deletions

View File

@@ -1,4 +1,4 @@
using System; using System;
using Content.Server.GameObjects.Components.Stack; using Content.Server.GameObjects.Components.Stack;
using SS14.Shared.GameObjects; using SS14.Shared.GameObjects;
using Content.Server.GameObjects.EntitySystems; using Content.Server.GameObjects.EntitySystems;
@@ -54,9 +54,9 @@ namespace Content.Server.GameObjects.Components.Weapon.Melee
Owner.Delete(); Owner.Delete();
} }
bool IUse.UseEntity(IEntity user) bool IUse.UseEntity(UseEntityEventArgs eventArgs)
{ {
if (!user.TryGetComponent(out DamageableComponent damagecomponent)) return false; if (!eventArgs.User.TryGetComponent(out DamageableComponent damagecomponent)) return false;
if (Owner.TryGetComponent(out StackComponent stackComponent)) if (Owner.TryGetComponent(out StackComponent stackComponent))
{ {
if (!stackComponent.Use(1)) if (!stackComponent.Use(1))

View File

@@ -59,7 +59,7 @@ namespace Content.Server.GameObjects.Components.Interactable
return null; return null;
} }
bool IUse.UseEntity(IEntity user) bool IUse.UseEntity(UseEntityEventArgs eventArgs)
{ {
return ToggleStatus(); return ToggleStatus();
} }

View File

@@ -115,7 +115,7 @@ namespace Content.Server.GameObjects.Components.Interactable.Tools
return Fuel > 0; return Fuel > 0;
} }
public bool UseEntity(IEntity user) public bool UseEntity(UseEntityEventArgs eventArgs)
{ {
return ToggleStatus(); return ToggleStatus();
} }

View File

@@ -159,10 +159,10 @@ namespace Content.Server.GameObjects
/// </summary> /// </summary>
/// <param name="user"></param> /// <param name="user"></param>
/// <returns></returns> /// <returns></returns>
bool IUse.UseEntity(IEntity user) bool IUse.UseEntity(UseEntityEventArgs eventArgs)
{ {
_ensureInitialCalculated(); _ensureInitialCalculated();
var user_session = user.GetComponent<BasicActorComponent>().playerSession; var user_session = eventArgs.User.GetComponent<BasicActorComponent>().playerSession;
Logger.DebugS("Storage", "Storage (UID {0}) \"used\" by player session (UID {1}).", Owner.Uid, user_session.AttachedEntityUid); Logger.DebugS("Storage", "Storage (UID {0}) \"used\" by player session (UID {1}).", Owner.Uid, user_session.AttachedEntityUid);
SubscribeSession(user_session); SubscribeSession(user_session);
SendNetworkMessage(new OpenStorageUIMessage(), user_session.ConnectedClient); SendNetworkMessage(new OpenStorageUIMessage(), user_session.ConnectedClient);
@@ -304,7 +304,7 @@ namespace Content.Server.GameObjects
/// <inheritdoc /> /// <inheritdoc />
void IActivate.Activate(IEntity user) void IActivate.Activate(IEntity user)
{ {
((IUse) this).UseEntity(user); ((IUse) this).UseEntity(new UseEntityEventArgs { User = user });
} }
private void _ensureInitialCalculated() private void _ensureInitialCalculated()

View File

@@ -185,16 +185,16 @@ namespace Content.Server.GameObjects.Components.Weapon.Ranged.Projectile
_updateAppearance(); _updateAppearance();
} }
public bool UseEntity(IEntity user) public bool UseEntity(UseEntityEventArgs eventArgs)
{ {
var ret = EjectMagazine(); var ret = EjectMagazine();
if (ret) if (ret)
{ {
Owner.PopupMessage(user, "Magazine ejected"); Owner.PopupMessage(eventArgs.User, "Magazine ejected");
} }
else else
{ {
Owner.PopupMessage(user, "No magazine"); Owner.PopupMessage(eventArgs.User, "No magazine");
} }
return true; return true;

View File

@@ -108,7 +108,12 @@ namespace Content.Server.GameObjects.EntitySystems
/// </summary> /// </summary>
/// <param name="user"></param> /// <param name="user"></param>
/// <returns></returns> /// <returns></returns>
bool UseEntity(IEntity user); bool UseEntity(UseEntityEventArgs eventArgs);
}
public class UseEntityEventArgs : EventArgs
{
public IEntity User { get; set; }
} }
/// <summary> /// <summary>
@@ -356,7 +361,7 @@ namespace Content.Server.GameObjects.EntitySystems
//Try to use item on any components which have the interface //Try to use item on any components which have the interface
for (var i = 0; i < usables.Count; i++) for (var i = 0; i < usables.Count; i++)
{ {
if (usables[i].UseEntity(user)) //If an attackby returns a status completion we finish our attack if (usables[i].UseEntity(new UseEntityEventArgs { User = user })) //If an attackby returns a status completion we finish our attack
{ {
return; return;
} }