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