package eu.oschl.gui; import eu.oschl.gui.actions.*; import eu.oschl.gui.exceptions.InvalidActionId; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.scene.control.Button; import javafx.scene.layout.VBox; import javafx.scene.text.TextFlow; import java.util.ArrayList; public class GameController implements Observer { @FXML private TextFlow output; @FXML private VBox inputButtonContainer; @FXML private VBox inventoryContainer; @FXML public void initialize() { Output.setOutputElement(output); Session.getActionProcessor().register(this); update(); Output.print(Session.getGame().getPrologue()); } @FXML private void exectuteAction(ActionEvent event) throws InvalidActionId { Button clickedButton = (Button) event.getSource(); ButtonData buttonData = (ButtonData) clickedButton.getUserData(); var actionProcessor = Session.getActionProcessor(); actionProcessor.executeAction(buttonData.actionId(), buttonData.arguments()); } @Override public void update() { renderActionButtons(); renderInventoryItems(); } private void renderActionButtons() { inputButtonContainer.getChildren().clear(); var newButtons = new ArrayList