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(); }
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); }
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); }