UseItem.java 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package eu.oschl.gui.actions;
  2. import eu.oschl.gui.Output;
  3. import eu.oschl.textadventure.Game;
  4. import javafx.scene.paint.Color;
  5. public class UseItem implements Action {
  6. private final Game game;
  7. public UseItem(Game game) {
  8. this.game = game;
  9. }
  10. @Override
  11. public String getId() {
  12. return "useitem";
  13. }
  14. @Override
  15. public String getName() {
  16. return "Use item";
  17. }
  18. @Override
  19. public String getDescription() {
  20. return "use an item";
  21. }
  22. @Override
  23. public void execute(String[] args) {
  24. if (args.length == 0) {
  25. Output.print("What item?", Color.RED);
  26. return;
  27. }
  28. var item = this.game.getInventory().getItems().stream()
  29. .filter(inventoryItem -> inventoryItem.getName().equalsIgnoreCase(String.join(" ", args)))
  30. .findFirst()
  31. .orElse(null);
  32. if (item == null) {
  33. Output.print("That item does not exist.", Color.RED);
  34. return;
  35. }
  36. var result = item.use();
  37. if (result) {
  38. Output.print(item.getUseText(), Color.MAGENTA);
  39. } else {
  40. Output.print("It's impossible to use ", Color.RED);
  41. Output.print(item.getName(), Color.MAGENTA);
  42. Output.print(" here.", Color.RED);
  43. }
  44. }
  45. }