Reset project
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
package de.oszimt.ls.aliendefence.view;
|
||||
|
||||
import de.oszimt.ls.aliendefence.controller.AlienDefenceController;
|
||||
import de.oszimt.ls.aliendefence.model.persistence.IPersistance;
|
||||
import de.oszimt.ls.aliendefence.model.persistenceDummy.PersistanceDummy;
|
||||
import de.oszimt.ls.aliendefence.view.menue.MainMenu;
|
||||
|
||||
public class StartAlienDefence {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
IPersistance alienDefenceModel = new PersistanceDummy();//TODO new PersistanceDB();
|
||||
AlienDefenceController alienDefenceController = new AlienDefenceController(alienDefenceModel);
|
||||
MainMenu.show(alienDefenceController);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,95 @@
|
||||
package de.oszimt.ls.aliendefence.view.game;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.Point;
|
||||
import java.awt.Toolkit;
|
||||
|
||||
import javax.swing.ImageIcon;
|
||||
import javax.swing.JFrame;
|
||||
|
||||
import de.oszimt.ls.aliendefence.controller.GameController;
|
||||
import pictures._Res;
|
||||
|
||||
/**
|
||||
* GUI der Klasse _______
|
||||
*
|
||||
* @author Tenbusch
|
||||
*
|
||||
*/
|
||||
public class GameGUI extends JFrame {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
private GameJPanel spielfeld;
|
||||
private GameController gc;
|
||||
public final long STARTTIME;
|
||||
private final int WIDTH = 1280;
|
||||
private final int HEIGHT = 960;
|
||||
|
||||
// Konstruktor
|
||||
public GameGUI(GameController gc) {
|
||||
super("Spiel v0.0 - FPS: ");
|
||||
|
||||
setCursor(Toolkit.getDefaultToolkit().createCustomCursor(_Res.image("crosshair.png"),
|
||||
new Point(10, 10), "Cursor"));
|
||||
|
||||
// Fenstergestaltung
|
||||
setSize(WIDTH, HEIGHT);
|
||||
setLocation(10, 10);
|
||||
setResizable(false);
|
||||
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
|
||||
// Controller registrieren
|
||||
this.gc = gc;
|
||||
|
||||
setBackground(new Color(200, 200, 200));
|
||||
|
||||
gc.setHasWon(false);
|
||||
|
||||
spielfeld = new GameJPanel(gc);
|
||||
getContentPane().add(spielfeld);
|
||||
setLocationRelativeTo(null);
|
||||
setVisible(true);
|
||||
|
||||
// Startzeit setzen
|
||||
STARTTIME = System.currentTimeMillis();
|
||||
}
|
||||
|
||||
public void start() {
|
||||
|
||||
long lastStep = System.currentTimeMillis() - 1;
|
||||
|
||||
// Spielfeld vorbereiten
|
||||
gc.startLevel();
|
||||
|
||||
while (true) {
|
||||
|
||||
// FPS berechnen
|
||||
long delta = System.currentTimeMillis() - lastStep;
|
||||
lastStep = System.currentTimeMillis();
|
||||
setTitle("Spiel v0.0 - FPS: " + (1000 / delta));
|
||||
|
||||
// Spiellogik
|
||||
this.gc.doLogik(delta);
|
||||
|
||||
repaint();
|
||||
|
||||
try {
|
||||
Thread.sleep(1);
|
||||
} catch (Exception e) {
|
||||
|
||||
}
|
||||
|
||||
if (gc.isHasWon() || gc.timeleft() <= -1) {
|
||||
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
} catch (InterruptedException ignored) {
|
||||
}
|
||||
dispose();
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,99 @@
|
||||
package de.oszimt.ls.aliendefence.view.game;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.Font;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.SwingConstants;
|
||||
|
||||
import de.oszimt.ls.aliendefence.controller.GameController;
|
||||
import de.oszimt.ls.aliendefence.model.Target;
|
||||
import pictures._Res;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
public class GameJPanel extends JPanel {
|
||||
|
||||
// Attribute die zum Zeichnen aus dem Controller geholt werden müssen (konkrete
|
||||
// Objekte erst in init() erzeugen)
|
||||
private GameController gc;
|
||||
private MouseClickListener mouseClickListener;
|
||||
private List<TargetPainter> rechteckePainter;
|
||||
private BufferedImage img, win, lose;
|
||||
private JLabel lblTimeleft;
|
||||
|
||||
public GameJPanel(GameController gc) {
|
||||
super(); // do the JPanel-stuff
|
||||
this.gc = gc;
|
||||
this.mouseClickListener = new MouseClickListener(gc);
|
||||
this.addMouseListener(this.mouseClickListener);
|
||||
this.lblTimeleft = new JLabel(gc.timeleft() + "s");
|
||||
this.lblTimeleft.setHorizontalAlignment(SwingConstants.RIGHT);
|
||||
this.lblTimeleft.setBounds(1000, 10, 200, 40);
|
||||
this.lblTimeleft.setFont(new Font("Comic Sans Serif", Font.BOLD, 30));
|
||||
init();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Spielfläche initialisieren
|
||||
*/
|
||||
public void init() {
|
||||
this.img = _Res.bimage(this.gc.getCurrLevel().getBackgroundImage());
|
||||
this.win = _Res.bimage("YouWin.png");
|
||||
this.lose = _Res.bimage("YouLoose.png");
|
||||
|
||||
LinkedList<TargetPainter> rechteckePainter = new LinkedList<TargetPainter>();
|
||||
for (Target t : gc.getTargets()) {
|
||||
rechteckePainter.add(new TargetPainter(t));
|
||||
}
|
||||
this.rechteckePainter = rechteckePainter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void paintComponent(Graphics g) {
|
||||
|
||||
// Abfrage Gewinn oder
|
||||
if (gc.timeleft() <= 0 || gc.isHasWon()) {
|
||||
|
||||
g.setColor(Color.GRAY);
|
||||
if (gc.isHasWon()) {
|
||||
g.drawImage(this.win, 300, 120, null);
|
||||
} else {
|
||||
g.drawImage(this.lose, 300, 120, null);
|
||||
}
|
||||
g.setFont(new Font("Arial", Font.PLAIN, 16));
|
||||
// g.drawString(gc.getShotsFired() + " Schüsse mit " + gc.getAccuracy() + " %
|
||||
// Treffergenauigkeit", 300, 850);
|
||||
|
||||
} else {
|
||||
|
||||
// Spielfeldhintergrund zeichnen
|
||||
if (img != null) {
|
||||
g.drawImage(this.img, 0, 0, null);
|
||||
} else {
|
||||
g.setColor(Color.GREEN);
|
||||
g.fillRect(0, 0, this.getWidth(), this.getHeight());
|
||||
}
|
||||
|
||||
// System.out.println(gc.time());
|
||||
// Targets zeichnen
|
||||
for (TargetPainter rp : this.rechteckePainter) {
|
||||
rp.paint(g, gc.time());
|
||||
}
|
||||
|
||||
// Sekundenanzeige
|
||||
if (gc.timeleft() <= 5)
|
||||
g.setColor(Color.RED);
|
||||
else
|
||||
g.setColor(Color.WHITE);
|
||||
g.setFont(new Font("Comic Sans Serif", Font.PLAIN, 30));
|
||||
g.drawString(gc.timeleft() + "", 1210, 40);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package de.oszimt.ls.aliendefence.view.game;
|
||||
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
|
||||
import de.oszimt.ls.aliendefence.controller.GameController;
|
||||
|
||||
public class MouseClickListener extends MouseAdapter {
|
||||
|
||||
private GameController gc;
|
||||
|
||||
public MouseClickListener(GameController gc) {
|
||||
this.gc = gc;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mousePressed(MouseEvent e) {
|
||||
gc.fireShot(e.getX(), e.getY());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
package de.oszimt.ls.aliendefence.view.game;
|
||||
|
||||
import java.awt.Graphics;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
|
||||
import de.oszimt.ls.aliendefence.model.Target;
|
||||
import pictures._Res;
|
||||
|
||||
public class TargetPainter {
|
||||
|
||||
private Target target;
|
||||
private BufferedImage image;
|
||||
private BufferedImage imageDestroyed;
|
||||
|
||||
public TargetPainter(Target target) {
|
||||
this.target = target;
|
||||
this.image = _Res.bimage(target.getImageAddress());
|
||||
this.imageDestroyed = _Res.bimage("explosion.png");
|
||||
|
||||
}
|
||||
|
||||
public void paint(Graphics g, long time) {
|
||||
|
||||
long targetStartTime = target.getTime();
|
||||
long targetEndTime = target.getTime() + target.getDuration();
|
||||
|
||||
// Prüft, ob das Target erscheint.
|
||||
if ((time < targetStartTime || time > targetEndTime))
|
||||
return;
|
||||
|
||||
if (this.target.isHit() && time < targetEndTime) {
|
||||
|
||||
g.drawImage(this.imageDestroyed, this.target.getHitbox().getX(), this.target.getHitbox().getY(),
|
||||
this.target.getHitbox().getWidth(), this.target.getHitbox().getHeight(), null);
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
g.drawImage(this.image, this.target.getHitbox().getX(), this.target.getHitbox().getY(),
|
||||
this.target.getHitbox().getWidth(), this.target.getHitbox().getHeight(), null);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
package de.oszimt.ls.aliendefence.view.menue;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.util.Vector;
|
||||
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JScrollPane;
|
||||
import javax.swing.JTable;
|
||||
|
||||
import de.oszimt.ls.aliendefence.controller.AttemptController;
|
||||
import de.oszimt.ls.aliendefence.model.Level;
|
||||
|
||||
public class Highscore extends JFrame {
|
||||
|
||||
// Attribute
|
||||
private AttemptController attemptController;
|
||||
private Level level;
|
||||
|
||||
public Highscore(AttemptController attemptController, Level level) {
|
||||
this(attemptController, level, 0);
|
||||
}
|
||||
|
||||
// Konstruktor
|
||||
public Highscore(AttemptController attemptController, Level level, int game_id) {
|
||||
this.attemptController = attemptController;
|
||||
this.level = level;
|
||||
|
||||
// Zweidimensioaler Vector, mit Inhalt der Tabelle wird geholt.
|
||||
Vector<Vector<String>> vecRow = attemptController.getAllAttemptsPerLevel(level, game_id);
|
||||
|
||||
int mark = attemptController.getPlayerPosition();
|
||||
|
||||
setLayout(new BorderLayout(5, 10));
|
||||
|
||||
// Spaltenüberschriften
|
||||
Vector<String> title = new Vector<>();
|
||||
title.add("Rang");
|
||||
title.add("Spieler");
|
||||
title.add("Datum");
|
||||
title.add("Uhrzeit");
|
||||
title.add("Trefferwert");
|
||||
title.add("Genauigkeitswert");
|
||||
title.add("Reaktionswert");
|
||||
title.add("Highscore-Wert");
|
||||
|
||||
// Tablle basierend auf zweidimensionalem Vector
|
||||
JTable table = new JTable(vecRow, title);
|
||||
if (mark >= 0)
|
||||
table.setRowSelectionInterval(mark, mark);
|
||||
setMinimumSize(new Dimension(650, 500));
|
||||
getContentPane().add(new JScrollPane(table), BorderLayout.NORTH);
|
||||
setTitle("Highscore-Liste"); // Titel
|
||||
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
|
||||
pack();
|
||||
setVisible(true);
|
||||
|
||||
JButton btnZielndern = new JButton("Highscoreliste löschen");
|
||||
btnZielndern.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent arg0) {
|
||||
btnAendern_Clicked(arg0);
|
||||
}
|
||||
});
|
||||
|
||||
JPanel pnlSouth = new JPanel();
|
||||
pnlSouth.add(btnZielndern);
|
||||
|
||||
// fügt Panel mit Button hinzu
|
||||
add(pnlSouth, BorderLayout.SOUTH);
|
||||
this.setLocationRelativeTo(null);
|
||||
}
|
||||
|
||||
public void btnAendern_Clicked(ActionEvent evt) {
|
||||
this.attemptController.deleteHighscore(level.getLevel_id());
|
||||
dispose();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<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">
|
||||
<constraints>
|
||||
<xy x="20" y="20" width="500" height="400"/>
|
||||
</constraints>
|
||||
<properties/>
|
||||
<border type="none"/>
|
||||
<children>
|
||||
<grid id="6dda1" layout-manager="FlowLayout" hgap="5" vgap="5" flow-align="1">
|
||||
<constraints border-constraint="South"/>
|
||||
<properties/>
|
||||
<border type="none"/>
|
||||
<children>
|
||||
<component id="c85bc" class="javax.swing.JButton" binding="btnNewLevel">
|
||||
<constraints/>
|
||||
<properties>
|
||||
<text value="Neues Level"/>
|
||||
</properties>
|
||||
</component>
|
||||
<component id="9382c" class="javax.swing.JButton" binding="btnUpdateLevel">
|
||||
<constraints/>
|
||||
<properties>
|
||||
<text value="Ausgewähltes Level bearbeiten"/>
|
||||
</properties>
|
||||
</component>
|
||||
<component id="5f096" class="javax.swing.JButton" binding="btnDeleteLevel">
|
||||
<constraints/>
|
||||
<properties>
|
||||
<text value="Level löschen"/>
|
||||
</properties>
|
||||
</component>
|
||||
</children>
|
||||
</grid>
|
||||
<component id="fc00" class="javax.swing.JLabel">
|
||||
<constraints border-constraint="North"/>
|
||||
<properties>
|
||||
<font size="18" style="1"/>
|
||||
<horizontalAlignment value="0"/>
|
||||
<text value="Levelauswahl"/>
|
||||
</properties>
|
||||
</component>
|
||||
<scrollpane id="231d4">
|
||||
<constraints border-constraint="Center"/>
|
||||
<properties/>
|
||||
<border type="none"/>
|
||||
<children>
|
||||
<component id="28513" class="javax.swing.JTable" binding="tblLevels">
|
||||
<constraints/>
|
||||
<properties/>
|
||||
</component>
|
||||
</children>
|
||||
</scrollpane>
|
||||
</children>
|
||||
</grid>
|
||||
</form>
|
||||
@@ -0,0 +1,90 @@
|
||||
package de.oszimt.ls.aliendefence.view.menue;
|
||||
|
||||
import de.oszimt.ls.aliendefence.controller.LevelController;
|
||||
import de.oszimt.ls.aliendefence.model.Level;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.table.DefaultTableModel;
|
||||
import java.awt.*;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.util.List;
|
||||
|
||||
public class LevelChoice {
|
||||
private JPanel panel;
|
||||
private JButton btnNewLevel;
|
||||
private JButton btnUpdateLevel;
|
||||
private JTable tblLevels;
|
||||
private JButton btnDeleteLevel;
|
||||
|
||||
private final LevelController lvlControl;
|
||||
private final LeveldesignWindow leveldesignWindow;
|
||||
private DefaultTableModel jTableData;
|
||||
|
||||
/**
|
||||
* Create the panel
|
||||
* @param lvlControl
|
||||
* @param leveldesignWindow
|
||||
*/
|
||||
public LevelChoice(LevelController lvlControl, LeveldesignWindow leveldesignWindow) {
|
||||
this.lvlControl = lvlControl;
|
||||
this.leveldesignWindow = leveldesignWindow;
|
||||
|
||||
btnNewLevel.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent arg0) {
|
||||
btnNewLevel_Clicked();
|
||||
}
|
||||
});
|
||||
|
||||
btnUpdateLevel.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
btnUpdateLevel_Clicked();
|
||||
}
|
||||
});
|
||||
|
||||
btnDeleteLevel.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
btnDeleteLevel_Clicked();
|
||||
}
|
||||
});
|
||||
|
||||
tblLevels.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
|
||||
this.updateTableData();
|
||||
}
|
||||
|
||||
private String[][] getLevelsAsTableModel() {
|
||||
List<Level> levels = this.lvlControl.readAllLevels();
|
||||
String[][] result = new String[levels.size()][];
|
||||
int i = 0;
|
||||
for (Level l : levels) {
|
||||
result[i++] = l.getData();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public void updateTableData() {
|
||||
this.jTableData = new DefaultTableModel(this.getLevelsAsTableModel(), Level.getLevelDescriptions());
|
||||
this.tblLevels.setModel(jTableData);
|
||||
}
|
||||
|
||||
public void btnNewLevel_Clicked() {
|
||||
this.leveldesignWindow.startLevelEditor();
|
||||
}
|
||||
|
||||
public void btnUpdateLevel_Clicked() {
|
||||
int level_id = Integer
|
||||
.parseInt((String) this.tblLevels.getModel().getValueAt(this.tblLevels.getSelectedRow(), 0));
|
||||
this.leveldesignWindow.startLevelEditor(level_id);
|
||||
}
|
||||
|
||||
public void btnDeleteLevel_Clicked() {
|
||||
int level_id = Integer
|
||||
.parseInt((String) this.tblLevels.getModel().getValueAt(this.tblLevels.getSelectedRow(), 0));
|
||||
this.lvlControl.deleteLevel(level_id);
|
||||
this.updateTableData();
|
||||
}
|
||||
|
||||
public JPanel getPanel() {
|
||||
return panel;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,107 @@
|
||||
package de.oszimt.ls.aliendefence.view.menue;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Font;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.util.List;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.table.DefaultTableModel;
|
||||
|
||||
import de.oszimt.ls.aliendefence.controller.LevelController;
|
||||
import de.oszimt.ls.aliendefence.model.Level;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
public class LevelChooserOld extends JPanel {
|
||||
|
||||
private LevelController lvlControl;
|
||||
private LeveldesignWindow leveldesignWindow;
|
||||
private JTable tblLevels;
|
||||
private DefaultTableModel jTableData;
|
||||
|
||||
/**
|
||||
* Create the panel.
|
||||
*
|
||||
* @param leveldesignWindow
|
||||
*/
|
||||
public LevelChooserOld(LevelController lvlControl, LeveldesignWindow leveldesignWindow) {
|
||||
this.lvlControl = lvlControl;
|
||||
this.leveldesignWindow = leveldesignWindow;
|
||||
|
||||
setLayout(new BorderLayout());
|
||||
|
||||
JPanel pnlButtons = new JPanel();
|
||||
add(pnlButtons, BorderLayout.SOUTH);
|
||||
|
||||
JButton btnNewLevel = new JButton("Neues Level");
|
||||
btnNewLevel.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent arg0) {
|
||||
btnNewLevel_Clicked();
|
||||
}
|
||||
});
|
||||
pnlButtons.add(btnNewLevel);
|
||||
|
||||
JButton btnUpdateLevel = new JButton("ausgew\u00E4hltes Level bearbeiten");
|
||||
btnUpdateLevel.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
btnUpdateLevel_Clicked();
|
||||
}
|
||||
});
|
||||
pnlButtons.add(btnUpdateLevel);
|
||||
|
||||
JButton btnDeleteLevel = new JButton("Level l\u00F6schen");
|
||||
btnDeleteLevel.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
btnDeleteLevel_Clicked();
|
||||
}
|
||||
});
|
||||
pnlButtons.add(btnDeleteLevel);
|
||||
|
||||
JLabel lblLevelauswahl = new JLabel("Levelauswahl");
|
||||
lblLevelauswahl.setFont(new Font("Arial", Font.BOLD, 18));
|
||||
lblLevelauswahl.setHorizontalAlignment(SwingConstants.CENTER);
|
||||
add(lblLevelauswahl, BorderLayout.NORTH);
|
||||
|
||||
JScrollPane spnLevels = new JScrollPane();
|
||||
add(spnLevels, BorderLayout.CENTER);
|
||||
|
||||
tblLevels = new JTable();
|
||||
tblLevels.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
|
||||
spnLevels.setViewportView(tblLevels);
|
||||
|
||||
this.updateTableData();
|
||||
}
|
||||
|
||||
private String[][] getLevelsAsTableModel() {
|
||||
List<Level> levels = this.lvlControl.readAllLevels();
|
||||
String[][] result = new String[levels.size()][];
|
||||
int i = 0;
|
||||
for (Level l : levels) {
|
||||
result[i++] = l.getData();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public void updateTableData() {
|
||||
this.jTableData = new DefaultTableModel(this.getLevelsAsTableModel(), Level.getLevelDescriptions());
|
||||
this.tblLevels.setModel(jTableData);
|
||||
}
|
||||
|
||||
public void btnNewLevel_Clicked() {
|
||||
this.leveldesignWindow.startLevelEditor();
|
||||
}
|
||||
|
||||
public void btnUpdateLevel_Clicked() {
|
||||
int level_id = Integer
|
||||
.parseInt((String) this.tblLevels.getModel().getValueAt(this.tblLevels.getSelectedRow(), 0));
|
||||
this.leveldesignWindow.startLevelEditor(level_id);
|
||||
}
|
||||
|
||||
public void btnDeleteLevel_Clicked() {
|
||||
int level_id = Integer
|
||||
.parseInt((String) this.tblLevels.getModel().getValueAt(this.tblLevels.getSelectedRow(), 0));
|
||||
this.lvlControl.deleteLevel(level_id);
|
||||
this.updateTableData();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,386 @@
|
||||
package de.oszimt.ls.aliendefence.view.menue;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Font;
|
||||
import java.awt.GridLayout;
|
||||
import java.awt.SystemColor;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JScrollPane;
|
||||
import javax.swing.JTable;
|
||||
import javax.swing.JTextField;
|
||||
import javax.swing.ListSelectionModel;
|
||||
import javax.swing.SwingConstants;
|
||||
import javax.swing.border.EmptyBorder;
|
||||
import javax.swing.event.ListSelectionEvent;
|
||||
import javax.swing.event.ListSelectionListener;
|
||||
import javax.swing.table.DefaultTableModel;
|
||||
|
||||
import de.oszimt.ls.aliendefence.controller.LevelController;
|
||||
import de.oszimt.ls.aliendefence.controller.TargetController;
|
||||
import de.oszimt.ls.aliendefence.model.Level;
|
||||
import de.oszimt.ls.aliendefence.model.Target;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
public class LevelEditor extends JPanel {
|
||||
|
||||
private LevelController lvlControl;
|
||||
private TargetController targetControl;
|
||||
private LeveldesignWindow leveldesignWindow;
|
||||
private Level lvl;
|
||||
private JTable tblTargets;
|
||||
private DefaultTableModel jTableData;
|
||||
private JTextField tfdLevelname;
|
||||
private JTextField tfdLevel_id;
|
||||
private JTextField tfdLevelDuration;
|
||||
private JTextField tfdTarget_id;
|
||||
private JTextField tfdX;
|
||||
private JTextField tfdY;
|
||||
private JTextField tfdWidth;
|
||||
private JTextField tfdHeight;
|
||||
private JTextField tfdStarttime;
|
||||
private JTextField tfdTargetDuration;
|
||||
private JTextField tfdLevelBackground;
|
||||
private JTextField tfdTargetImage;
|
||||
|
||||
/**
|
||||
* Create the frame.
|
||||
*/
|
||||
public LevelEditor(LeveldesignWindow leveldesignWindow, LevelController lvlControl, TargetController targetControl,
|
||||
Level lvl) {
|
||||
this.leveldesignWindow = leveldesignWindow;
|
||||
this.lvlControl = lvlControl;
|
||||
this.targetControl = targetControl;
|
||||
this.lvl = lvl;
|
||||
|
||||
setBorder(new EmptyBorder(5, 5, 5, 5));
|
||||
setLayout(new BorderLayout());
|
||||
|
||||
JLabel lblLeveleditor = new JLabel("Leveleditor");
|
||||
lblLeveleditor.setHorizontalAlignment(SwingConstants.CENTER);
|
||||
lblLeveleditor.setFont(new Font("Arial", Font.BOLD, 18));
|
||||
add(lblLeveleditor, BorderLayout.NORTH);
|
||||
|
||||
JPanel pnlMain = new JPanel();
|
||||
add(pnlMain, BorderLayout.CENTER);
|
||||
pnlMain.setLayout(new GridLayout(0, 2, 20, 0));
|
||||
|
||||
tblTargets = new JTable();
|
||||
tblTargets.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
|
||||
tblTargets.getSelectionModel().addListSelectionListener(new RowListener());
|
||||
jTableData = new DefaultTableModel(this.lvl.getTargetsAsTableModel(), Target.getTableDescriptions());
|
||||
tblTargets.setModel(jTableData);
|
||||
|
||||
JScrollPane spnTargets = new JScrollPane(tblTargets);
|
||||
pnlMain.add(spnTargets);
|
||||
|
||||
JPanel pnlInputs = new JPanel();
|
||||
pnlMain.add(pnlInputs);
|
||||
pnlInputs.setLayout(new BorderLayout(0, 0));
|
||||
|
||||
JPanel pnlInputMask = new JPanel();
|
||||
pnlInputMask.setBackground(SystemColor.activeCaption);
|
||||
pnlInputMask.setBorder(new EmptyBorder(10, 5, 10, 5));
|
||||
pnlInputs.add(pnlInputMask, BorderLayout.NORTH);
|
||||
pnlInputMask.setLayout(new GridLayout(0, 2, 0, 10));
|
||||
|
||||
|
||||
JLabel lblLevelUeberschrift = new JLabel("Level");
|
||||
lblLevelUeberschrift.setFont(new Font("Arial", Font.BOLD, 18));
|
||||
pnlInputMask.add(lblLevelUeberschrift);
|
||||
|
||||
JLabel lblLevelUeberschrift2 = new JLabel("");
|
||||
pnlInputMask.add(lblLevelUeberschrift2);
|
||||
|
||||
JLabel lblLevelid = new JLabel("Level ID");
|
||||
pnlInputMask.add(lblLevelid);
|
||||
|
||||
tfdLevel_id = new JTextField(this.lvl.getLevel_id() + "");
|
||||
tfdLevel_id.setEditable(false);
|
||||
tfdLevel_id.setHorizontalAlignment(SwingConstants.RIGHT);
|
||||
pnlInputMask.add(tfdLevel_id);
|
||||
tfdLevel_id.setColumns(10);
|
||||
|
||||
JLabel lblLevelname = new JLabel("Name des Level");
|
||||
pnlInputMask.add(lblLevelname);
|
||||
|
||||
tfdLevelname = new JTextField(this.lvl.getName());
|
||||
tfdLevelname.setHorizontalAlignment(SwingConstants.RIGHT);
|
||||
pnlInputMask.add(tfdLevelname);
|
||||
tfdLevelname.setColumns(10);
|
||||
|
||||
|
||||
JLabel lblLevelDuration = new JLabel("Spieldauer (Millisekunden)");
|
||||
pnlInputMask.add(lblLevelDuration);
|
||||
|
||||
tfdLevelDuration = new JTextField(this.lvl.getDuration() + "");
|
||||
tfdLevelDuration.setHorizontalAlignment(SwingConstants.RIGHT);
|
||||
pnlInputMask.add(tfdLevelDuration);
|
||||
tfdLevelDuration.setColumns(10);
|
||||
|
||||
JButton btnBack = new JButton("zurück zur Levelauswahl");
|
||||
btnBack.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent arg0) {
|
||||
btnBack_Clicked(arg0);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
JLabel lblbackground = new JLabel("Hintergrundsbild");
|
||||
pnlInputMask.add(lblbackground);
|
||||
|
||||
tfdLevelBackground = new JTextField();
|
||||
tfdLevelBackground.setHorizontalAlignment(SwingConstants.RIGHT);
|
||||
pnlInputMask.add(tfdLevelBackground);
|
||||
tfdLevelBackground.setColumns(10);
|
||||
pnlInputMask.add(btnBack);
|
||||
|
||||
|
||||
JButton btnSaveLevelChanges = new JButton("\u00C4nderungen am Level speichern");
|
||||
btnSaveLevelChanges.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent arg0) {
|
||||
btnSaveLevelChanges_Clicked(arg0);
|
||||
}
|
||||
});
|
||||
pnlInputMask.add(btnSaveLevelChanges);
|
||||
|
||||
|
||||
JPanel pnlInputMaskTargets = new JPanel();
|
||||
pnlInputMaskTargets.setBorder(new EmptyBorder(10, 5, 10, 5));
|
||||
pnlInputMaskTargets.setBackground(SystemColor.inactiveCaption);
|
||||
pnlInputs.add(pnlInputMaskTargets, BorderLayout.CENTER);
|
||||
pnlInputMaskTargets.setLayout(new GridLayout(0, 2, 0, 10));
|
||||
|
||||
|
||||
JLabel lblUeberschrift = new JLabel("Targets");
|
||||
lblUeberschrift.setFont(new Font("Arial", Font.BOLD, 18));
|
||||
pnlInputMaskTargets.add(lblUeberschrift);
|
||||
|
||||
JLabel lbllblUeberschrift2 = new JLabel("");
|
||||
pnlInputMaskTargets.add(lbllblUeberschrift2);
|
||||
|
||||
|
||||
JLabel lblTargetid = new JLabel("Target ID");
|
||||
pnlInputMaskTargets.add(lblTargetid);
|
||||
|
||||
tfdTarget_id = new JTextField();
|
||||
pnlInputMaskTargets.add(tfdTarget_id);
|
||||
tfdTarget_id.setColumns(10);
|
||||
|
||||
tfdTarget_id.setEditable(false);
|
||||
|
||||
|
||||
JLabel lblZiel = new JLabel("Ziel:");
|
||||
pnlInputMaskTargets.add(lblZiel);
|
||||
|
||||
JLabel lblZiel2 = new JLabel("");
|
||||
pnlInputMaskTargets.add(lblZiel2);
|
||||
|
||||
|
||||
JLabel lblTargetpicture = new JLabel("Bilddatei des Ziels");
|
||||
lblTargetpicture.setHorizontalAlignment(SwingConstants.LEFT);
|
||||
pnlInputMaskTargets.add(lblTargetpicture);
|
||||
|
||||
tfdTargetImage = new JTextField();
|
||||
tfdTargetImage.setHorizontalAlignment(SwingConstants.LEFT);
|
||||
pnlInputMaskTargets.add(tfdTargetImage);
|
||||
tfdTargetImage.setColumns(10);
|
||||
|
||||
|
||||
JLabel lblBreite = new JLabel("Breite des Ziels");
|
||||
pnlInputMaskTargets.add(lblBreite);
|
||||
|
||||
tfdWidth = new JTextField();
|
||||
pnlInputMaskTargets.add(tfdWidth);
|
||||
tfdWidth.setColumns(10);
|
||||
|
||||
|
||||
JLabel lblHhe = new JLabel("Höhe des Ziels");
|
||||
pnlInputMaskTargets.add(lblHhe);
|
||||
|
||||
tfdHeight = new JTextField();
|
||||
pnlInputMaskTargets.add(tfdHeight);
|
||||
tfdHeight.setColumns(10);
|
||||
|
||||
|
||||
JLabel lblX = new JLabel("X Position des Ziels (max. 1280 - Breite) ");
|
||||
pnlInputMaskTargets.add(lblX);
|
||||
|
||||
tfdX = new JTextField();
|
||||
pnlInputMaskTargets.add(tfdX);
|
||||
tfdX.setColumns(10);
|
||||
|
||||
|
||||
JLabel lblY = new JLabel("Y Position des Ziels (max. 960 - Höhe)");
|
||||
pnlInputMaskTargets.add(lblY);
|
||||
|
||||
tfdY = new JTextField();
|
||||
pnlInputMaskTargets.add(tfdY);
|
||||
tfdY.setColumns(10);
|
||||
|
||||
|
||||
JLabel lblZeiten = new JLabel("Zeiten: ");
|
||||
pnlInputMaskTargets.add(lblZeiten);
|
||||
|
||||
JLabel lblZeiten2 = new JLabel(" ");
|
||||
pnlInputMaskTargets.add(lblZeiten2);
|
||||
|
||||
|
||||
JLabel lblStartzeit = new JLabel("Startzeit in nach Spielstart (Millisekunden)");
|
||||
pnlInputMaskTargets.add(lblStartzeit);
|
||||
|
||||
tfdStarttime = new JTextField();
|
||||
pnlInputMaskTargets.add(tfdStarttime);
|
||||
tfdStarttime.setColumns(10);
|
||||
|
||||
|
||||
JLabel lblAnzeigedauer = new JLabel("Anzeigedauer (Millisekunden)");
|
||||
pnlInputMaskTargets.add(lblAnzeigedauer);
|
||||
|
||||
tfdTargetDuration = new JTextField();
|
||||
pnlInputMaskTargets.add(tfdTargetDuration);
|
||||
tfdTargetDuration.setColumns(10);
|
||||
|
||||
|
||||
JPanel panel_2 = new JPanel();
|
||||
pnlInputs.add(panel_2, BorderLayout.SOUTH);
|
||||
|
||||
JButton btnNeuesZiel = new JButton("Neues Ziel");
|
||||
btnNeuesZiel.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent arg0) {
|
||||
btnErstellen_Clicked(arg0);
|
||||
}
|
||||
});
|
||||
panel_2.add(btnNeuesZiel);
|
||||
|
||||
JButton btnZielndern = new JButton("Ziel \u00E4ndern");
|
||||
btnZielndern.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent arg0) {
|
||||
btnAendern_Clicked(arg0);
|
||||
}
|
||||
});
|
||||
panel_2.add(btnZielndern);
|
||||
|
||||
JButton btnDeleteTarget = new JButton("Ziel l\u00F6schen");
|
||||
btnDeleteTarget.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent arg0) {
|
||||
btnLoeschen_Clicked(arg0);
|
||||
}
|
||||
});
|
||||
panel_2.add(btnDeleteTarget);
|
||||
|
||||
}
|
||||
|
||||
public Level getLvl() {
|
||||
return lvl;
|
||||
}
|
||||
|
||||
public void setLvl(Level lvl) {
|
||||
this.lvl = lvl;
|
||||
updateTableData();
|
||||
this.tfdLevel_id.setText("" + lvl.getLevel_id());
|
||||
this.tfdLevelname.setText(lvl.getName());
|
||||
this.tfdLevelDuration.setText("" + lvl.getDuration());
|
||||
this.tfdLevelBackground.setText(lvl.getBackgroundImage());
|
||||
}
|
||||
|
||||
public void updateTableData() {
|
||||
jTableData = new DefaultTableModel(this.lvl.getTargetsAsTableModel(), Target.getTableDescriptions());
|
||||
tblTargets.setModel(jTableData);
|
||||
}
|
||||
|
||||
public void targetAnzeigen_JTable(int row) {
|
||||
this.tfdTarget_id.setText((String) tblTargets.getValueAt(row, 0));
|
||||
this.tfdX.setText((String) tblTargets.getValueAt(row, 1));
|
||||
this.tfdY.setText((String) tblTargets.getValueAt(row, 2));
|
||||
this.tfdWidth.setText((String) tblTargets.getValueAt(row, 3));
|
||||
this.tfdHeight.setText((String) tblTargets.getValueAt(row, 4));
|
||||
this.tfdTargetImage.setText((String) tblTargets.getValueAt(row, 5));
|
||||
this.tfdStarttime.setText((String) tblTargets.getValueAt(row, 6));
|
||||
this.tfdTargetDuration.setText((String) tblTargets.getValueAt(row, 7));
|
||||
}
|
||||
|
||||
public void targetAnzeigen_JTable(Target target) {
|
||||
this.tfdTarget_id.setText(target.getTarget_id() + "");
|
||||
this.tfdX.setText(target.getHitbox().getX() + "");
|
||||
this.tfdY.setText(target.getHitbox().getY() + "");
|
||||
this.tfdWidth.setText(target.getHitbox().getWidth() + "");
|
||||
this.tfdHeight.setText(target.getHitbox().getHeight() + "");
|
||||
this.tfdTargetImage.setText(target.getImageAddress());
|
||||
this.tfdStarttime.setText(target.getTime() + "");
|
||||
this.tfdTargetDuration.setText(target.getDuration() + "");
|
||||
}
|
||||
|
||||
public Target targetAuslesen() {
|
||||
Target currentTarget = null;
|
||||
for (Target t : this.lvl.getTargets()) {
|
||||
if (t.getTarget_id() == Integer.parseInt(tfdTarget_id.getText())) {
|
||||
currentTarget = t;
|
||||
}
|
||||
}
|
||||
if (currentTarget != null) {
|
||||
|
||||
currentTarget.getHitbox().setX(Integer.parseInt(tfdX.getText()));
|
||||
currentTarget.getHitbox().setY(Integer.parseInt(tfdY.getText()));
|
||||
currentTarget.getHitbox().setWidth(Integer.parseInt(tfdWidth.getText()));
|
||||
currentTarget.getHitbox().setHeight(Integer.parseInt(tfdHeight.getText()));
|
||||
|
||||
currentTarget.setDuration(Long.parseLong(tfdTargetDuration.getText()));
|
||||
currentTarget.setTime(Long.parseLong(tfdStarttime.getText()));
|
||||
currentTarget.setImageAddress(tfdTargetImage.getText());
|
||||
}
|
||||
return currentTarget;
|
||||
}
|
||||
|
||||
public void btnErstellen_Clicked(ActionEvent evt) {
|
||||
Target target = this.targetControl.createTarget(this.lvl);
|
||||
if (target != null)
|
||||
targetAnzeigen_JTable(target);
|
||||
updateTableData();
|
||||
}
|
||||
|
||||
public void btnLoeschen_Clicked(ActionEvent evt) {
|
||||
int target_id = Integer.parseInt(this.tfdTarget_id.getText());
|
||||
this.targetControl.deleteTarget(this.lvl, target_id);
|
||||
updateTableData();
|
||||
// TODO clear Textfield-Data
|
||||
}
|
||||
|
||||
public void btnAendern_Clicked(ActionEvent evt) {
|
||||
this.targetControl.updateTarget(this.lvl, this.targetAuslesen());
|
||||
updateTableData();
|
||||
}
|
||||
|
||||
/**
|
||||
* Zurück zur Levelauswahl
|
||||
*
|
||||
* @param evt
|
||||
*/
|
||||
public void btnBack_Clicked(ActionEvent evt) {
|
||||
this.leveldesignWindow.showLevelChooser();
|
||||
}
|
||||
|
||||
public void btnSaveLevelChanges_Clicked(ActionEvent evt) {
|
||||
this.lvl.setName(this.tfdLevelname.getText());
|
||||
this.lvl.setBackgroundImage(this.tfdLevelBackground.getText());
|
||||
this.lvl.setDuration(Integer.parseInt(this.tfdLevelDuration.getText()));
|
||||
|
||||
this.lvlControl.updateLevel(this.lvl);
|
||||
}
|
||||
|
||||
private class RowListener implements ListSelectionListener {
|
||||
public void valueChanged(ListSelectionEvent event) {
|
||||
if (event.getValueIsAdjusting()) {
|
||||
return;
|
||||
}
|
||||
if (tblTargets.getSelectedRow() < 0)
|
||||
tblTargets.clearSelection();
|
||||
else
|
||||
targetAnzeigen_JTable(tblTargets.getSelectedRow());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
package de.oszimt.ls.aliendefence.view.menue;
|
||||
|
||||
import java.awt.CardLayout;
|
||||
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.border.EmptyBorder;
|
||||
|
||||
import de.oszimt.ls.aliendefence.controller.LevelController;
|
||||
import de.oszimt.ls.aliendefence.controller.TargetController;
|
||||
import de.oszimt.ls.aliendefence.model.Level;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
public class LeveldesignWindow extends JFrame {
|
||||
|
||||
private LevelController lvlControl;
|
||||
private JPanel contentPane;
|
||||
private LevelChoice cardChooseLevel;
|
||||
private LevelEditor cardLevelEditor;
|
||||
|
||||
private CardLayout cards;
|
||||
|
||||
/**
|
||||
* Create the frame.
|
||||
*/
|
||||
public LeveldesignWindow(LevelController lvlControl, TargetController targetControl) {
|
||||
this.lvlControl = lvlControl;
|
||||
|
||||
setTitle("Leveldesigner");
|
||||
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
|
||||
setBounds(100, 100, 1200, 800);
|
||||
contentPane = new JPanel();
|
||||
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
|
||||
setContentPane(contentPane);
|
||||
this.cards = new CardLayout();
|
||||
contentPane.setLayout(cards);
|
||||
|
||||
this.cardChooseLevel = new LevelChoice(lvlControl, this);
|
||||
contentPane.add(cardChooseLevel.getPanel(), "levelChooser");
|
||||
|
||||
this.cardLevelEditor = new LevelEditor(this, lvlControl, targetControl, Level.getDefaultLevel());
|
||||
contentPane.add(cardLevelEditor, "levelEditor");
|
||||
|
||||
this.showLevelChooser();
|
||||
this.setLocationRelativeTo(null);
|
||||
this.setVisible(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* display leveleditor with a new level
|
||||
*/
|
||||
public void startLevelEditor() {
|
||||
this.cardLevelEditor.setLvl(this.lvlControl.createLevel());
|
||||
this.cards.show(contentPane, "levelEditor");
|
||||
}
|
||||
|
||||
/**
|
||||
* disply leveleditor with a new level
|
||||
*
|
||||
* @param level_id
|
||||
*/
|
||||
public void startLevelEditor(int level_id) {
|
||||
this.cardLevelEditor.setLvl(this.lvlControl.readLevel(level_id));
|
||||
this.cards.show(contentPane, "levelEditor");
|
||||
}
|
||||
|
||||
/**
|
||||
* display a jTable with all Levels
|
||||
*/
|
||||
public void showLevelChooser() {
|
||||
this.cards.show(contentPane, "levelChooser");
|
||||
this.cardChooseLevel.updateTableData();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,140 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="de.oszimt.ls.aliendefence.view.menue.MainMenu">
|
||||
<grid id="27dc6" binding="main" layout-manager="GridLayoutManager" row-count="13" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
||||
<margin top="0" left="0" bottom="0" right="0"/>
|
||||
<constraints>
|
||||
<xy x="20" y="20" width="326" height="715"/>
|
||||
</constraints>
|
||||
<properties>
|
||||
<background color="-16777216"/>
|
||||
<foreground color="-1"/>
|
||||
</properties>
|
||||
<border type="empty">
|
||||
<size top="5" left="5" bottom="5" right="5"/>
|
||||
</border>
|
||||
<children>
|
||||
<component id="c5b1d" class="javax.swing.JLabel">
|
||||
<constraints>
|
||||
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="1" fill="0" indent="0" use-parent-layout="false">
|
||||
<preferred-size width="177" height="9"/>
|
||||
</grid>
|
||||
</constraints>
|
||||
<properties>
|
||||
<font size="26" style="1"/>
|
||||
<foreground color="-16711936"/>
|
||||
<text value="Alien Defence"/>
|
||||
</properties>
|
||||
</component>
|
||||
<component id="8961e" class="javax.swing.JLabel">
|
||||
<constraints>
|
||||
<grid row="1" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="0" fill="0" indent="1" use-parent-layout="false">
|
||||
<preferred-size width="200" height="103"/>
|
||||
</grid>
|
||||
</constraints>
|
||||
<properties>
|
||||
<enabled value="true"/>
|
||||
<foreground color="-3552823"/>
|
||||
<icon value="pictures/logo200.png"/>
|
||||
<text value=""/>
|
||||
</properties>
|
||||
</component>
|
||||
<component id="965b" class="javax.swing.JLabel">
|
||||
<constraints>
|
||||
<grid row="2" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
<properties>
|
||||
<font size="14" style="1"/>
|
||||
<foreground color="-256"/>
|
||||
<text value="Login:"/>
|
||||
</properties>
|
||||
</component>
|
||||
<component id="14947" class="javax.swing.JLabel">
|
||||
<constraints>
|
||||
<grid row="4" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
<properties>
|
||||
<font size="14" style="1"/>
|
||||
<foreground color="-256"/>
|
||||
<text value="Passwort:"/>
|
||||
</properties>
|
||||
</component>
|
||||
<component id="b84a7" class="javax.swing.JPasswordField" binding="passwordTextField">
|
||||
<constraints>
|
||||
<grid row="5" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="8" fill="1" indent="0" use-parent-layout="false">
|
||||
<preferred-size width="150" height="-1"/>
|
||||
</grid>
|
||||
</constraints>
|
||||
<properties/>
|
||||
</component>
|
||||
<component id="4aca1" class="javax.swing.JLabel">
|
||||
<constraints>
|
||||
<grid row="6" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
<properties>
|
||||
<font size="14" style="1"/>
|
||||
<foreground color="-256"/>
|
||||
<text value="Level:"/>
|
||||
</properties>
|
||||
</component>
|
||||
<component id="a16d0" class="javax.swing.JComboBox" binding="level">
|
||||
<constraints>
|
||||
<grid row="7" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="2" anchor="8" fill="1" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
<properties/>
|
||||
</component>
|
||||
<component id="39eaf" class="javax.swing.JButton" binding="playButton">
|
||||
<constraints>
|
||||
<grid row="8" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
<properties>
|
||||
<actionCommand value=""/>
|
||||
<text value="Spielen"/>
|
||||
</properties>
|
||||
</component>
|
||||
<component id="6cda2" class="javax.swing.JButton" binding="testButton">
|
||||
<constraints>
|
||||
<grid row="9" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
<properties>
|
||||
<text value="Testen"/>
|
||||
</properties>
|
||||
</component>
|
||||
<component id="9d215" class="javax.swing.JTextField" binding="loginTextField">
|
||||
<constraints>
|
||||
<grid row="3" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="8" fill="1" indent="0" use-parent-layout="false">
|
||||
<preferred-size width="150" height="-1"/>
|
||||
</grid>
|
||||
</constraints>
|
||||
<properties/>
|
||||
</component>
|
||||
<component id="e66c9" class="javax.swing.JButton" binding="highscoreButton" default-binding="true">
|
||||
<constraints>
|
||||
<grid row="10" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
<properties>
|
||||
<text value="Highscore"/>
|
||||
</properties>
|
||||
</component>
|
||||
<component id="7ae73" class="javax.swing.JButton" binding="levelEditorButton" default-binding="true">
|
||||
<constraints>
|
||||
<grid row="11" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
<properties>
|
||||
<background color="-256"/>
|
||||
<enabled value="true"/>
|
||||
<text value="LevelEditor"/>
|
||||
</properties>
|
||||
</component>
|
||||
<component id="ef1af" class="javax.swing.JButton" binding="exitButton">
|
||||
<constraints>
|
||||
<grid row="12" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
<properties>
|
||||
<background color="-3552823"/>
|
||||
<enabled value="true"/>
|
||||
<text value="Beenden"/>
|
||||
</properties>
|
||||
</component>
|
||||
</children>
|
||||
</grid>
|
||||
</form>
|
||||
@@ -0,0 +1,124 @@
|
||||
package de.oszimt.ls.aliendefence.view.menue;
|
||||
|
||||
import de.oszimt.ls.aliendefence.controller.AlienDefenceController;
|
||||
import de.oszimt.ls.aliendefence.controller.GameController;
|
||||
import de.oszimt.ls.aliendefence.model.Level;
|
||||
import de.oszimt.ls.aliendefence.toDo.User;
|
||||
import de.oszimt.ls.aliendefence.view.game.GameGUI;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.util.List;
|
||||
|
||||
public class MainMenu {
|
||||
|
||||
private JPanel main;
|
||||
private JTextField loginTextField;
|
||||
private JComboBox level;
|
||||
private JButton playButton;
|
||||
private JButton testButton;
|
||||
private JButton highscoreButton;
|
||||
private JButton levelEditorButton;
|
||||
private JButton exitButton;
|
||||
private JPasswordField passwordTextField;
|
||||
|
||||
public MainMenu(AlienDefenceController alienDefenceController) {
|
||||
|
||||
//fill level chooser
|
||||
// Levelliste für die ComboBox abrufen
|
||||
List<Level> arrLevel = alienDefenceController.getLevelController().readAllLevels();
|
||||
String[] arrLevelNames = getLevelNames(arrLevel);
|
||||
level.setModel(new DefaultComboBoxModel<String>(arrLevelNames));
|
||||
|
||||
// Button Spielen - ActionListener
|
||||
playButton.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
// User aus Datenbank holen
|
||||
User user = alienDefenceController.getAlienDefenceModel().getUserPersistance().readUser(loginTextField.getText());
|
||||
|
||||
// Spielstarten, wenn Nutzer existiert und Passwort übereinstimmt
|
||||
if (user != null && user.getPassword().equals(new String(passwordTextField.getPassword()))) {
|
||||
|
||||
Thread t = new Thread("GameThread") {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
GameController gameController = alienDefenceController.startGame(arrLevel.get(level.getSelectedIndex()), user);
|
||||
new GameGUI(gameController).start();
|
||||
}
|
||||
};
|
||||
t.start();
|
||||
} else {
|
||||
// Fehlermeldung - Zugangsdaten fehlerhaft
|
||||
JOptionPane.showMessageDialog(null, "Zugangsdaten nicht korrekt", "Fehler",
|
||||
JOptionPane.ERROR_MESSAGE);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Button Testen - ActionListener
|
||||
testButton.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
// Erstellt Modell von aktuellen Nutzer
|
||||
User user = new User(1, "test", "pass");
|
||||
|
||||
Thread t = new Thread("GameThread") {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
GameController gameController = alienDefenceController.startGame(arrLevel.get(level.getSelectedIndex()), user);
|
||||
new GameGUI(gameController).start();
|
||||
}
|
||||
};
|
||||
t.start();
|
||||
}
|
||||
});
|
||||
|
||||
// Button Highscore
|
||||
highscoreButton.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
new Highscore(alienDefenceController.getAttemptController(), arrLevel.get(level.getSelectedIndex()));
|
||||
}
|
||||
});
|
||||
|
||||
// Button Leveleditor
|
||||
levelEditorButton.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
new LeveldesignWindow(alienDefenceController.getLevelController(), alienDefenceController.getTargetController());
|
||||
}
|
||||
});
|
||||
|
||||
// Button Beenden
|
||||
exitButton.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
System.exit(0);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
private String[] getLevelNames(List<Level> arrLevel) {
|
||||
String[] arrLevelNames = new String[arrLevel.size()];
|
||||
|
||||
for (int i = 0; i < arrLevel.size(); i++) {
|
||||
arrLevelNames[i] = arrLevel.get(i).getName(); // Array aus Arraylist erstellt
|
||||
}
|
||||
|
||||
return arrLevelNames;
|
||||
}
|
||||
|
||||
public static void show(AlienDefenceController alienDefenceController) {
|
||||
JFrame frame = new JFrame("AlienDefence");
|
||||
frame.setContentPane(new MainMenu(alienDefenceController).main);
|
||||
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
frame.pack();
|
||||
frame.setLocationRelativeTo(null);
|
||||
frame.setVisible(true);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user