|
|
@@ -2,6 +2,8 @@ package eu.oschl.gui;
|
|
|
|
|
|
import eu.oschl.gui.actions.Action;
|
|
|
import eu.oschl.gui.actions.Enter;
|
|
|
+import eu.oschl.gui.actions.PressButton;
|
|
|
+import eu.oschl.gui.actions.Slay;
|
|
|
import eu.oschl.gui.exceptions.InvalidActionId;
|
|
|
import javafx.event.ActionEvent;
|
|
|
import javafx.fxml.FXML;
|
|
|
@@ -37,6 +39,11 @@ public class GameController implements Observer {
|
|
|
actionProcessor.executeAction(buttonData.actionId(), buttonData.arguments());
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void update() {
|
|
|
+ renderActionButtons();
|
|
|
+ }
|
|
|
+
|
|
|
private void renderActionButtons() {
|
|
|
inputButtonContainer.getChildren().clear();
|
|
|
|
|
|
@@ -54,6 +61,34 @@ public class GameController implements Observer {
|
|
|
|
|
|
button.getStyleClass().add("enter-button");
|
|
|
|
|
|
+ newButtons.add(button);
|
|
|
+ }
|
|
|
+ } else if (action instanceof PressButton) {
|
|
|
+ var objects = Session.getGame().getCurrentRoom().getObjects();
|
|
|
+
|
|
|
+ for (var object : objects) {
|
|
|
+ if (object instanceof eu.oschl.textadventure.objects.Button) {
|
|
|
+ var label = action.getName() + " " + object.getName();
|
|
|
+ var buttonData = new ButtonData(action.getId(), object.getName());
|
|
|
+
|
|
|
+ var button = createActionButton(label, buttonData);
|
|
|
+
|
|
|
+ button.getStyleClass().add("press-button");
|
|
|
+
|
|
|
+ newButtons.add(button);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (action instanceof Slay) {
|
|
|
+ var enemy = Session.getGame().getCurrentRoom().getEnemy();
|
|
|
+
|
|
|
+ if (enemy.isPresent() && enemy.get().isAlive()) {
|
|
|
+ var label = action.getName() + " " + enemy.get().getName();
|
|
|
+ var buttonData = new ButtonData(action.getId(), enemy.get().getName());
|
|
|
+
|
|
|
+ var button = createActionButton(label, buttonData);
|
|
|
+
|
|
|
+ button.getStyleClass().add("slay-button");
|
|
|
+
|
|
|
newButtons.add(button);
|
|
|
}
|
|
|
} else {
|
|
|
@@ -64,11 +99,6 @@ public class GameController implements Observer {
|
|
|
inputButtonContainer.getChildren().addAll(newButtons);
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- public void update() {
|
|
|
- renderActionButtons();
|
|
|
- }
|
|
|
-
|
|
|
private Button createActionButton(String label, ButtonData buttonData) {
|
|
|
Button actionButton = new Button(label);
|
|
|
|