PressButton.java 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package eu.oschl.gui.actions;
  2. import eu.oschl.gui.Output;
  3. import eu.oschl.textadventure.Game;
  4. import eu.oschl.textadventure.objects.Button;
  5. import javafx.scene.paint.Color;
  6. /**
  7. * Action for pressing a button in the current room.
  8. *
  9. * @author Ondřej Schlaichert
  10. */
  11. public class PressButton implements Action {
  12. private final Game game;
  13. public PressButton(Game game) {
  14. this.game = game;
  15. }
  16. @Override
  17. public String getId() {
  18. return "press";
  19. }
  20. @Override
  21. public String getName() {
  22. return "Press";
  23. }
  24. @Override
  25. public String getDescription() {
  26. return "press a button";
  27. }
  28. @Override
  29. public void execute(String[] args) {
  30. for (var object : this.game.getCurrentRoom().getObjects()) {
  31. if (object.getName().equalsIgnoreCase(String.join(" ", args))) {
  32. if (object instanceof Button button) {
  33. var result = button.press();
  34. if (result) {
  35. Output.print(button.getPressText(), Color.MAGENTA);
  36. } else {
  37. Output.print("Button ", Color.RED);
  38. Output.print(button.getName(), Color.MAGENTA);
  39. Output.print(" has already been pressed.", Color.RED);
  40. }
  41. } else {
  42. Output.print("It's impossible to press ", Color.RED);
  43. Output.print(object.getName(), Color.MAGENTA);
  44. Output.print(". It's not a button.", Color.RED);
  45. }
  46. return;
  47. }
  48. }
  49. Output.print("That item is not here.", Color.RED);
  50. }
  51. }