using Content.Server.Kitchen.Components; using Content.Server.Nyanotrasen.Kitchen.Components; using Content.Shared.Chemistry.Components; using Content.Shared.Database; using Content.Shared.Hands.Components; using Content.Shared.Interaction; using Content.Shared.Item; using Content.Shared.Nyanotrasen.Kitchen.UI; using Content.Shared.Storage; using Content.Shared.Tools.Components; namespace Content.Server.Nyanotrasen.Kitchen.EntitySystems; public sealed partial class DeepFryerSystem { public bool CanInsertItem(EntityUid uid, DeepFryerComponent component, EntityUid item) { // Keep this consistent with the checks in TryInsertItem. return HasComp(item) && !HasComp(item) && component.Storage.ContainedEntities.Count < component.StorageMaxEntities; } private bool TryInsertItem(EntityUid uid, DeepFryerComponent component, EntityUid user, EntityUid item) { if (!HasComp(item)) { _popupSystem.PopupEntity( Loc.GetString("deep-fryer-interact-using-not-item"), uid, user); return false; } if (HasComp(item)) { _popupSystem.PopupEntity( Loc.GetString("deep-fryer-storage-no-fit", ("item", item)), uid, user); return false; } if (component.Storage.ContainedEntities.Count >= component.StorageMaxEntities) { _popupSystem.PopupEntity( Loc.GetString("deep-fryer-storage-full"), uid, user); return false; } if (!_handsSystem.TryDropIntoContainer(user, item, component.Storage)) return false; AfterInsert(uid, component, item); _adminLogManager.Add(LogType.Action, LogImpact.Low, $"{ToPrettyString(user)} put {ToPrettyString(item)} inside {ToPrettyString(uid)}."); return true; } private void OnInteractUsing(EntityUid uid, DeepFryerComponent component, InteractUsingEvent args) { if (args.Handled) return; // By default, allow entities with SolutionTransfer or Tool // components to perform their usual actions. Inserting them (if // the chef really wants to) will be supported through the UI. if (HasComp(args.Used) || HasComp(args.Used)) return; if (TryInsertItem(uid, component, args.User, args.Used)) args.Handled = true; } private void OnInsertItem(EntityUid uid, DeepFryerComponent component, DeepFryerInsertItemMessage args) { if (!TryComp(args.Actor, out var handsComponent) || handsComponent.ActiveHandEntity == null) return; if (handsComponent.ActiveHandEntity != null) TryInsertItem(uid, component, args.Actor, handsComponent.ActiveHandEntity.Value); } }