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