2021-06-21 02:13:54 +02:00
|
|
|
using System;
|
2020-12-17 10:45:04 +03:00
|
|
|
using System.Threading.Tasks;
|
2021-06-09 22:19:39 +02:00
|
|
|
using Content.Server.Hands.Components;
|
|
|
|
|
using Content.Shared.Examine;
|
|
|
|
|
using Content.Shared.Interaction;
|
2021-09-26 15:18:45 +02:00
|
|
|
using Content.Shared.Popups;
|
2020-08-13 12:39:23 -05:00
|
|
|
using Robust.Shared.GameObjects;
|
|
|
|
|
using Robust.Shared.Localization;
|
2021-03-05 01:08:38 +01:00
|
|
|
using Robust.Shared.Serialization.Manager.Attributes;
|
2020-08-13 12:39:23 -05:00
|
|
|
using Robust.Shared.Utility;
|
|
|
|
|
using Robust.Shared.ViewVariables;
|
|
|
|
|
|
2021-06-09 22:19:39 +02:00
|
|
|
namespace Content.Server.RCD.Components
|
2020-08-13 12:39:23 -05:00
|
|
|
{
|
|
|
|
|
[RegisterComponent]
|
|
|
|
|
public class RCDAmmoComponent : Component, IAfterInteract, IExamine
|
|
|
|
|
{
|
|
|
|
|
public override string Name => "RCDAmmo";
|
|
|
|
|
|
|
|
|
|
//How much ammo we refill
|
2021-03-05 01:08:38 +01:00
|
|
|
[ViewVariables(VVAccess.ReadWrite)] [DataField("refillAmmo")] private int refillAmmo = 5;
|
2020-08-13 12:39:23 -05:00
|
|
|
|
|
|
|
|
public void Examine(FormattedMessage message, bool inDetailsRange)
|
|
|
|
|
{
|
2021-06-21 02:13:54 +02:00
|
|
|
message.AddMarkup(Loc.GetString("rcd-ammo-component-on-examine-text",("ammo", refillAmmo)));
|
2020-08-13 12:39:23 -05:00
|
|
|
}
|
|
|
|
|
|
2021-02-04 17:50:28 +01:00
|
|
|
async Task<bool> IAfterInteract.AfterInteract(AfterInteractEventArgs eventArgs)
|
2020-08-13 12:39:23 -05:00
|
|
|
{
|
2021-03-16 15:50:20 +01:00
|
|
|
if (eventArgs.Target == null ||
|
|
|
|
|
!eventArgs.Target.TryGetComponent(out RCDComponent? rcdComponent) ||
|
|
|
|
|
!eventArgs.User.TryGetComponent(out IHandsComponent? hands))
|
2020-08-13 12:39:23 -05:00
|
|
|
{
|
2021-02-03 14:05:31 +01:00
|
|
|
return false;
|
2020-08-13 12:39:23 -05:00
|
|
|
}
|
|
|
|
|
|
2021-03-31 12:41:23 -07:00
|
|
|
if (rcdComponent.MaxAmmo - rcdComponent._ammo < refillAmmo)
|
2020-08-13 12:39:23 -05:00
|
|
|
{
|
2021-06-21 02:13:54 +02:00
|
|
|
rcdComponent.Owner.PopupMessage(eventArgs.User, Loc.GetString("rcd-ammo-component-after-interact-full-text"));
|
2021-02-03 14:05:31 +01:00
|
|
|
return true;
|
2020-08-13 12:39:23 -05:00
|
|
|
}
|
|
|
|
|
|
2021-03-31 12:41:23 -07:00
|
|
|
rcdComponent._ammo = Math.Min(rcdComponent.MaxAmmo, rcdComponent._ammo + refillAmmo);
|
2021-06-21 02:13:54 +02:00
|
|
|
rcdComponent.Owner.PopupMessage(eventArgs.User, Loc.GetString("rcd-ammo-component-after-interact-refilled-text"));
|
2020-08-13 12:39:23 -05:00
|
|
|
|
|
|
|
|
//Deleting a held item causes a lot of errors
|
|
|
|
|
hands.Drop(Owner, false);
|
|
|
|
|
Owner.Delete();
|
2021-02-03 14:05:31 +01:00
|
|
|
return true;
|
2020-08-13 12:39:23 -05:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|