1
0

LS03-02-2 | LevelChooser: Erweiterung um den Button "Spielen" mit Aufruf der SpielGUI; Übergabe des Users

This commit is contained in:
2021-05-28 09:12:59 +02:00
parent d278c3ca1f
commit 1d4c43990b
4 changed files with 40 additions and 6 deletions
@@ -2,7 +2,7 @@
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="de.oszimt.ls.aliendefence.view.menue.LevelChoice"> <form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="de.oszimt.ls.aliendefence.view.menue.LevelChoice">
<grid id="27dc6" binding="panel" layout-manager="BorderLayout" hgap="0" vgap="0"> <grid id="27dc6" binding="panel" layout-manager="BorderLayout" hgap="0" vgap="0">
<constraints> <constraints>
<xy x="20" y="20" width="500" height="400"/> <xy x="20" y="20" width="501" height="400"/>
</constraints> </constraints>
<properties/> <properties/>
<border type="none"/> <border type="none"/>
@@ -12,6 +12,12 @@
<properties/> <properties/>
<border type="none"/> <border type="none"/>
<children> <children>
<component id="cdd2d" class="javax.swing.JButton" binding="btnPlay">
<constraints/>
<properties>
<text value="Spielen"/>
</properties>
</component>
<component id="c85bc" class="javax.swing.JButton" binding="btnNewLevel"> <component id="c85bc" class="javax.swing.JButton" binding="btnNewLevel">
<constraints/> <constraints/>
<properties> <properties>
@@ -1,8 +1,11 @@
package de.oszimt.ls.aliendefence.view.menue; package de.oszimt.ls.aliendefence.view.menue;
import de.oszimt.ls.aliendefence.controller.AlienDefenceController; import de.oszimt.ls.aliendefence.controller.AlienDefenceController;
import de.oszimt.ls.aliendefence.controller.GameController;
import de.oszimt.ls.aliendefence.controller.LevelController; import de.oszimt.ls.aliendefence.controller.LevelController;
import de.oszimt.ls.aliendefence.model.Level; import de.oszimt.ls.aliendefence.model.Level;
import de.oszimt.ls.aliendefence.model.User;
import de.oszimt.ls.aliendefence.view.game.GameGUI;
import javax.swing.*; import javax.swing.*;
import javax.swing.table.DefaultTableModel; import javax.swing.table.DefaultTableModel;
@@ -17,6 +20,7 @@ public class LevelChoice {
private JButton btnUpdateLevel; private JButton btnUpdateLevel;
private JTable tblLevels; private JTable tblLevels;
private JButton btnDeleteLevel; private JButton btnDeleteLevel;
private JButton btnPlay;
private final LevelController lvlControl; private final LevelController lvlControl;
private final LeveldesignWindow leveldesignWindow; private final LeveldesignWindow leveldesignWindow;
@@ -27,7 +31,7 @@ public class LevelChoice {
* @param controller * @param controller
* @param leveldesignWindow * @param leveldesignWindow
*/ */
public LevelChoice(AlienDefenceController controller, LeveldesignWindow leveldesignWindow) { public LevelChoice(AlienDefenceController controller, LeveldesignWindow leveldesignWindow, User user) {
this.lvlControl = controller.getLevelController(); this.lvlControl = controller.getLevelController();
this.leveldesignWindow = leveldesignWindow; this.leveldesignWindow = leveldesignWindow;
@@ -51,6 +55,12 @@ public class LevelChoice {
tblLevels.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); tblLevels.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
this.updateTableData(); this.updateTableData();
btnPlay.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
btnPlay_Clicked(controller, user);
}
});
} }
private String[][] getLevelsAsTableModel() { private String[][] getLevelsAsTableModel() {
@@ -85,6 +95,21 @@ public class LevelChoice {
this.updateTableData(); this.updateTableData();
} }
public void btnPlay_Clicked(AlienDefenceController alienDefenceController, User user) {
//Level_id des selektierten Elements auslesen
int level_id = Integer
.parseInt((String) this.tblLevels.getModel().getValueAt(this.tblLevels.getSelectedRow(), 0));
Thread t = new Thread("GameThread") {
@Override
public void run() {
GameController gameController = alienDefenceController.startGame(alienDefenceController.getLevelController().readLevel(level_id), user);
new GameGUI(gameController).start();
}
};
t.start();
}
public JPanel getPanel() { public JPanel getPanel() {
return panel; return panel;
} }
@@ -9,6 +9,7 @@ import javax.swing.border.EmptyBorder;
import de.oszimt.ls.aliendefence.controller.AlienDefenceController; import de.oszimt.ls.aliendefence.controller.AlienDefenceController;
import de.oszimt.ls.aliendefence.controller.LevelController; import de.oszimt.ls.aliendefence.controller.LevelController;
import de.oszimt.ls.aliendefence.model.Level; import de.oszimt.ls.aliendefence.model.Level;
import de.oszimt.ls.aliendefence.model.User;
@SuppressWarnings("serial") @SuppressWarnings("serial")
public class LeveldesignWindow extends JFrame { public class LeveldesignWindow extends JFrame {
@@ -23,7 +24,7 @@ public class LeveldesignWindow extends JFrame {
/** /**
* Create the frame. * Create the frame.
*/ */
public LeveldesignWindow(AlienDefenceController controller) { public LeveldesignWindow(AlienDefenceController controller, User user) {
this.lvlControl = controller.getLevelController(); this.lvlControl = controller.getLevelController();
setTitle("Leveldesigner"); setTitle("Leveldesigner");
@@ -35,7 +36,7 @@ public class LeveldesignWindow extends JFrame {
this.cards = new CardLayout(); this.cards = new CardLayout();
contentPane.setLayout(cards); contentPane.setLayout(cards);
levelChoice = new LevelChoice(controller, this); levelChoice = new LevelChoice(controller, this, user);
contentPane.add(levelChoice.getPanel(), "levelChooser"); contentPane.add(levelChoice.getPanel(), "levelChooser");
this.cardLevelEditor = new LevelEditor(this, controller, Level.getDefaultLevel()); this.cardLevelEditor = new LevelEditor(this, controller, Level.getDefaultLevel());
@@ -62,7 +62,9 @@ public class MainMenu {
testButton.addActionListener(new ActionListener() { testButton.addActionListener(new ActionListener() {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
new LevelChoice(alienDefenceController, new LeveldesignWindow(alienDefenceController)); // Erstellt Modell von aktuellen Nutzer
User user = new User(1, "test", "pass");
new LeveldesignWindow(alienDefenceController, user);
} }
}); });
@@ -78,7 +80,7 @@ public class MainMenu {
levelEditorButton.addActionListener(new ActionListener() { levelEditorButton.addActionListener(new ActionListener() {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
new LeveldesignWindow(alienDefenceController); new LeveldesignWindow(alienDefenceController, null);
} }
}); });