private void InspectInsideContainer(Noun target, Noun container) { // Check to see if there is an item var containerItem = _parserService.GetItemFromCurrentLocation(container); if (containerItem != null) { if (!containerItem.IsContainer) { ItemStrings.ITEM_NOT_CONTAINER.OutputResponse(container); return; } var targetItem = _parserService.GetItemFromContainer(target, container); if (!containerItem.HasItem(targetItem)) { ItemStrings.ITEM_NOT_IN_CONTAINER.OutputResponse(target, containerItem); return; } this.Command.InspectItemInContainer(targetItem, containerItem); return; } ItemStrings.ITEM_DOES_NOT_EXIST.OutputResponse(container); }
private void TakeFromContainer(Noun target, Noun container) { // Check to see if there is an item var containerItem = _parserService.GetItemFromCurrentLocation(container); if (containerItem != null) { if (!containerItem.IsContainer) { ItemStrings.ITEM_NOT_CONTAINER.OutputResponse(container); return; } if (target.Word == "all" || target.Word == "everything") { var takeableItems = containerItem.Inventory.Items .Where(i => i.IsTakeable) .ToList(); if (takeableItems.Count == 0) { ItemStrings.CONTAINER_HAS_NO_TAKEABLE_ITEMS.OutputResponse(containerItem); return; } this.Command.TakeItemsFromContainer(containerItem, takeableItems); takeableItems.ForEach(i => i.ItemStrings.ITEM_TAKEN_FROM_VERBOSE.OutputResponse(i, containerItem)); return; } var targetItem = _parserService.GetItemFromContainer(target, container); if (!containerItem.HasItem(targetItem)) { ItemStrings.ITEM_NOT_IN_CONTAINER.OutputResponse(target, containerItem); return; } if (!targetItem.IsTakeable) { ItemStrings.ITEM_CANNOT_BE_TAKEN.OutputResponse(target); return; } this.Command.TakeItemFromContainer(targetItem, containerItem); targetItem.ItemStrings.ITEM_TAKEN.OutputResponse(); return; } ItemStrings.ITEM_DOES_NOT_EXIST.OutputResponse(container); }