171 lines
5.7 KiB
Java
171 lines
5.7 KiB
Java
import javax.swing.*;
|
|
import java.awt.*;
|
|
|
|
/**
|
|
* Der MainFrame dient als Hub und Übergreifendes Fenster auf dem alle weiteren Panel angezeigt werden.
|
|
* Dadurch werden keine weiteren Fenster geöffnet.
|
|
* @author Lucas Bronson, Luca Conte, Joshua Kuklok
|
|
*/
|
|
public class MainFrame extends JFrame {
|
|
|
|
private CardLayout cardLayout;
|
|
private JPanel mainPanel;
|
|
|
|
// ---------- //
|
|
// Diverse Hilfsvariablen (für Parameterübergabe etc.)
|
|
// Von startMultiplayerGame an JoinGame
|
|
int localMult;
|
|
|
|
// Von startLocalGame an startLocalGameLoadingScreen
|
|
// Von startLocalGameLoadingScreen an GameBoard
|
|
int semesterCounter;
|
|
// ---------- //
|
|
|
|
private GameBoard gameBoard;
|
|
|
|
/**
|
|
* Konstruktor von MainFrame.
|
|
* Ermöglicht es Panel anzuzeigen.
|
|
* @author Lucas Bronson, Luca Conte, Joshua Kuklok
|
|
*/
|
|
public MainFrame() {
|
|
|
|
GameController.setMainFrame(this);
|
|
|
|
setTitle("Studium Versenken");
|
|
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
|
setSize(1500, 1000);
|
|
setLocationRelativeTo(null);
|
|
|
|
// CardLayout und Hauptpanel erstellen
|
|
cardLayout = new CardLayout();
|
|
mainPanel = new JPanel(cardLayout);
|
|
|
|
// Panels erstellen
|
|
MainMenuView mainMenuView = new MainMenuView(this);
|
|
startLocalGame localGame = new startLocalGame(this);
|
|
startMultiplayerGame multiplayerGame = new startMultiplayerGame(this);
|
|
coinToss coinToss = new coinToss(this);
|
|
Verbinden verbinden = new Verbinden(this);
|
|
|
|
// Panels hinzufügen
|
|
mainPanel.add(mainMenuView, "MainMenu");
|
|
mainPanel.add(localGame, "LocalGame");
|
|
mainPanel.add(multiplayerGame, "MultiplayerGame");
|
|
mainPanel.add(coinToss, "coinToss");
|
|
mainPanel.add(verbinden, "Verbinden");
|
|
// mainPanel.add(winLooseScreen, "WinLooseScreen");
|
|
|
|
// Hauptpanel in JFrame hinzufügen
|
|
add(mainPanel);
|
|
|
|
// Hauptmenü anzeigen
|
|
cardLayout.show(mainPanel, "MainMenu");
|
|
}
|
|
|
|
/**
|
|
* Methode, um die Ansicht zu wechseln
|
|
* @param panelName Name des anzuzeigenden Panels
|
|
* @author Joshua Kuklok
|
|
*/
|
|
public void showPanel(String panelName) {
|
|
cardLayout.show(mainPanel, panelName);
|
|
}
|
|
|
|
/**
|
|
* Spezifische ShowPanel-Funktion der startMultiplayerGame Klasse
|
|
* @param panelName Name des anzuzeigenden Panels
|
|
* @param num Hilfsvariable um abzugleichen, ob "Spiel erstellen" oder "Spiel beitreten" ausgewählt wurde
|
|
* @param playerType Spielertyp(HumanPlayer, AIEasy etc.)
|
|
* @param playerName Name des Spielers
|
|
* @author Lucas Bronson, Joshua Kuklok
|
|
*/
|
|
public void showPanelSMG(String panelName, int num, int playerType,String playerName) {
|
|
this.localMult = num;
|
|
|
|
JoinGame joinGame = new JoinGame(this, localMult, playerType, playerName);
|
|
mainPanel.add(joinGame, panelName);
|
|
mainPanel.revalidate();
|
|
mainPanel.repaint();
|
|
cardLayout.show(mainPanel, panelName);
|
|
}
|
|
|
|
/**
|
|
* Spezifische ShowPanel der startLocalGameLoadingScreen Klasse (DURCH BACKEND AUFGERUFEN)
|
|
* @param panelName Name des anzuzeigenden Panels
|
|
* @param semesterCounter Ausgewähltes Semester
|
|
* @param p1 Erstes Spielerobjekt
|
|
* @param p2 Zweites Spielerobjekt
|
|
* @author Lucas Bronson, Luca Conte, Joshua Kuklok
|
|
*/
|
|
public void showPanelSLG(String panelName,int semesterCounter, Player p1, Player p2) {
|
|
this.semesterCounter = semesterCounter;
|
|
|
|
this.gameBoard = new GameBoard(this, semesterCounter, p1, p2);
|
|
mainPanel.add(gameBoard, panelName);
|
|
mainPanel.revalidate();
|
|
mainPanel.repaint();
|
|
cardLayout.show(mainPanel, panelName); // Panel anzeigen
|
|
}
|
|
|
|
/**
|
|
* Spezifische ShowPanel der startLocalGame Klasse
|
|
* @param panelName Name des anzuzeigenden Panels
|
|
* @param semesterCounter Ausgewähltes Semester
|
|
* @author Joshua Kuklok
|
|
*/
|
|
public void showPanelSLGLS(String panelName,int semesterCounter) {
|
|
this.semesterCounter = semesterCounter;
|
|
|
|
startLocalGameLoadingScreen LocalGameLoadingScreen = new startLocalGameLoadingScreen(this, semesterCounter);
|
|
mainPanel.add(LocalGameLoadingScreen, panelName);
|
|
mainPanel.revalidate();
|
|
mainPanel.repaint();
|
|
cardLayout.show(mainPanel, panelName); // Panel anzeigen
|
|
}
|
|
|
|
/**
|
|
* Spezifische ShowPanel für WinScreen Klasse
|
|
* @param panelName Name des anzuzeigenden Panels
|
|
* @param player Player von dem die funktion aufgerufen worden ist
|
|
* @author Lucas Bronson, Peer Ole Wachtel
|
|
*/
|
|
public void showPanelWin(String panelName, Player player){
|
|
if(player != gameBoard.getP1()){
|
|
return;
|
|
}
|
|
WinScreen winScreen = new WinScreen(this);
|
|
mainPanel.add(winScreen, panelName);
|
|
mainPanel.revalidate();
|
|
mainPanel.repaint();
|
|
cardLayout.show(mainPanel, panelName);
|
|
}
|
|
|
|
/**
|
|
* Spezifische ShowPanel für LooseScreen Klasse
|
|
* @param panelName Name des anzuzeigenden Panels
|
|
* @param player Player von dem die funktion aufgerufen worden ist
|
|
* @author Lucas Bronson, Peer Ole Wachtel
|
|
*/
|
|
public void showPanelLoose(String panelName, Player player){
|
|
if(player != gameBoard.getP1()){
|
|
return;
|
|
}
|
|
LooseScreen looseScreen = new LooseScreen(this);
|
|
mainPanel.add(looseScreen,panelName);
|
|
mainPanel.revalidate();
|
|
mainPanel.repaint();
|
|
cardLayout.show(mainPanel, panelName);
|
|
}
|
|
|
|
/**
|
|
* Aktualisiert das Spielfeld (kontextText)
|
|
* @author Luca Conte
|
|
*/
|
|
public void refreshGameBoard() {
|
|
if(this.gameBoard == null) {
|
|
return;
|
|
}
|
|
this.gameBoard.refresh();
|
|
}
|
|
} |