import javax.swing.*; import java.awt.*; //TODO Generell button ausblenden anpassen /** * Der MainFrame dient als Hub und Übergreifendes Fenster auf dem alle weiteren Panel angezeigt werden. * Dadurch werden keine weiteren Fenster geöffnet. */ 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. */ 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"); // 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 */ 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 */ 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(); // Refresh mainPanel.repaint(); cardLayout.show(mainPanel, panelName); // Show the panel } /** * 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 */ 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); // Show the panel } /** * Spezifische ShowPanel der startLocalGame Klasse * @param panelName Name des anzuzeigenden Panels * @param semesterCounter Ausgewähltes Semester */ public void showPanelSLGLS(String panelName,int semesterCounter) { this.semesterCounter = semesterCounter; startLocalGameLoadingScreen LocalGameLoadingScreen = new startLocalGameLoadingScreen(this, semesterCounter); mainPanel.add(LocalGameLoadingScreen, panelName); mainPanel.revalidate(); // Refresh mainPanel.repaint(); cardLayout.show(mainPanel, panelName); // Show the panel } public void refreshGameBoard() { this.gameBoard.refresh(); } }