Exemple #1
0
        public void ParseAndExecute(string alias, Arguments args = null)
        {
            var grammar = new GrammarParser(args);

            var hasPrepositions = grammar.HasAnyPreposition();

            if (!grammar.HasSubject() && !hasPrepositions)
            {
                this.Command.OutputLocationDescription();
                return;
            }

            if (hasPrepositions)
            {
                if (grammar.HasPrepositionAt(Preposition.IN, 1) ||
                    grammar.HasPrepositionAt(Preposition.WITHIN, 1) ||
                    grammar.HasPrepositionAt(Preposition.INSIDE, 1))
                {
                    var location = grammar.GetObjectOfPreposition(grammar.GetPreposition(1));

                    if (location == null)
                    {
                        ItemStrings.LOOK_INSIDE_WHAT.OutputResponse();
                        return;
                    }

                    LookInsideContainer(location);
                    return;
                }
            }

            CommandStrings.NO_UNDERSTAND_LOOK.OutputResponse();
        }
Exemple #2
0
        public void ParseAndExecute(string alias, Arguments args = null)
        {
            var grammar = new GrammarParser(args);

            if (!grammar.HasSubject())
            {
                ItemStrings.WHAT_ITEM.OutputResponse(alias);
                return;
            }

            var target = grammar.GetSubject();

            var playerInventory = this.Command.GameState.Player.Inventory;
            var targetItem      = _parserService.GetItemFromInventory(target, playerInventory);

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

            if (!targetItem.IsDroppable)
            {
                ItemStrings.ITEM_CANNOT_BE_DROPPED.OutputResponse(targetItem.Name);
                return;
            }

            this.Command.DropItem(targetItem);

            targetItem.ItemStrings.ITEM_DROPPED.OutputResponse();
        }
Exemple #3
0
        public void ParseAndExecute(string nameOrAlias, Arguments args = null)
        {
            var grammar = new GrammarParser(args);

            if (!grammar.HasSubject())
            {
                // Converts a shortcut alias into its full name for the sake of a natural response
                if (nameOrAlias == "i")
                {
                    nameOrAlias = "inspect";
                }

                ItemStrings.WHAT_ITEM.OutputResponse(nameOrAlias);
                return;
            }

            var target = grammar.GetSubject();

            if (!grammar.HasAnyPreposition())
            {
                InspectFromCurrentLocation(target);
                return;
            }

            if (grammar.HasPrepositionAt(Preposition.FROM, 1) ||
                grammar.HasPrepositionAt(Preposition.OUT, 1) ||
                grammar.HasPrepositionAt(Preposition.IN, 1) ||
                grammar.HasPrepositionAt(Preposition.WITHIN, 1) ||
                grammar.HasPrepositionAt(Preposition.INSIDE, 1))
            {
                var location = grammar.GetObjectOfPreposition(grammar.GetPreposition(1));

                if (location == null)
                {
                    ItemStrings.INSPECT_FROM_WHERE.OutputResponse(target);
                    return;
                }

                InspectInside(target, location);
                return;
            }

            CommandStrings.NO_UNDERSTAND_INSPECT.OutputResponse(target);
        }
Exemple #4
0
        public void ParseAndExecute(string nameOrAlias, Arguments args = null)
        {
            var grammar = new GrammarParser(args);

            if (!grammar.HasSubject())
            {
                ItemStrings.WHAT_ITEM.OutputResponse(nameOrAlias);
                return;
            }

            var target = grammar.GetSubject();

            if (!grammar.HasAnyPreposition())
            {
                TakeFrom(target, new Noun("here"));
                return;
            }

            if (grammar.HasPrepositionAt(Preposition.FROM, 1) ||
                grammar.HasPrepositionAt(Preposition.OUT, 1) ||
                grammar.HasPrepositionAt(Preposition.IN, 1) ||
                grammar.HasPrepositionAt(Preposition.WITHIN, 1) ||
                grammar.HasPrepositionAt(Preposition.INSIDE, 1))
            {
                var location = grammar.GetObjectOfPreposition(grammar.GetPreposition(1));

                if (location == null)
                {
                    ItemStrings.TAKE_FROM_WHERE.OutputResponse(target);
                    return;
                }

                TakeFrom(target, location);
                return;
            }

            CommandStrings.NO_UNDERSTAND_TAKE.OutputResponse(target);
        }
Exemple #5
0
        private void ParseAndExecuteWithArgs(Arguments args)
        {
            if (!args.HasAtLeast(1))
            {
                Output.WriteNewLine("Where do you want to move to?");
                return;
            }

            var grammar = new GrammarParser(args);

            if (grammar.HasSubject())
            {
                var subject = grammar.GetSubject();
                ParseAndExecuteDirection(subject.Word);
            }
            else
            {
                var preposition = grammar.GetPreposition(1);
                if (preposition == Preposition.TO)
                {
                    if (grammar.HasObjectOfPreposition(preposition))
                    {
                        var objOfPrep = grammar.GetObjectOfPreposition(preposition);
                        ParseAndExecuteDirection(objOfPrep.Word);
                    }
                    else
                    {
                        Output.WriteNewLine("Where do you want to move to?");
                    }
                }
                else
                {
                    Output.WriteNewLine("I don't understand where you want to go.");
                }
            }
        }