mirror of
https://github.com/jokerx3/HeatUp
synced 2026-07-27 10:19:46 +02:00
Neue Gameloop zum testen
MapEngine mit javadoc
This commit is contained in:
@@ -14,7 +14,14 @@ import javax.swing.JFileChooser;
|
|||||||
import de.heatup.cfg.Config;
|
import de.heatup.cfg.Config;
|
||||||
import de.heatup.logging.Logger;
|
import de.heatup.logging.Logger;
|
||||||
import de.heatup.objects.*;
|
import de.heatup.objects.*;
|
||||||
|
/**
|
||||||
|
* Diese Klasse soll als primäre Schnittstelle zu anderen Spielmodulen dienen.
|
||||||
|
* Sie generiert die Map als StaticObjects um diese dann auf ein Spielfeld zu malen.
|
||||||
|
* Außerdem erstellt sie eine MapGrid, welches zur Kollisionserkennung und Positionierung
|
||||||
|
* von Entitäten dient.
|
||||||
|
* @author daniel
|
||||||
|
*
|
||||||
|
*/
|
||||||
public class MapEngine {
|
public class MapEngine {
|
||||||
|
|
||||||
private static final int singleTileWidth = Config.singleTilePixels;
|
private static final int singleTileWidth = Config.singleTilePixels;
|
||||||
@@ -53,7 +60,11 @@ public class MapEngine {
|
|||||||
}
|
}
|
||||||
this.createTiles(input);
|
this.createTiles(input);
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Erstellt aus einem gegebenen Scanner, welche eine Datei einliest,
|
||||||
|
* eine Map, welche dann zu einem Spielfeld hinzugefügt werden kann.
|
||||||
|
* @param input Ein Scanner der auf eine Map-Datei zeigt.
|
||||||
|
*/
|
||||||
private void createTiles(Scanner input) {
|
private void createTiles(Scanner input) {
|
||||||
int lineCount = 0;
|
int lineCount = 0;
|
||||||
int x = 0;
|
int x = 0;
|
||||||
@@ -147,31 +158,50 @@ public class MapEngine {
|
|||||||
protected ArrayList<Point> getAllCoordinatesOfTileType(char c) {
|
protected ArrayList<Point> getAllCoordinatesOfTileType(char c) {
|
||||||
return getAllMapTiles().get(c);
|
return getAllMapTiles().get(c);
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
* obsolet bisher.
|
||||||
|
*/
|
||||||
protected Point getFirstTilesCoordinatesOfTileType(char c) {
|
protected Point getFirstTilesCoordinatesOfTileType(char c) {
|
||||||
return getAllMapTiles().get(c).get(0);
|
return getAllMapTiles().get(c).get(0);
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
* obsolet bisher.
|
||||||
|
*/
|
||||||
protected Point getLastTilesCoordinatesOfTileType(char c) {
|
protected Point getLastTilesCoordinatesOfTileType(char c) {
|
||||||
return getAllMapTiles().get(c).get(getAllMapTiles().get(c).size()-1);
|
return getAllMapTiles().get(c).get(getAllMapTiles().get(c).size()-1);
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @return Gibt alle MapObjekte als ArrayList<StaticObject> zurück.
|
||||||
|
*/
|
||||||
public ArrayList<StaticObject> getAllMapObjects() {
|
public ArrayList<StaticObject> getAllMapObjects() {
|
||||||
return MapObjectHandler.getAllMapObjects(this);
|
return MapObjectHandler.getAllMapObjects(this);
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @return Gibt alle HardwareObjekte auf einer Map als ArrayList<StaticObject> zurück.
|
||||||
|
*/
|
||||||
public ArrayList<StaticObject> getAllHardwareObjects() {
|
public ArrayList<StaticObject> getAllHardwareObjects() {
|
||||||
return MapObjectHandler.getAllHardwareObjects();
|
return MapObjectHandler.getAllHardwareObjects();
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @return Gibt alle WallObjekte auf einer Map als ArrayList<StaticObject> zurück.
|
||||||
|
*/
|
||||||
public ArrayList<StaticObject> getAllWallObjects() {
|
public ArrayList<StaticObject> getAllWallObjects() {
|
||||||
return MapObjectHandler.getAllWallObjects();
|
return MapObjectHandler.getAllWallObjects();
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @return Gibt alle WayObjekte auf einer Map als ArrayList<StaticObject> zurück.
|
||||||
|
*/
|
||||||
public ArrayList<StaticObject> getAllWayObjects() {
|
public ArrayList<StaticObject> getAllWayObjects() {
|
||||||
return MapObjectHandler.getAllWayObjects();
|
return MapObjectHandler.getAllWayObjects();
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @return Gibt alle HardwareTriggerObjekte auf einer Map als ArrayList<StaticObject> zurück.
|
||||||
|
*/
|
||||||
public ArrayList<StaticObject> getAllHardwareTriggerObjects() {
|
public ArrayList<StaticObject> getAllHardwareTriggerObjects() {
|
||||||
return MapObjectHandler.getAllHardwareTriggerObjects();
|
return MapObjectHandler.getAllHardwareTriggerObjects();
|
||||||
}
|
}
|
||||||
@@ -188,7 +218,9 @@ public class MapEngine {
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Schreibt eine mit Trigger konvertierte Map-Datei in die Konsole
|
||||||
|
*/
|
||||||
public void printMapGridWithTriggers() {
|
public void printMapGridWithTriggers() {
|
||||||
for (int i = 0; i < 24; i++) {
|
for (int i = 0; i < 24; i++) {
|
||||||
for (int j = 0; j < 32; j++) {
|
for (int j = 0; j < 32; j++) {
|
||||||
|
|||||||
@@ -0,0 +1,195 @@
|
|||||||
|
package de.heatup.testing;
|
||||||
|
|
||||||
|
import java.awt.BorderLayout;
|
||||||
|
import java.awt.Dimension;
|
||||||
|
import java.awt.GridLayout;
|
||||||
|
|
||||||
|
import javax.swing.JFrame;
|
||||||
|
import javax.swing.JPanel;
|
||||||
|
|
||||||
|
import de.heatup.mapengine.MapEngine;
|
||||||
|
import de.heatup.objects.DynamicObject;
|
||||||
|
import de.heatup.objects.StaticObject;
|
||||||
|
import de.heatup.objects.logic;
|
||||||
|
import de.heatup.ui.GameInterface;
|
||||||
|
import de.heatup.ui.KeyBindings;
|
||||||
|
|
||||||
|
public class GameLoopD extends JFrame implements Runnable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
|
||||||
|
private boolean running = false;
|
||||||
|
|
||||||
|
private Thread thread;
|
||||||
|
|
||||||
|
private static JPanel outerPanel;
|
||||||
|
private static JPanel statusPanel;
|
||||||
|
private static JPanel gamePanel;
|
||||||
|
private static JPanel actionPanel;
|
||||||
|
|
||||||
|
DynamicObject dynO3;
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* hier drin bauen wir unser ui zusammen.
|
||||||
|
*/
|
||||||
|
|
||||||
|
GameLoopD frame = new GameLoopD();
|
||||||
|
|
||||||
|
|
||||||
|
frame.setTitle("HeatUP!");
|
||||||
|
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
|
||||||
|
|
||||||
|
|
||||||
|
outerPanel = new JPanel();
|
||||||
|
outerPanel.setLayout(new BorderLayout());
|
||||||
|
outerPanel.setVisible(true);
|
||||||
|
|
||||||
|
statusPanel = new JPanel();
|
||||||
|
statusPanel.setLayout(new GridLayout(1,4));
|
||||||
|
statusPanel.setPreferredSize(new Dimension(800,80));
|
||||||
|
|
||||||
|
gamePanel = new JPanel();
|
||||||
|
gamePanel.setLayout(null);
|
||||||
|
gamePanel.setPreferredSize(new Dimension(800,600));
|
||||||
|
gamePanel.setVisible(true);
|
||||||
|
|
||||||
|
actionPanel = new JPanel();
|
||||||
|
actionPanel.setLayout(new GridLayout(1,1));
|
||||||
|
actionPanel.setPreferredSize(new Dimension(800,80));
|
||||||
|
|
||||||
|
|
||||||
|
outerPanel.add(statusPanel,BorderLayout.NORTH);
|
||||||
|
outerPanel.add(gamePanel,BorderLayout.CENTER);
|
||||||
|
outerPanel.add(actionPanel,BorderLayout.SOUTH);
|
||||||
|
|
||||||
|
frame.add(outerPanel);
|
||||||
|
frame.pack();
|
||||||
|
frame.setVisible(true);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* zeug aus dem alten gameloop
|
||||||
|
*/
|
||||||
|
DynamicObject dynO1 = new DynamicObject();
|
||||||
|
gamePanel.add(dynO1);
|
||||||
|
DynamicObject dynO2 = new DynamicObject();
|
||||||
|
gamePanel.add(dynO2);
|
||||||
|
DynamicObject dynO3 = new DynamicObject();
|
||||||
|
gamePanel.add(dynO3);
|
||||||
|
DynamicObject dynO4 = new DynamicObject();
|
||||||
|
gamePanel.add(dynO4);
|
||||||
|
|
||||||
|
Player player01 = new Player();
|
||||||
|
Query.setPlayer(player01);
|
||||||
|
gamePanel.add(player01);
|
||||||
|
player01.setBounds(25, 25, 200, 200);
|
||||||
|
|
||||||
|
|
||||||
|
// Keybindings as object so we can load different bindings depending on number of players.
|
||||||
|
// KeyBindings kb = new KeyBindings();
|
||||||
|
gamePanel.setFocusable(true);
|
||||||
|
// kb.setKeyBindings();
|
||||||
|
|
||||||
|
|
||||||
|
//dynO3.setRescale(1.5,3.5);
|
||||||
|
|
||||||
|
// Config.setGamePanelWidth(900);
|
||||||
|
MapEngine me = new MapEngine(1);
|
||||||
|
for (StaticObject currentStaticObject : me.getAllMapObjects()) {
|
||||||
|
gamePanel.add(currentStaticObject);
|
||||||
|
}
|
||||||
|
|
||||||
|
gamePanel.setVisible(true);
|
||||||
|
|
||||||
|
//GameInterface.getGamePanel().repaint();
|
||||||
|
//GameInterface.getGamePanel().setComponentZOrder(dynO1, 1);
|
||||||
|
//GameInterface.getGamePanel().add(dynO1);
|
||||||
|
//logic.startMovement(dynO1);
|
||||||
|
//logic.startMovement(dynO2);
|
||||||
|
|
||||||
|
logic.startMovement(dynO3);
|
||||||
|
|
||||||
|
//logic.startMovement(dynO4);
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ende
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
frame.repaint();
|
||||||
|
frame.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
private synchronized void start() {
|
||||||
|
if (running) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
running = true;
|
||||||
|
thread = new Thread(this);
|
||||||
|
thread.start();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private synchronized void stop() {
|
||||||
|
if (!running) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
running = false;
|
||||||
|
try {
|
||||||
|
thread.join();
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
System.exit(1);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void run() {
|
||||||
|
|
||||||
|
long lastTime = System.nanoTime();
|
||||||
|
final double fps = 60.0;
|
||||||
|
double ns = 1000000000 / fps;
|
||||||
|
double delta = 0;
|
||||||
|
int updates = 0;
|
||||||
|
int frames = 0;
|
||||||
|
long timer = System.currentTimeMillis();
|
||||||
|
|
||||||
|
while (running) {
|
||||||
|
|
||||||
|
long now = System.nanoTime();
|
||||||
|
delta += (lastTime - now) / ns;
|
||||||
|
lastTime = now;
|
||||||
|
if (delta >= 1) {
|
||||||
|
tick();
|
||||||
|
updates++;
|
||||||
|
delta--;
|
||||||
|
}
|
||||||
|
render();
|
||||||
|
frames++;
|
||||||
|
|
||||||
|
if (System.currentTimeMillis() - timer > 1000) {
|
||||||
|
timer += 1000;
|
||||||
|
System.out.println(updates +" Ticks, fps " + frames);
|
||||||
|
updates = 0;
|
||||||
|
frames = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
stop();
|
||||||
|
}
|
||||||
|
// alles was geupdatet werden muss hier rein
|
||||||
|
private void tick() {
|
||||||
|
|
||||||
|
}
|
||||||
|
// alles was animiert wird hier rein (paints)
|
||||||
|
private void render() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user