public void ApplyUse(IInteractionComponent interactor) { switch (state) { case States.Empty: if (interactor.CurrentItem == null) { return; } Set(interactor.RemoveItem()); break; case States.HasItem: if (interactor.CurrentItem != null) { item.Combine(interactor.CurrentItem.Ingredient); return; } if (interactor.ReceiveItem(item)) { item = null; state = States.Empty; } break; default: throw new ArgumentOutOfRangeException(); } }