Gameloop zerpflueckt und Panelbuilder geschrieben

Ausserdem eine klasse zum sammeln von instanziierten Objekten gebaut.
Macht alles dynamischer!
This commit is contained in:
toksikk
2014-11-25 14:31:54 +01:00
parent 00fe3fa844
commit 447e1355e0
5 changed files with 147 additions and 135 deletions
-5
View File
@@ -4,11 +4,6 @@ package de.heatup.cfg;
* Bitte hier eure Magicnumbers eintragen
*/
public class Config {
/*
* Attribute
* de.heatup.ui.GameLoop
*/
public static int currentTickNr = 0;
/*
* Attribute
* de.heatup.mapengine.*
@@ -1,5 +1,5 @@
package de.heatup.objects;
public class PowerUpHandler {
private static
}
+35 -129
View File
@@ -32,20 +32,17 @@ public class GameLoopD extends JFrame implements Runnable {
private Thread thread;
/**
* @deprecated
* BITTE DEN GETTER VERWENDEN!!!!11111ELF
*/
public static Player player01;
private static JPanel outerPanel;
private static JPanel statusPanel;
private static JPanel gamePanel;
private static JPanel actionPanel;
public static KeyBindings kb;
public static Player player01;
public static Opponent opponent01;
public static Opponent opponent02;
public static Opponent opponent03;
public static Opponent opponent04;
public static Opponent opponent05;
public static Opponent opponent06;
public GameLoopD(){
setTitle("HeatUP!");
setDefaultCloseOperation(EXIT_ON_CLOSE);
@@ -58,12 +55,12 @@ public class GameLoopD extends JFrame implements Runnable {
statusPanel = new JPanel();
statusPanel.setPreferredSize(new Dimension(800,80));
statusPanel.setFocusable(false);
statusPanel.setFocusable(true);
gamePanel = new JPanel();
gamePanel.setLayout(null);
gamePanel.setPreferredSize(new Dimension(800,600));
gamePanel.setFocusable(true);
gamePanel.setFocusable(false);
actionPanel = new JPanel();
actionPanel.setLayout(new GridLayout(1,1));
@@ -78,69 +75,18 @@ public class GameLoopD extends JFrame implements Runnable {
pack();
setVisible(true);
// StatusPanel bauen
StatusPanelAdder.setPanel(statusPanel);
StatusPanelAdder.createPanel();
// ActionPanel bauen
ActionControl.setPanel(actionPanel);
/*
* hier menue bauen
*/
PanelBuilder.setPanels(actionPanel, outerPanel, statusPanel, gamePanel);
PanelBuilder.startMenu();
/*
* entfernen wenn getter verwendet wird.
*/
player01 = PanelBuilder.player01;
player01 = new Player(); // !!! PLAYER IMMER ZUERST INSTANZIIEREN, DANACH OPPONENTS !!!
// Query.setPlayer(player01);
gamePanel.add(player01);
player01.setBounds(25,25,25, 25); // !!! MUSS DRIN BLEIBEN TROTZ NACHTRÄGLICHES SPAWN UMSETZEN !!!
// Gegner hinzufügen
opponent01 = new Opponent();
gamePanel.add(opponent01);
opponent01.setBounds(50,50,25,25);
opponent02 = new Opponent();
gamePanel.add(opponent02);
opponent02.setBounds(150,150,25,25);
opponent03 = new Opponent();
gamePanel.add(opponent03);
opponent03.setBounds(550,450,25,25);
opponent04 = new Opponent();
gamePanel.add(opponent04);
opponent04.setBounds(50,50,25,25);
opponent05 = new Opponent();
gamePanel.add(opponent05);
opponent05.setBounds(150,150,25,25);
opponent06 = new Opponent();
gamePanel.add(opponent06);
opponent06.setBounds(550,450,25,25);
kb = new KeyBindings(player01);
gamePanel.addKeyListener(kb);
MapEngine me = new MapEngine(1);
me.addAllToPanel(gamePanel);
Point spawnPoint = SpawnAssistant.getPathLocationOnGrid();
player01.spawnAt(spawnPoint);
Point spawnPoint2 = SpawnAssistant.getPathLocationOnGrid();
opponent01.spawnAt(spawnPoint2);
Point spawnPoint3 = SpawnAssistant.getPathLocationOnGrid();
opponent02.spawnAt(spawnPoint3);
Point spawnPoint4 = SpawnAssistant.getPathLocationOnGrid();
opponent03.spawnAt(spawnPoint4);
Point spawnPoint5 = SpawnAssistant.getPathLocationOnGrid();
opponent04.spawnAt(spawnPoint5);
Point spawnPoint6 = SpawnAssistant.getPathLocationOnGrid();
opponent05.spawnAt(spawnPoint6);
Point spawnPoint7 = SpawnAssistant.getPathLocationOnGrid();
opponent06.spawnAt(spawnPoint7);
actionPanel.setVisible(true);
outerPanel.setVisible(true);
statusPanel.setVisible(true);
@@ -148,15 +94,14 @@ public class GameLoopD extends JFrame implements Runnable {
}
public static void main(String[] args) {
// Logging ausgabe auf Console aktivieren bzw. deaktivieren.
Logger.enableLogging();
/*
* hier drin bauen wir unser ui zusammen.
*/
EventQueue.invokeLater(new Runnable() {
@Override
@@ -180,12 +125,6 @@ public class GameLoopD extends JFrame implements Runnable {
//GameInterface.getGamePanel().add(dynO1);
/*
* ende
*/
}
public static synchronized void pause() {
@@ -197,7 +136,7 @@ public class GameLoopD extends JFrame implements Runnable {
}
public static Player getPlayer() {
return player01;
return PanelBuilder.player01;
}
public synchronized void start() {
@@ -249,12 +188,12 @@ public class GameLoopD extends JFrame implements Runnable {
render();
frames++;
try {
thread.sleep(1); // entlastet die cpu massiv.
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// try {
// thread.sleep(1); // entlastet die cpu massiv.
// } catch (InterruptedException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
if (System.currentTimeMillis() - timer > 1000) {
timer += 1000;
@@ -268,12 +207,7 @@ public class GameLoopD extends JFrame implements Runnable {
}
// alles was geupdatet werden muss hier rein
private void tick() {
if (Config.currentTickNr >= 60) {
Config.currentTickNr = 0;
} else {
Config.currentTickNr++;
}
kb.checkKeyActivity();
PanelBuilder.kb.checkKeyActivity();
if (!pause) {
EventQueue.invokeLater(new Runnable() {
@Override public void run() {
@@ -290,41 +224,13 @@ public class GameLoopD extends JFrame implements Runnable {
HardwareResetTimers.tick();
}
});
EventQueue.invokeLater(new Runnable() {
@Override public void run() {
player01.tick();
}
});
EventQueue.invokeLater(new Runnable() {
@Override public void run() {
opponent01.tick();
}
});
EventQueue.invokeLater(new Runnable() {
@Override public void run() {
opponent02.tick();
}
});
EventQueue.invokeLater(new Runnable() {
@Override public void run() {
opponent03.tick();
}
});
EventQueue.invokeLater(new Runnable() {
@Override public void run() {
opponent04.tick();
}
});
EventQueue.invokeLater(new Runnable() {
@Override public void run() {
opponent05.tick();
}
});
EventQueue.invokeLater(new Runnable() {
@Override public void run() {
opponent06.tick();
}
});
for (final Player object : PanelBuilder.getInstancedObjects().getObjects()) {
EventQueue.invokeLater(new Runnable() {
@Override public void run() {
object.tick();
}
});
}
EventQueue.invokeLater(new Runnable() {
@Override public void run() {
CollisionHandler.tick();
@@ -0,0 +1,19 @@
package de.heatup.testing;
import java.util.ArrayList;
public class InstancedObjects {
private static ArrayList<Player> objects;
public InstancedObjects() {
objects = new ArrayList<Player>();
}
public ArrayList<Player> getObjects() {
return objects;
}
public void addObject(Player object) {
InstancedObjects.objects.add(object);
}
}
@@ -0,0 +1,92 @@
package de.heatup.testing;
import java.awt.Point;
import javax.swing.JPanel;
import de.heatup.mapengine.MapEngine;
import de.heatup.mapengine.SpawnAssistant;
import de.heatup.ui.KeyBindings;
import de.heatup.ui.StatusPanelAdder;
import de.heatup.ui.actionPanel.ActionControl;
public class PanelBuilder {
private static JPanel actionPanel;
private static JPanel outerPanel;
private static JPanel statusPanel;
private static JPanel gamePanel;
public static KeyBindings kb;
public static Player player01;
private static InstancedObjects instancedObjects;
public static InstancedObjects getInstancedObjects() {
return instancedObjects;
}
public static void tick() {
}
public static void setPanels(JPanel actionPanel, JPanel outerPanel, JPanel statusPanel, JPanel gamePanel) {
PanelBuilder.actionPanel = actionPanel;
PanelBuilder.outerPanel = outerPanel;
PanelBuilder.statusPanel = statusPanel;
PanelBuilder.gamePanel = gamePanel;
}
public static void startMenu() {
// StatusPanel bauen
StatusPanelAdder.setPanel(statusPanel);
StatusPanelAdder.createPanel();
// ActionPanel bauen
ActionControl.setPanel(actionPanel);
createGame(1); /* wird eigentlich vom menue aufgerufen */
}
private static void createGame(int map) {
instancedObjects = new InstancedObjects();
player01 = new Player(); // !!! PLAYER IMMER ZUERST INSTANZIIEREN, DANACH OPPONENTS !!!
gamePanel.add(player01);
player01.setBounds(25,25,25, 25); // !!! MUSS DRIN BLEIBEN TROTZ NACHTRÄGLICHES SPAWN UMSETZEN !!!
instancedObjects.getObjects().add(player01);
// Gegner hinzufügen
for (int i = 0; i<10000; i++) {
Opponent newOpponent = new Opponent();
gamePanel.add(newOpponent);
newOpponent.setBounds(50, 50, 25, 25);
instancedObjects.getObjects().add(newOpponent);
}
kb = new KeyBindings(player01);
statusPanel.addKeyListener(kb);
MapEngine me;
if (map > 0) {
me = new MapEngine(map);
} else {
me = new MapEngine();
}
me.addAllToPanel(gamePanel);
for (Player movingObject : instancedObjects.getObjects()) {
Point spawnPoint = SpawnAssistant.getPathLocationOnGrid();
movingObject.spawnAt(spawnPoint);
}
}
}