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 SS14.Shared.GameObjects;
using Content.Server.GameObjects.EntitySystems;
@@ -54,9 +54,9 @@ namespace Content.Server.GameObjects.Components.Weapon.Melee
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 (!stackComponent.Use(1))

View File

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

View File

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

View File

@@ -159,10 +159,10 @@ namespace Content.Server.GameObjects
/// </summary>
/// <param name="user"></param>
/// <returns></returns>
bool IUse.UseEntity(IEntity user)
bool IUse.UseEntity(UseEntityEventArgs eventArgs)
{
_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);
SubscribeSession(user_session);
SendNetworkMessage(new OpenStorageUIMessage(), user_session.ConnectedClient);
@@ -304,7 +304,7 @@ namespace Content.Server.GameObjects
/// <inheritdoc />
void IActivate.Activate(IEntity user)
{
((IUse) this).UseEntity(user);
((IUse) this).UseEntity(new UseEntityEventArgs { User = user });
}
private void _ensureInitialCalculated()

View File

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

View File

@@ -108,7 +108,12 @@ namespace Content.Server.GameObjects.EntitySystems
/// </summary>
/// <param name="user"></param>
/// <returns></returns>
bool UseEntity(IEntity user);
bool UseEntity(UseEntityEventArgs eventArgs);
}
public class UseEntityEventArgs : EventArgs
{
public IEntity User { get; set; }
}
/// <summary>
@@ -356,7 +361,7 @@ namespace Content.Server.GameObjects.EntitySystems
//Try to use item on any components which have the interface
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;
}