mourning-ember / src / main / java / dev / llan / view / game / modals / ModalManager.java
ModalManager.java
Raw
package dev.llan.view.game.modals;

import dev.llan.controller.Controller;
import dev.llan.model.GameRecord;
import dev.llan.model.cards.Card;
import dev.llan.model.pieces.Entity;
import dev.llan.model.pieces.attributes.effects.EffectRecord;
import dev.llan.model.pieces.attributes.inventory.equipment.Equipment;
import dev.llan.view.GameComponent;
import dev.llan.view.View;
import dev.llan.view.game.GameView;
import dev.llan.view.game.modals.card.CardView;
import dev.llan.view.game.modals.collection.CollectionView;
import dev.llan.view.game.modals.entity.EntityView;
import dev.llan.view.game.modals.equipment.EquipmentView;
import dev.llan.view.game.modals.status.StatusView;
import javafx.scene.Parent;
import javafx.scene.layout.Pane;

public class ModalManager implements GameComponent {
  private final Pane viewContainer;
  private final GameView gameView;

  private final CollectionView collectionView;
  private boolean collectionModalOn;

  private final EquipmentView equipmentView;
  private boolean equipmentModalOn;

  private final CardView cardView;
  private boolean cardModalOn;

  private final EntityView entityView;
  private boolean entityModalOn;

  private final StatusView statusView;
  private boolean statusModalOn;

  public ModalManager(View view, GameView gameView, Controller controller, Pane viewContainer) {
    this.viewContainer = viewContainer;
    this.gameView = gameView;

    collectionView = new CollectionView(view, controller, viewContainer);
    collectionModalOn = false;

    equipmentView = new EquipmentView(view, viewContainer);
    equipmentModalOn = false;

    cardView = new CardView(view, viewContainer);
    cardModalOn = false;

    entityView = new EntityView(view, viewContainer);
    entityModalOn = false;

    statusView = new StatusView(view, viewContainer);
    statusModalOn = false;
  }

  public void setCollectionModalOn(boolean on) {
    collectionModalOn = on;
    setModalOn(on, collectionView.render());
  }

  public boolean isCollectionModalOn() {
    return collectionModalOn;
  }

  public void setEquipmentModalOn(boolean on, ModalData<Equipment> data) {
    equipmentModalOn = on;
    if(on) {
      equipmentView.setView(data);
    }
    setModalOn(on, equipmentView.render());
  }

  public boolean isEquipmentModalOn() {
    return equipmentModalOn;
  }

  public void setCardModalOn(boolean on, ModalData<Card> data) {
    cardModalOn = on;
    setModalOn(on, cardView.render());
    if(on) {
      cardView.setView(data);
    }
  }

  public boolean isCardModalOn() {
    return cardModalOn;
  }

  public void setEntityModalOn(boolean on, ModalData<Entity> data) {
    entityModalOn = on;
    setModalOn(on, entityView.render());
    if(on) {
      entityView.setView(data);
    }
  }

  public boolean isEntityModalOn() {
    return entityModalOn;
  }

  public void setStatusModalOn(boolean on, ModalData<EffectRecord> data) {
    statusModalOn = on;
    setModalOn(on, statusView.render());
    if(on) {
      statusView.setView(data);
    }
  }

  public boolean isStatusModalOn() {
    return statusModalOn;
  }

  private void setModalOn(boolean on, Parent modal) {
    if(on) {
      viewContainer.getChildren().add(modal);
      gameView.setScrolling(false);
    } else {
      viewContainer.getChildren().remove(modal);
      gameView.setScrolling(true);
    }
  }

  @Override
  public void updateGameRecord(GameRecord gameRecord) {
    collectionView.updateGameRecord(gameRecord);
  }
}