Beispiel #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();
        }
Beispiel #2
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);
        }
Beispiel #3
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);
        }