Beispiel #1
0
        private void InspectFromCurrentLocation(Noun target)
        {
            if (_parserService.HasItemInCurrentLocation(target))
            {
                var targetItem = _parserService.GetItemFromCurrentLocation(target);

                this.Command.InspectItemInCurrentLocation(targetItem);
                return;
            }

            ItemStrings.ITEM_DOES_NOT_EXIST.OutputResponse(target);
        }
Beispiel #2
0
        private void LookInsideContainer(Noun container)
        {
            var targetContainer = _parserService.GetItemFromCurrentLocation(container);

            if (targetContainer == null)
            {
                ItemStrings.ITEM_DOES_NOT_EXIST.OutputResponse(container);
                return;
            }

            this.Command.LookInsideContainer(targetContainer);
        }
Beispiel #3
0
        private void TakeFromCurrentLocation(Noun target)
        {
            var targetItem = _parserService.GetItemFromCurrentLocation(target);

            if (target.Word == "all" || target.Word == "everything")
            {
                var takeableItems = this.Command.GameState.Player.GetItemsInCurrentLocation()
                                    .Where(i => i.IsTakeable)
                                    .ToList();

                if (takeableItems.Count == 0)
                {
                    ItemStrings.LOCATION_HAS_NO_TAKEABLE_ITEMS.OutputResponse();
                    return;
                }

                this.Command.TakeItemsFromCurrentLocation(takeableItems);

                takeableItems.ForEach(i => i.ItemStrings.ITEM_TAKEN_VERBOSE.OutputResponse(i));
                return;
            }

            if (targetItem == null)
            {
                ItemStrings.ITEM_DOES_NOT_EXIST.OutputResponse(target);
                return;
            }

            if (!targetItem.IsTakeable)
            {
                ItemStrings.ITEM_CANNOT_BE_TAKEN.OutputResponse(targetItem.Name);
                return;
            }

            this.Command.TakeItemFromCurrentLocation(targetItem);

            targetItem.ItemStrings.ITEM_TAKEN.OutputResponse();
            return;
        }