예제 #1
0
  public void doCommandWith(AdventureCommand c, AdventureEngine e, AdventureWindow w)
      throws DoNotUnderstandException {
    String key = myDirectObjectCommands.get(c.getVerb());
    if (key != null
        && key.equals("use")
        && myIndirectObjectCommands.contains(key)
        && ((Target) c.getDirectObject()).getUsable()
        && myUseListIO.containsKey(((Target) c.getDirectObject()).getName())) {
      String[] effects = myUseListIO.get(((Target) c.getDirectObject()).getName());
      w.println(effects[0]);
      ((Target) c.getIndirectObject()).setUsable(true);
      ((Target) c.getDirectObject()).setUsable(false);
      e.removeFromPlayerInventory(c.getDirectObject());
      ((Location) e.getPlayerLocation()).updateDescription(effects[1]);
      if (myDirectObjectCommands.containsKey("use")) {
        boolean canBe = myIndirectObjectCommands.contains(key);

        if (canBe && key.equals("examine")) {
          new ExamineStrategy().doCommand(c, e, w);
        } else if (canBe && key.equals("take")) {
          new TakeStrategy().doCommand(c, e, w);
        } else if (canBe && key.equals("drop")) {
          new DropStrategy().doCommand(c, e, w);
        } else if (canBe && key.equals("damage")) {
          new DamageStrategy().doCommand(c, e, w);
        }
      }
    } else {
      w.println("You might want to pick that up first.\n");
    }
  }