mourning-ember / src / main / java / dev / llan / view / game / utilities / UtilitiesView.java
UtilitiesView.java
Raw
package dev.llan.view.game.utilities;

import dev.llan.controller.Controller;
import dev.llan.model.GameRecord;
import dev.llan.model.state.State;
import dev.llan.view.RenderComponent;
import dev.llan.view.GameComponent;
import dev.llan.view.View;
import dev.llan.view.game.utilities.cards.CardsView;
import dev.llan.view.game.utilities.inventory.InventoryView;
import dev.llan.view.game.utilities.stats.StatsView;
import dev.llan.view.game.utilities.status.StatusView;
import dev.llan.view.game.utilities.turns.TurnsView;
import javafx.scene.Parent;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;

public class UtilitiesView implements RenderComponent, GameComponent {
  private final VBox box;


  private final StatsView statsView;
  private final CardsView cardsView;
  private final StatusView statusView;
  private final InventoryView inventoryView;
  private final TurnsView turnsView;

  private boolean isExploration;

  public UtilitiesView(View view, Controller controller, Pane parent) {
    box = new VBox();
    box.prefWidthProperty().bind(parent.widthProperty());
    box.getStyleClass().add("util-background");

    statsView = new StatsView(box);
    box.getChildren().add(statsView.render());

    cardsView = new CardsView(view, controller, box);
    box.getChildren().add(cardsView.render());

    statusView = new StatusView(view, box);

    inventoryView = new InventoryView(view, controller, box);
    box.getChildren().add(inventoryView.render());

    turnsView = new TurnsView(view, controller);

    isExploration = true;
  }

  @Override
  public void updateGameRecord(GameRecord gameRecord) {
    if(gameRecord.getGameState() == State.COMBAT) {
      if(isExploration) {
        isExploration = false;
        box.getChildren().clear();
        box.getChildren().add(statsView.render());
        box.getChildren().add(cardsView.render());
        box.getChildren().add(statusView.render());
        box.getChildren().add(inventoryView.render());
        box.getChildren().add(turnsView.render());
      }
      statusView.updateGameRecord(gameRecord);
      turnsView.updateGameRecord(gameRecord);
    } else if (gameRecord.getGameState() == State.EXPLORATION && !isExploration) {
      isExploration = true;
      box.getChildren().remove(statusView.render());
      box.getChildren().remove(turnsView.render());
    }
    inventoryView.updateGameRecord(gameRecord);
    statsView.updateGameRecord(gameRecord);
    cardsView.updateGameRecord(gameRecord);
  }

  @Override
  public Parent render() {
    return box;
  }
}