Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }