predict StackSystem GetVerbsEvent (#39741)
This commit is contained in:
@@ -16,13 +16,9 @@ namespace Content.Server.Stack
|
||||
{
|
||||
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
|
||||
|
||||
public static readonly int[] DefaultSplitAmounts = { 1, 5, 10, 20, 30, 50 };
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<StackComponent, GetVerbsEvent<AlternativeVerb>>(OnStackAlternativeInteract);
|
||||
}
|
||||
|
||||
public override void SetCount(EntityUid uid, int amount, StackComponent? component = null)
|
||||
@@ -165,42 +161,7 @@ namespace Content.Server.Stack
|
||||
return amounts;
|
||||
}
|
||||
|
||||
private void OnStackAlternativeInteract(EntityUid uid, StackComponent stack, GetVerbsEvent<AlternativeVerb> args)
|
||||
{
|
||||
if (!args.CanAccess || !args.CanInteract || args.Hands == null || stack.Count == 1)
|
||||
return;
|
||||
|
||||
AlternativeVerb halve = new()
|
||||
{
|
||||
Text = Loc.GetString("comp-stack-split-halve"),
|
||||
Category = VerbCategory.Split,
|
||||
Act = () => UserSplit(uid, args.User, stack.Count / 2, stack),
|
||||
Priority = 1
|
||||
};
|
||||
args.Verbs.Add(halve);
|
||||
|
||||
var priority = 0;
|
||||
foreach (var amount in DefaultSplitAmounts)
|
||||
{
|
||||
if (amount >= stack.Count)
|
||||
continue;
|
||||
|
||||
AlternativeVerb verb = new()
|
||||
{
|
||||
Text = amount.ToString(),
|
||||
Category = VerbCategory.Split,
|
||||
Act = () => UserSplit(uid, args.User, amount, stack),
|
||||
// we want to sort by size, not alphabetically by the verb text.
|
||||
Priority = priority
|
||||
};
|
||||
|
||||
priority--;
|
||||
|
||||
args.Verbs.Add(verb);
|
||||
}
|
||||
}
|
||||
|
||||
private void UserSplit(EntityUid uid, EntityUid userUid, int amount,
|
||||
protected override void UserSplit(EntityUid uid, EntityUid userUid, int amount,
|
||||
StackComponent? stack = null,
|
||||
TransformComponent? userTransform = null)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user