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;
}
}