mirror of
https://github.com/jokerx3/HeatUp
synced 2026-07-27 10:19:46 +02:00
Merge branch 'master' of github.com:jokerx3/prp
This commit is contained in:
@@ -3,6 +3,7 @@ package de.heatup.audio;
|
|||||||
public class Main {
|
public class Main {
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
new WavePlayer("<filetpath>").start();
|
|
||||||
|
Sound.BOMB.play();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,58 @@
|
|||||||
|
package de.heatup.audio;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import javax.sound.sampled.AudioInputStream;
|
||||||
|
import javax.sound.sampled.AudioSystem;
|
||||||
|
import javax.sound.sampled.Clip;
|
||||||
|
import javax.sound.sampled.Line;
|
||||||
|
import javax.sound.sampled.LineUnavailableException;
|
||||||
|
import javax.sound.sampled.UnsupportedAudioFileException;
|
||||||
|
|
||||||
|
public enum Sound {
|
||||||
|
BOMB("src/de/heatup/resources/audio/" + "bomb.wav");
|
||||||
|
|
||||||
|
private Clip clip;
|
||||||
|
|
||||||
|
Sound(String soundFileName) {
|
||||||
|
|
||||||
|
File f = new File(soundFileName);
|
||||||
|
if(!f.exists()) {
|
||||||
|
System.err.println("File not found : " + f.getAbsolutePath());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
Line.Info linfo = new Line.Info(Clip.class);
|
||||||
|
Line line = AudioSystem.getLine(linfo);
|
||||||
|
|
||||||
|
clip = (Clip) line;
|
||||||
|
AudioInputStream inputStream = AudioSystem.getAudioInputStream(f);
|
||||||
|
|
||||||
|
clip.open(inputStream);
|
||||||
|
|
||||||
|
} catch(UnsupportedAudioFileException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch(IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch(LineUnavailableException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch(Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void play() {
|
||||||
|
try {
|
||||||
|
new Thread() {
|
||||||
|
public void run() {
|
||||||
|
clip.start();
|
||||||
|
}
|
||||||
|
}.start();
|
||||||
|
} catch(Throwable e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,99 +0,0 @@
|
|||||||
package de.heatup.audio;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.IOException;
|
|
||||||
import javax.sound.sampled.AudioFormat;
|
|
||||||
import javax.sound.sampled.AudioInputStream;
|
|
||||||
import javax.sound.sampled.AudioSystem;
|
|
||||||
import javax.sound.sampled.DataLine;
|
|
||||||
import javax.sound.sampled.FloatControl;
|
|
||||||
import javax.sound.sampled.LineUnavailableException;
|
|
||||||
import javax.sound.sampled.SourceDataLine;
|
|
||||||
import javax.sound.sampled.UnsupportedAudioFileException;
|
|
||||||
|
|
||||||
public class WavePlayer extends Thread {
|
|
||||||
|
|
||||||
private String filename;
|
|
||||||
|
|
||||||
private Position curPosition;
|
|
||||||
|
|
||||||
private final int EXTERNAL_BUFFER_SIZE = 524288; // 128Kb
|
|
||||||
|
|
||||||
enum Position {
|
|
||||||
LEFT, RIGHT, NORMAL
|
|
||||||
};
|
|
||||||
|
|
||||||
public WavePlayer(String wavfile) {
|
|
||||||
filename = wavfile;
|
|
||||||
curPosition = Position.NORMAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
public WavePlayer(String wavfile, Position p) {
|
|
||||||
filename = wavfile;
|
|
||||||
curPosition = p;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void run() {
|
|
||||||
|
|
||||||
File soundFile = new File(filename);
|
|
||||||
if (!soundFile.exists()) {
|
|
||||||
System.err.println("Wave file not found: " + filename);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
AudioInputStream audioInputStream = null;
|
|
||||||
try {
|
|
||||||
audioInputStream = AudioSystem.getAudioInputStream(soundFile);
|
|
||||||
} catch (UnsupportedAudioFileException e1) {
|
|
||||||
e1.printStackTrace();
|
|
||||||
return;
|
|
||||||
} catch (IOException e1) {
|
|
||||||
e1.printStackTrace();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
AudioFormat format = audioInputStream.getFormat();
|
|
||||||
SourceDataLine auline = null;
|
|
||||||
DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
|
|
||||||
|
|
||||||
try {
|
|
||||||
auline = (SourceDataLine) AudioSystem.getLine(info);
|
|
||||||
auline.open(format);
|
|
||||||
} catch (LineUnavailableException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
return;
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (auline.isControlSupported(FloatControl.Type.PAN)) {
|
|
||||||
FloatControl pan = (FloatControl) auline
|
|
||||||
.getControl(FloatControl.Type.PAN);
|
|
||||||
if (curPosition == Position.RIGHT)
|
|
||||||
pan.setValue(1.0f);
|
|
||||||
else if (curPosition == Position.LEFT)
|
|
||||||
pan.setValue(-1.0f);
|
|
||||||
}
|
|
||||||
|
|
||||||
auline.start();
|
|
||||||
int nBytesRead = 0;
|
|
||||||
byte[] abData = new byte[EXTERNAL_BUFFER_SIZE];
|
|
||||||
|
|
||||||
try {
|
|
||||||
while (nBytesRead != -1) {
|
|
||||||
nBytesRead = audioInputStream.read(abData, 0, abData.length);
|
|
||||||
if (nBytesRead >= 0)
|
|
||||||
auline.write(abData, 0, nBytesRead);
|
|
||||||
}
|
|
||||||
} catch (IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
return;
|
|
||||||
} finally {
|
|
||||||
auline.drain();
|
|
||||||
auline.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -4,6 +4,11 @@ package de.heatup.cfg;
|
|||||||
* Bitte hier eure Magicnumbers eintragen
|
* Bitte hier eure Magicnumbers eintragen
|
||||||
*/
|
*/
|
||||||
public class Config {
|
public class Config {
|
||||||
|
/*
|
||||||
|
* Attribute
|
||||||
|
* de.heatup.ui.GameLoop
|
||||||
|
*/
|
||||||
|
public static int currentTickNr = 0;
|
||||||
/*
|
/*
|
||||||
* Attribute
|
* Attribute
|
||||||
* de.heatup.mapengine.*
|
* de.heatup.mapengine.*
|
||||||
|
|||||||
@@ -1,9 +1,13 @@
|
|||||||
package de.heatup.mapengine;
|
package de.heatup.mapengine;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import de.heatup.logging.Logger;
|
import de.heatup.logging.Logger;
|
||||||
|
import de.heatup.testing.Opponent;
|
||||||
import de.heatup.testing.Player;
|
import de.heatup.testing.Player;
|
||||||
|
|
||||||
public class CollisionHandler {
|
public class CollisionHandler {
|
||||||
|
private static ArrayList<Player> movingObjects = new ArrayList<Player>();
|
||||||
/**
|
/**
|
||||||
* Prüfe ob eine Kollision vorliegt
|
* Prüfe ob eine Kollision vorliegt
|
||||||
* @param movingObject Kann alles sein, dass sich bewegt. Spieler oder KI.
|
* @param movingObject Kann alles sein, dass sich bewegt. Spieler oder KI.
|
||||||
@@ -11,29 +15,101 @@ public class CollisionHandler {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static boolean checkCollision(Player movingObject, char d) {
|
public static boolean checkCollision(Player movingObject, char d) {
|
||||||
|
if (movingObject == (movingObjects.get(0))) {
|
||||||
|
// return normalCheck(movingObject, d);
|
||||||
|
// if (movingObject.equals(movingObjects.get(0))) {
|
||||||
|
// enemyCollision(movingObject, d);
|
||||||
|
hardwareCollision(movingObject, d);
|
||||||
|
return normalCheck(movingObject, d);
|
||||||
|
} else {
|
||||||
|
// playerCollision(movingObject, d);
|
||||||
|
return normalCheck(movingObject, d);
|
||||||
|
}
|
||||||
|
// switch (d) {
|
||||||
|
// case 'l':
|
||||||
|
// if (MapGrid.getGridCell(movingObject.getGridLocation().x-1, movingObject.getGridLocation().y).isPath() && MapGrid.getGridCell(movingObject.getGridLocation().x-1, movingObject.getGridLocation().y).isTrigger()) {
|
||||||
|
// Logger.write("Collision with trigger of hardware ID: " + MapGrid.getGridCell(movingObject.getGridLocation().x-1, movingObject.getGridLocation().y).getCorrespondingHardwareToTrigger());
|
||||||
|
// }
|
||||||
|
// return MapGrid.getGridCell(movingObject.getGridLocation().x-1, movingObject.getGridLocation().y).isPath();
|
||||||
|
// case 'r':
|
||||||
|
// if (MapGrid.getGridCell(movingObject.getGridLocation().x+1, movingObject.getGridLocation().y).isPath() && MapGrid.getGridCell(movingObject.getGridLocation().x+1, movingObject.getGridLocation().y).isTrigger()) {
|
||||||
|
// Logger.write("Collision with trigger of hardware ID: " + MapGrid.getGridCell(movingObject.getGridLocation().x+1, movingObject.getGridLocation().y).getCorrespondingHardwareToTrigger());
|
||||||
|
// }
|
||||||
|
// return MapGrid.getGridCell(movingObject.getGridLocation().x+1, movingObject.getGridLocation().y).isPath();
|
||||||
|
// case 'd':
|
||||||
|
// if (MapGrid.getGridCell(movingObject.getGridLocation().x, movingObject.getGridLocation().y+1).isPath() && MapGrid.getGridCell(movingObject.getGridLocation().x, movingObject.getGridLocation().y+1).isTrigger()) {
|
||||||
|
// Logger.write("Collision with trigger of hardware ID: " + MapGrid.getGridCell(movingObject.getGridLocation().x, movingObject.getGridLocation().y+1).getCorrespondingHardwareToTrigger());
|
||||||
|
// }
|
||||||
|
// return MapGrid.getGridCell(movingObject.getGridLocation().x, movingObject.getGridLocation().y+1).isPath();
|
||||||
|
// case 'u':
|
||||||
|
// if (MapGrid.getGridCell(movingObject.getGridLocation().x, movingObject.getGridLocation().y-1).isPath() && MapGrid.getGridCell(movingObject.getGridLocation().x, movingObject.getGridLocation().y-1).isTrigger()) {
|
||||||
|
// Logger.write("Collision with trigger of hardware ID: " + MapGrid.getGridCell(movingObject.getGridLocation().x, movingObject.getGridLocation().y-1).getCorrespondingHardwareToTrigger());
|
||||||
|
// }
|
||||||
|
// return MapGrid.getGridCell(movingObject.getGridLocation().x, movingObject.getGridLocation().y-1).isPath();
|
||||||
|
// default:
|
||||||
|
// return true;
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
private static void playerCollision(Player movingObject, char d) {
|
||||||
|
// if (movingObject.getGridLocation().x== movingObjects.get(0).getGridLocation().x && movingObject.getGridLocation().y == movingObjects.get(0).getGridLocation().y) {
|
||||||
|
//// System.exit(-1);
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
private static void enemyCollision(Player movingObject, char d ) {
|
||||||
|
// for (int i=1; i<movingObjects.size();i++) {
|
||||||
|
// if (movingObject.getGridLocation().x== movingObjects.get(i).getGridLocation().x && movingObject.getGridLocation().y == movingObjects.get(i).getGridLocation().y) {
|
||||||
|
//// System.exit(-1);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
public static void tick() {
|
||||||
|
for (int i=1; i<movingObjects.size();i++) {
|
||||||
|
if (movingObjects.get(0).getGridLocation().x== movingObjects.get(i).getGridLocation().x && movingObjects.get(0).getGridLocation().y == movingObjects.get(i).getGridLocation().y) {
|
||||||
|
Logger.write("COLLISION WITH ENEMY");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private static void hardwareCollision(Player movingObject, char d) {
|
||||||
switch (d) {
|
switch (d) {
|
||||||
case 'l':
|
case 'l':
|
||||||
if (MapGrid.getGridCell(movingObject.getGridLocation().x-1, movingObject.getGridLocation().y).isPath() && MapGrid.getGridCell(movingObject.getGridLocation().x-1, movingObject.getGridLocation().y).isTrigger()) {
|
if (MapGrid.getGridCell(movingObject.getGridLocation().x-1, movingObject.getGridLocation().y).isPath() && MapGrid.getGridCell(movingObject.getGridLocation().x-1, movingObject.getGridLocation().y).isTrigger()) {
|
||||||
Logger.write("Collision with trigger of hardware ID: " + MapGrid.getGridCell(movingObject.getGridLocation().x-1, movingObject.getGridLocation().y).getCorrespondingHardwareToTrigger());
|
Logger.write("Collision with trigger of hardware ID: " + MapGrid.getGridCell(movingObject.getGridLocation().x-1, movingObject.getGridLocation().y).getCorrespondingHardwareToTrigger());
|
||||||
}
|
}
|
||||||
return MapGrid.getGridCell(movingObject.getGridLocation().x-1, movingObject.getGridLocation().y).isPath();
|
|
||||||
case 'r':
|
case 'r':
|
||||||
if (MapGrid.getGridCell(movingObject.getGridLocation().x+1, movingObject.getGridLocation().y).isPath() && MapGrid.getGridCell(movingObject.getGridLocation().x+1, movingObject.getGridLocation().y).isTrigger()) {
|
if (MapGrid.getGridCell(movingObject.getGridLocation().x+1, movingObject.getGridLocation().y).isPath() && MapGrid.getGridCell(movingObject.getGridLocation().x+1, movingObject.getGridLocation().y).isTrigger()) {
|
||||||
Logger.write("Collision with trigger of hardware ID: " + MapGrid.getGridCell(movingObject.getGridLocation().x+1, movingObject.getGridLocation().y).getCorrespondingHardwareToTrigger());
|
Logger.write("Collision with trigger of hardware ID: " + MapGrid.getGridCell(movingObject.getGridLocation().x+1, movingObject.getGridLocation().y).getCorrespondingHardwareToTrigger());
|
||||||
}
|
}
|
||||||
return MapGrid.getGridCell(movingObject.getGridLocation().x+1, movingObject.getGridLocation().y).isPath();
|
|
||||||
case 'd':
|
case 'd':
|
||||||
if (MapGrid.getGridCell(movingObject.getGridLocation().x, movingObject.getGridLocation().y+1).isPath() && MapGrid.getGridCell(movingObject.getGridLocation().x, movingObject.getGridLocation().y+1).isTrigger()) {
|
if (MapGrid.getGridCell(movingObject.getGridLocation().x, movingObject.getGridLocation().y+1).isPath() && MapGrid.getGridCell(movingObject.getGridLocation().x, movingObject.getGridLocation().y+1).isTrigger()) {
|
||||||
Logger.write("Collision with trigger of hardware ID: " + MapGrid.getGridCell(movingObject.getGridLocation().x, movingObject.getGridLocation().y+1).getCorrespondingHardwareToTrigger());
|
Logger.write("Collision with trigger of hardware ID: " + MapGrid.getGridCell(movingObject.getGridLocation().x, movingObject.getGridLocation().y+1).getCorrespondingHardwareToTrigger());
|
||||||
}
|
}
|
||||||
return MapGrid.getGridCell(movingObject.getGridLocation().x, movingObject.getGridLocation().y+1).isPath();
|
|
||||||
case 'u':
|
case 'u':
|
||||||
if (MapGrid.getGridCell(movingObject.getGridLocation().x, movingObject.getGridLocation().y-1).isPath() && MapGrid.getGridCell(movingObject.getGridLocation().x, movingObject.getGridLocation().y-1).isTrigger()) {
|
if (MapGrid.getGridCell(movingObject.getGridLocation().x, movingObject.getGridLocation().y-1).isPath() && MapGrid.getGridCell(movingObject.getGridLocation().x, movingObject.getGridLocation().y-1).isTrigger()) {
|
||||||
Logger.write("Collision with trigger of hardware ID: " + MapGrid.getGridCell(movingObject.getGridLocation().x, movingObject.getGridLocation().y-1).getCorrespondingHardwareToTrigger());
|
Logger.write("Collision with trigger of hardware ID: " + MapGrid.getGridCell(movingObject.getGridLocation().x, movingObject.getGridLocation().y-1).getCorrespondingHardwareToTrigger());
|
||||||
}
|
}
|
||||||
return MapGrid.getGridCell(movingObject.getGridLocation().x, movingObject.getGridLocation().y-1).isPath();
|
|
||||||
default:
|
default:
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
private static boolean normalCheck(Player movingObject, char d) {
|
||||||
|
switch (d) {
|
||||||
|
case 'l':
|
||||||
|
|
||||||
|
return MapGrid.getGridCell(movingObject.getGridLocation().x-1, movingObject.getGridLocation().y).isPath();
|
||||||
|
case 'r':
|
||||||
|
|
||||||
|
return MapGrid.getGridCell(movingObject.getGridLocation().x+1, movingObject.getGridLocation().y).isPath();
|
||||||
|
case 'd':
|
||||||
|
|
||||||
|
return MapGrid.getGridCell(movingObject.getGridLocation().x, movingObject.getGridLocation().y+1).isPath();
|
||||||
|
case 'u':
|
||||||
|
|
||||||
|
return MapGrid.getGridCell(movingObject.getGridLocation().x, movingObject.getGridLocation().y-1).isPath();
|
||||||
|
default:
|
||||||
|
return true; // should not happen
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static void addMovingObject(Player movingObject) {
|
||||||
|
movingObjects.add(movingObject);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
@@ -0,0 +1,24 @@
|
|||||||
|
################################
|
||||||
|
################################
|
||||||
|
################################
|
||||||
|
################################
|
||||||
|
################################
|
||||||
|
################################
|
||||||
|
################################
|
||||||
|
################################
|
||||||
|
################################
|
||||||
|
################################
|
||||||
|
################################
|
||||||
|
################################
|
||||||
|
################################
|
||||||
|
################################
|
||||||
|
################################
|
||||||
|
################################
|
||||||
|
################################
|
||||||
|
################################
|
||||||
|
################################
|
||||||
|
################################
|
||||||
|
################################
|
||||||
|
################################
|
||||||
|
################################
|
||||||
|
################################
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
--------------------------------
|
||||||
|
-##############################-
|
||||||
|
-##############################-
|
||||||
|
-##############################-
|
||||||
|
-##############################-
|
||||||
|
-##############################-
|
||||||
|
-##############################-
|
||||||
|
-##############################-
|
||||||
|
-##############################-
|
||||||
|
-##############################-
|
||||||
|
-##############################-
|
||||||
|
-##############################-
|
||||||
|
-##############################-
|
||||||
|
-##############################-
|
||||||
|
-##############################-
|
||||||
|
-##############################-
|
||||||
|
-##############################-
|
||||||
|
-##############################-
|
||||||
|
-##############################-
|
||||||
|
-##############################-
|
||||||
|
-##############################-
|
||||||
|
-##############################-
|
||||||
|
-##############################-
|
||||||
|
--------------------------------
|
||||||
@@ -8,20 +8,26 @@ import java.awt.Point;
|
|||||||
import javax.swing.JFrame;
|
import javax.swing.JFrame;
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
|
|
||||||
|
import de.heatup.cfg.Config;
|
||||||
import de.heatup.logging.Logger;
|
import de.heatup.logging.Logger;
|
||||||
|
import de.heatup.mapengine.CollisionHandler;
|
||||||
import de.heatup.mapengine.MapEngine;
|
import de.heatup.mapengine.MapEngine;
|
||||||
|
import de.heatup.mapengine.MapGrid;
|
||||||
import de.heatup.mapengine.SpawnAssistant;
|
import de.heatup.mapengine.SpawnAssistant;
|
||||||
import de.heatup.objects.StaticObject;
|
import de.heatup.objects.StaticObject;
|
||||||
|
import de.heatup.timers.HardwareResetTimers;
|
||||||
import de.heatup.ui.KeyBindings;
|
import de.heatup.ui.KeyBindings;
|
||||||
import de.heatup.ui.StatusPanelAdder;
|
import de.heatup.ui.StatusPanelAdder;
|
||||||
|
import de.heatup.ui.actionPanel.ActionControl;
|
||||||
|
import de.heatup.ui.actionPanel.ActionWatcher;
|
||||||
|
|
||||||
|
|
||||||
public class GameLoopD extends JFrame implements Runnable {
|
public class GameLoopD extends JFrame implements Runnable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
|
||||||
private boolean running = false;
|
private boolean running = false;
|
||||||
|
private static boolean pause = false;
|
||||||
|
|
||||||
private Thread thread;
|
private Thread thread;
|
||||||
|
|
||||||
@@ -36,6 +42,9 @@ public class GameLoopD extends JFrame implements Runnable {
|
|||||||
public static Opponent opponent01;
|
public static Opponent opponent01;
|
||||||
public static Opponent opponent02;
|
public static Opponent opponent02;
|
||||||
public static Opponent opponent03;
|
public static Opponent opponent03;
|
||||||
|
public static Opponent opponent04;
|
||||||
|
public static Opponent opponent05;
|
||||||
|
public static Opponent opponent06;
|
||||||
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
@@ -66,12 +75,12 @@ public class GameLoopD extends JFrame implements Runnable {
|
|||||||
gamePanel = new JPanel();
|
gamePanel = new JPanel();
|
||||||
gamePanel.setLayout(null);
|
gamePanel.setLayout(null);
|
||||||
gamePanel.setPreferredSize(new Dimension(800,600));
|
gamePanel.setPreferredSize(new Dimension(800,600));
|
||||||
|
gamePanel.setFocusable(true);
|
||||||
|
|
||||||
actionPanel = new JPanel();
|
actionPanel = new JPanel();
|
||||||
actionPanel.setLayout(new GridLayout(1,1));
|
actionPanel.setLayout(new GridLayout(1,1));
|
||||||
actionPanel.setPreferredSize(new Dimension(800,80));
|
actionPanel.setPreferredSize(new Dimension(800,80));
|
||||||
actionPanel.setFocusable(false);
|
actionPanel.setFocusable(true);
|
||||||
|
|
||||||
|
|
||||||
outerPanel.add(statusPanel,BorderLayout.NORTH);
|
outerPanel.add(statusPanel,BorderLayout.NORTH);
|
||||||
outerPanel.add(gamePanel,BorderLayout.CENTER);
|
outerPanel.add(gamePanel,BorderLayout.CENTER);
|
||||||
@@ -84,8 +93,12 @@ public class GameLoopD extends JFrame implements Runnable {
|
|||||||
// StatusPanel bauen
|
// StatusPanel bauen
|
||||||
StatusPanelAdder.setPanel(statusPanel);
|
StatusPanelAdder.setPanel(statusPanel);
|
||||||
StatusPanelAdder.createPanel();
|
StatusPanelAdder.createPanel();
|
||||||
|
// ActionPanel bauen
|
||||||
|
ActionControl.setPanel(actionPanel);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
player01 = new Player();
|
player01 = new Player(); // !!! PLAYER IMMER ZUERST INSTANZIIEREN, DANACH OPPONENTS !!!
|
||||||
// Query.setPlayer(player01);
|
// Query.setPlayer(player01);
|
||||||
gamePanel.add(player01);
|
gamePanel.add(player01);
|
||||||
player01.setBounds(25,25,25, 25); // !!! MUSS DRIN BLEIBEN TROTZ NACHTRÄGLICHES SPAWN UMSETZEN !!!
|
player01.setBounds(25,25,25, 25); // !!! MUSS DRIN BLEIBEN TROTZ NACHTRÄGLICHES SPAWN UMSETZEN !!!
|
||||||
@@ -103,11 +116,24 @@ public class GameLoopD extends JFrame implements Runnable {
|
|||||||
gamePanel.add(opponent03);
|
gamePanel.add(opponent03);
|
||||||
opponent03.setBounds(550,450,25,25);
|
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);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
gamePanel.setFocusable(true);
|
|
||||||
kb = new KeyBindings(player01);
|
kb = new KeyBindings(player01);
|
||||||
gamePanel.addKeyListener(kb);
|
gamePanel.addKeyListener(kb);
|
||||||
|
|
||||||
|
|
||||||
MapEngine me = new MapEngine(1);
|
MapEngine me = new MapEngine(1);
|
||||||
me.addAllToPanel(gamePanel);
|
me.addAllToPanel(gamePanel);
|
||||||
|
|
||||||
@@ -120,6 +146,12 @@ public class GameLoopD extends JFrame implements Runnable {
|
|||||||
opponent02.spawnAt(spawnPoint3);
|
opponent02.spawnAt(spawnPoint3);
|
||||||
Point spawnPoint4 = SpawnAssistant.getPathLocationOnGrid();
|
Point spawnPoint4 = SpawnAssistant.getPathLocationOnGrid();
|
||||||
opponent03.spawnAt(spawnPoint4);
|
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);
|
actionPanel.setVisible(true);
|
||||||
outerPanel.setVisible(true);
|
outerPanel.setVisible(true);
|
||||||
@@ -134,13 +166,20 @@ public class GameLoopD extends JFrame implements Runnable {
|
|||||||
/*
|
/*
|
||||||
* ende
|
* ende
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
frame.repaint();
|
frame.repaint();
|
||||||
frame.start();
|
frame.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
private synchronized void start() {
|
public static synchronized void pause() {
|
||||||
|
if (pause) {
|
||||||
|
pause = false;
|
||||||
|
} else {
|
||||||
|
pause = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public synchronized void start() {
|
||||||
if (running) {
|
if (running) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -151,7 +190,7 @@ public class GameLoopD extends JFrame implements Runnable {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private synchronized void stop() {
|
public synchronized void stop() {
|
||||||
if (!running) {
|
if (!running) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -182,7 +221,9 @@ public class GameLoopD extends JFrame implements Runnable {
|
|||||||
delta += (now-lastTime) / ns;
|
delta += (now-lastTime) / ns;
|
||||||
lastTime = now;
|
lastTime = now;
|
||||||
if (delta >= 1) {
|
if (delta >= 1) {
|
||||||
tick();
|
if (!pause) {
|
||||||
|
tick();
|
||||||
|
}
|
||||||
updates++;
|
updates++;
|
||||||
delta--;
|
delta--;
|
||||||
}
|
}
|
||||||
@@ -209,12 +250,23 @@ public class GameLoopD extends JFrame implements Runnable {
|
|||||||
}
|
}
|
||||||
// alles was geupdatet werden muss hier rein
|
// alles was geupdatet werden muss hier rein
|
||||||
private void tick() {
|
private void tick() {
|
||||||
|
if (Config.currentTickNr >= 60) {
|
||||||
|
Config.currentTickNr = 0;
|
||||||
|
} else {
|
||||||
|
Config.currentTickNr++;
|
||||||
|
}
|
||||||
kb.checkKeyActivity();
|
kb.checkKeyActivity();
|
||||||
|
ActionWatcher.tick();
|
||||||
|
ActionControl.actionControl();
|
||||||
|
HardwareResetTimers.tick();
|
||||||
player01.tick();
|
player01.tick();
|
||||||
opponent01.tick();
|
opponent01.tick();
|
||||||
opponent02.tick();
|
opponent02.tick();
|
||||||
opponent03.tick();
|
opponent03.tick();
|
||||||
|
opponent04.tick();
|
||||||
|
opponent05.tick();
|
||||||
|
opponent06.tick();
|
||||||
|
CollisionHandler.tick();
|
||||||
}
|
}
|
||||||
// alles was animiert wird hier rein (paints)
|
// alles was animiert wird hier rein (paints)
|
||||||
private void render() {
|
private void render() {
|
||||||
|
|||||||
@@ -8,13 +8,12 @@ import javax.imageio.ImageIO;
|
|||||||
|
|
||||||
import de.heatup.cfg.Config;
|
import de.heatup.cfg.Config;
|
||||||
import de.heatup.logging.Logger;
|
import de.heatup.logging.Logger;
|
||||||
|
import de.heatup.mapengine.CollisionHandler;
|
||||||
import de.heatup.mapengine.MapGrid;
|
import de.heatup.mapengine.MapGrid;
|
||||||
|
import de.heatup.mapengine.MapGridCell;
|
||||||
|
|
||||||
public class Opponent extends Player {
|
public class Opponent extends Player {
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
private boolean redecide = true; // Nötig sobald der Schritt in die gewollte Richtung erfolgt ist
|
private boolean redecide = true; // Nötig sobald der Schritt in die gewollte Richtung erfolgt ist
|
||||||
private Random rand = new Random();
|
private Random rand = new Random();
|
||||||
@@ -26,7 +25,13 @@ public class Opponent extends Player {
|
|||||||
private int prevX;
|
private int prevX;
|
||||||
private int prevY;
|
private int prevY;
|
||||||
private boolean blocked = false;
|
private boolean blocked = false;
|
||||||
|
private boolean move = false;
|
||||||
private int blockedCounter = 0;
|
private int blockedCounter = 0;
|
||||||
|
private char charDir;
|
||||||
|
|
||||||
|
public Opponent() {
|
||||||
|
CollisionHandler.addMovingObject(this);
|
||||||
|
}
|
||||||
|
|
||||||
@Override protected void loadBufferedImage() {
|
@Override protected void loadBufferedImage() {
|
||||||
try {
|
try {
|
||||||
@@ -37,17 +42,9 @@ public class Opponent extends Player {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override public void tick() {
|
@Override public void tick() {
|
||||||
|
|
||||||
if ( redecide ) {
|
if ( redecide ) {
|
||||||
while ( true ) {
|
while ( true ) {
|
||||||
|
|
||||||
this.d = (rand.nextInt(10) <= 4) ? 'x' : 'y';
|
|
||||||
this.i = (rand.nextInt(10) <= 4) ? 1 : -1;
|
|
||||||
|
|
||||||
// Sicher stellen das man nicht in die Richtung geht aus der man gekommen ist.
|
|
||||||
if ( redecide && this.d == this.prevd && this.i != this.previ ) {
|
|
||||||
this.i *= -1;
|
|
||||||
}
|
|
||||||
// Blockade Erkennung
|
// Blockade Erkennung
|
||||||
if ( this.prevX == this.getGridLocation().x & this.prevY == this.getGridLocation().y ) {
|
if ( this.prevX == this.getGridLocation().x & this.prevY == this.getGridLocation().y ) {
|
||||||
this.blockedCounter++;
|
this.blockedCounter++;
|
||||||
@@ -58,12 +55,47 @@ public class Opponent extends Player {
|
|||||||
this.prevX = this.getGridLocation().x;
|
this.prevX = this.getGridLocation().x;
|
||||||
this.prevY = this.getGridLocation().y;
|
this.prevY = this.getGridLocation().y;
|
||||||
|
|
||||||
//TODO: Bei Kreuzung umentscheiden
|
if ( d == 'x' ) {
|
||||||
|
if ( CollisionHandler.checkCollision(this, 'd') ) {
|
||||||
|
this.move = false;
|
||||||
|
}
|
||||||
|
if ( CollisionHandler.checkCollision(this, 'u') ) {
|
||||||
|
this.move = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ( d == 'y' ) {
|
||||||
|
if ( CollisionHandler.checkCollision(this, 'l') ) {
|
||||||
|
this.move = false;
|
||||||
|
}
|
||||||
|
if ( CollisionHandler.checkCollision(this, 'r') ) {
|
||||||
|
this.move = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Umentscheiden oder weiter in die vorgegeben Richtung
|
||||||
|
if ( ! this.move ) {
|
||||||
|
//Logger.write("Redeciding...");
|
||||||
|
this.d = (rand.nextInt(10) <= 4) ? 'x' : 'y';
|
||||||
|
this.i = (rand.nextInt(10) <= 4) ? 1 : -1;
|
||||||
|
// Sicher stellen das man nicht in die Richtung geht aus der man gekommen ist.
|
||||||
|
if ( redecide && this.d == this.prevd && this.i != this.previ ) {
|
||||||
|
this.i *= -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
//Logger.write("Moving...");
|
||||||
|
}
|
||||||
|
|
||||||
|
this.move = true;
|
||||||
|
|
||||||
// Blockade auflösen, gehe doch in die Richtung aus man gekommen ist
|
// Blockade auflösen, gehe doch in die Richtung aus man gekommen ist
|
||||||
if ( this.blocked ) {
|
if ( this.blocked ) {
|
||||||
Logger.write("Warning: Block detected!");
|
//Logger.write("Warning: Block detected!");
|
||||||
this.i *= -1;
|
this.i *= -1;
|
||||||
|
this.move = false;
|
||||||
this.blocked = false;
|
this.blocked = false;
|
||||||
this.blockedCounter = 0;
|
this.blockedCounter = 0;
|
||||||
}
|
}
|
||||||
@@ -77,16 +109,24 @@ public class Opponent extends Player {
|
|||||||
testX=this.getGridLocation().x;
|
testX=this.getGridLocation().x;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Testen ob die gewählte Richtung begehbar ist
|
if ( d == 'x' && i == -1 ) {
|
||||||
if (MapGrid.getGridCell(testX,testY).isPath()) {
|
charDir = 'l';
|
||||||
|
} else if ( d == 'x' && i == 1 ) {
|
||||||
|
charDir = 'r';
|
||||||
|
} else if ( d == 'y' && i == -1 ) {
|
||||||
|
charDir = 'u';
|
||||||
|
} else if ( d == 'y' && i == 1 ) {
|
||||||
|
charDir = 'd';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (CollisionHandler.checkCollision(this, charDir)) {
|
||||||
this.setGridLocation(testX, testY);
|
this.setGridLocation(testX, testY);
|
||||||
this.prevd = d;
|
this.prevd = d;
|
||||||
this.previ = i;
|
this.previ = i;
|
||||||
redecide = false;
|
redecide = false;
|
||||||
animate = true;
|
animate = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -94,7 +134,8 @@ public class Opponent extends Player {
|
|||||||
int newx = this.getX();
|
int newx = this.getX();
|
||||||
int newy = this.getY();
|
int newy = this.getY();
|
||||||
|
|
||||||
for (int s = 0; s < this.speedMultiplicator; s++) { // speed multiplikator
|
// Speed Multiplikator
|
||||||
|
for (int s = 0; s < this.speedMultiplicator; s++) {
|
||||||
if (d == 'x' && i == -1) {
|
if (d == 'x' && i == -1) {
|
||||||
newx = newx - 1;
|
newx = newx - 1;
|
||||||
} else if (d == 'x' && i == 1) {
|
} else if (d == 'x' && i == 1) {
|
||||||
@@ -104,20 +145,22 @@ public class Opponent extends Player {
|
|||||||
} else if (d == 'y' && i == 1) {
|
} else if (d == 'y' && i == 1) {
|
||||||
newy = newy + 1;
|
newy = newy + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.setAutoBounds(newx, newy);
|
this.setAutoBounds(newx, newy);
|
||||||
stepCounter--;
|
stepCounter--;
|
||||||
if ( stepCounter <= 0 ) {
|
if ( stepCounter <= 0 ) {
|
||||||
animate = false;
|
animate = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
if (stepCounter <= 0) {
|
if (stepCounter <= 0) {
|
||||||
stepCounter = 25;
|
stepCounter = 25;
|
||||||
redecide = true;
|
redecide = true;
|
||||||
|
animate = false;
|
||||||
|
} else {
|
||||||
|
animate = true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import javax.swing.JComponent;
|
|||||||
|
|
||||||
import de.heatup.cfg.Config;
|
import de.heatup.cfg.Config;
|
||||||
import de.heatup.logging.Logger;
|
import de.heatup.logging.Logger;
|
||||||
|
import de.heatup.mapengine.CollisionHandler;
|
||||||
|
|
||||||
public class Player extends JComponent {
|
public class Player extends JComponent {
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
@@ -33,6 +34,10 @@ public class Player extends JComponent {
|
|||||||
int stepCounter = 25;
|
int stepCounter = 25;
|
||||||
private Point currentGridPosition;
|
private Point currentGridPosition;
|
||||||
|
|
||||||
|
public Player() {
|
||||||
|
CollisionHandler.addMovingObject(this);
|
||||||
|
}
|
||||||
|
|
||||||
public void setSpeedMultiplicator(int factor) {
|
public void setSpeedMultiplicator(int factor) {
|
||||||
this.speedMultiplicator *= factor;
|
this.speedMultiplicator *= factor;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,36 @@
|
|||||||
|
package de.heatup.timers;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import de.heatup.cfg.Config;
|
||||||
|
import de.heatup.logging.Logger;
|
||||||
|
import de.heatup.ui.actionPanel.HardewareManipulate;
|
||||||
|
|
||||||
|
public class HardwareResetTimers {
|
||||||
|
private static int tickCount = 0;
|
||||||
|
private static int tickRoundMax = 10000;
|
||||||
|
private static int nrOfTicksUntilReset = 900; // entspricht 15 sekunden ingame zeit (nicht unbedingt echtzeit!); berechnet durch 15*targetTickRate im Gameloop.
|
||||||
|
private static Map<Character, Integer> HardwareResetTickstamps = new HashMap<Character, Integer>();
|
||||||
|
public static void tick() {
|
||||||
|
tickCount++;
|
||||||
|
if (tickCount>=tickRoundMax) {
|
||||||
|
tickCount = 0;
|
||||||
|
}
|
||||||
|
for (char i = Config.firstHardwareChar; i<=Config.lastHardwareChar; i++) {
|
||||||
|
if (HardwareResetTickstamps.containsKey(i)) {
|
||||||
|
if (HardwareResetTickstamps.get(i).equals(tickCount)) {
|
||||||
|
Logger.write("Hardware "+i+" reset");
|
||||||
|
HardewareManipulate.resetHardware(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static void setManipulated(char c) {
|
||||||
|
int resetTimestamp = tickCount+nrOfTicksUntilReset;
|
||||||
|
if (resetTimestamp > tickRoundMax) {
|
||||||
|
resetTimestamp = resetTimestamp % tickRoundMax;
|
||||||
|
}
|
||||||
|
HardwareResetTickstamps.put(c, resetTimestamp);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,8 +3,14 @@ package de.heatup.ui;
|
|||||||
import java.awt.event.KeyAdapter;
|
import java.awt.event.KeyAdapter;
|
||||||
import java.awt.event.KeyEvent;
|
import java.awt.event.KeyEvent;
|
||||||
|
|
||||||
|
import sun.awt.resources.awt;
|
||||||
import de.heatup.mapengine.CollisionHandler;
|
import de.heatup.mapengine.CollisionHandler;
|
||||||
|
import de.heatup.mapengine.MapGrid;
|
||||||
|
import de.heatup.testing.GameLoopD;
|
||||||
import de.heatup.testing.Player;
|
import de.heatup.testing.Player;
|
||||||
|
import de.heatup.ui.actionPanel.ActionControl;
|
||||||
|
import de.heatup.ui.actionPanel.ActionWatcher;
|
||||||
|
import de.heatup.ui.actionPanel.HardewareManipulate;
|
||||||
|
|
||||||
public class KeyBindings extends KeyAdapter {
|
public class KeyBindings extends KeyAdapter {
|
||||||
|
|
||||||
@@ -12,6 +18,7 @@ public class KeyBindings extends KeyAdapter {
|
|||||||
private boolean right = false;
|
private boolean right = false;
|
||||||
private boolean up = false;
|
private boolean up = false;
|
||||||
private boolean down = false;
|
private boolean down = false;
|
||||||
|
private boolean esc = false;
|
||||||
private Player player;
|
private Player player;
|
||||||
|
|
||||||
public KeyBindings(Player player) {
|
public KeyBindings(Player player) {
|
||||||
@@ -34,6 +41,9 @@ public class KeyBindings extends KeyAdapter {
|
|||||||
case KeyEvent.VK_DOWN:
|
case KeyEvent.VK_DOWN:
|
||||||
down = false;
|
down = false;
|
||||||
break;
|
break;
|
||||||
|
case KeyEvent.VK_ESCAPE:
|
||||||
|
esc = false;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -53,6 +63,55 @@ public class KeyBindings extends KeyAdapter {
|
|||||||
case KeyEvent.VK_DOWN:
|
case KeyEvent.VK_DOWN:
|
||||||
down = true;
|
down = true;
|
||||||
break;
|
break;
|
||||||
|
case KeyEvent.VK_ESCAPE:
|
||||||
|
esc = true;
|
||||||
|
break;
|
||||||
|
case KeyEvent.VK_A:
|
||||||
|
if(MapGrid.getGridCell(GameLoopD.player01.getGridLocation().x, GameLoopD.player01.getGridLocation().y).isTrigger()
|
||||||
|
&& !HardewareManipulate.getHardware(MapGrid.getGridCell(GameLoopD.player01.getGridLocation().x, GameLoopD.player01.getGridLocation().y).getCorrespondingHardwareToTrigger())){
|
||||||
|
ActionWatcher.setAction(true);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case KeyEvent.VK_Q:
|
||||||
|
if(ActionWatcher.getAction()&&ActionControl.getSmash()=='Q'){
|
||||||
|
if(ActionControl.getOption()){
|
||||||
|
ActionControl.count++;
|
||||||
|
}else{
|
||||||
|
//ActionControl.setQ();
|
||||||
|
//ActionControl.count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case KeyEvent.VK_W:
|
||||||
|
if(ActionWatcher.getAction()&&ActionControl.getSmash()=='W'){
|
||||||
|
if(ActionControl.getOption()){
|
||||||
|
ActionControl.count++;
|
||||||
|
}else{
|
||||||
|
//ActionControl.setW();
|
||||||
|
//ActionControl.count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case KeyEvent.VK_E:
|
||||||
|
if(ActionWatcher.getAction()&&ActionControl.getSmash()=='E'){
|
||||||
|
if(ActionControl.getOption()){
|
||||||
|
ActionControl.count++;
|
||||||
|
}else{
|
||||||
|
//ActionControl.setE();
|
||||||
|
//ActionControl.count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case KeyEvent.VK_R:
|
||||||
|
if(ActionWatcher.getAction()&&ActionControl.getSmash()=='R'){
|
||||||
|
if(ActionControl.getOption()){
|
||||||
|
ActionControl.count++;
|
||||||
|
}else{
|
||||||
|
//ActionControl.setR();
|
||||||
|
//ActionControl.count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -90,6 +149,10 @@ public class KeyBindings extends KeyAdapter {
|
|||||||
}
|
}
|
||||||
player.animate = true;
|
player.animate = true;
|
||||||
}
|
}
|
||||||
|
if (isESC()) {
|
||||||
|
System.out.println("ESC pressed.");
|
||||||
|
GameLoopD.pause();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isLeft() {
|
public boolean isLeft() {
|
||||||
@@ -107,4 +170,7 @@ public class KeyBindings extends KeyAdapter {
|
|||||||
public boolean isDown() {
|
public boolean isDown() {
|
||||||
return down;
|
return down;
|
||||||
}
|
}
|
||||||
|
public boolean isESC() {
|
||||||
|
return esc;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,113 @@
|
|||||||
|
package de.heatup.ui.actionPanel;
|
||||||
|
|
||||||
|
import java.awt.Color;
|
||||||
|
import java.awt.Font;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
import javax.swing.border.LineBorder;
|
||||||
|
|
||||||
|
import de.heatup.mapengine.MapGrid;
|
||||||
|
import de.heatup.testing.GameLoopD;
|
||||||
|
|
||||||
|
public class ActionControl{
|
||||||
|
public static int count =0;
|
||||||
|
private static long afterTime=0;
|
||||||
|
static long beforeTime =0;
|
||||||
|
static boolean time =true;
|
||||||
|
private static boolean Q=false;
|
||||||
|
private static boolean W=false;
|
||||||
|
private static boolean E=false;
|
||||||
|
private static boolean R=false;
|
||||||
|
private static boolean option;
|
||||||
|
private static char chr='0';
|
||||||
|
private static char arr[];
|
||||||
|
private static Smashing smashing;
|
||||||
|
private static Keysequence keysequence;
|
||||||
|
private static JPanel panel;
|
||||||
|
protected static JLabel actionLabel;
|
||||||
|
|
||||||
|
public static void setPanel(JPanel newPanel){
|
||||||
|
panel = newPanel;
|
||||||
|
smashing = new Smashing();
|
||||||
|
keysequence = new Keysequence();
|
||||||
|
actionLabel = new JLabel();
|
||||||
|
actionLabel.setFont(new Font("Arial", Font.CENTER_BASELINE, 16));
|
||||||
|
actionLabel.setBorder(new LineBorder(Color.BLACK, 1));
|
||||||
|
actionLabel.setSize(100,10);
|
||||||
|
panel.add(actionLabel);
|
||||||
|
wishPanel();
|
||||||
|
}
|
||||||
|
public static void setAction(int rd){
|
||||||
|
if(true){
|
||||||
|
option=true;
|
||||||
|
setSmash(smashing.getKey());
|
||||||
|
String str= "Bitte die Taste "+getSmash()+" so schnell wie moeglich druecken";
|
||||||
|
actionLabel.setText(str);
|
||||||
|
/*}else{
|
||||||
|
option=false;
|
||||||
|
setSequence(keysequence.getKeySequence());
|
||||||
|
String str="Bitte diese Tastenkombination \"";
|
||||||
|
for(int i=0;i<keysequence.getLength();i++){
|
||||||
|
str=str+getSequence()[i]+" ";
|
||||||
|
}
|
||||||
|
str=str + "\" "+"so schnell wie moeglich eingeben";
|
||||||
|
actionLabel.setText(str);*/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static void actionControl(){
|
||||||
|
if(ActionWatcher.getAction()){
|
||||||
|
if(option){
|
||||||
|
if(count<30){
|
||||||
|
if(time){
|
||||||
|
time = !time;
|
||||||
|
beforeTime=System.nanoTime();
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
afterTime=System.nanoTime()-beforeTime;
|
||||||
|
if(afterTime>8_000_000_000L){
|
||||||
|
actionLabel.setText("Fehlgeschlagen");
|
||||||
|
}else{
|
||||||
|
actionLabel.setText("Manipulation erfolgreich!");
|
||||||
|
count=0;
|
||||||
|
time=!time;
|
||||||
|
ActionWatcher.setAction(false);
|
||||||
|
HardewareManipulate.setHardware(MapGrid.getGridCell(GameLoopD.player01.getGridLocation().x, GameLoopD.player01.getGridLocation().y).getCorrespondingHardwareToTrigger());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static void setQ(){
|
||||||
|
Q=true;
|
||||||
|
}
|
||||||
|
public static void setW(){
|
||||||
|
W=true;
|
||||||
|
}
|
||||||
|
public static void setE(){
|
||||||
|
E=true;
|
||||||
|
}
|
||||||
|
public static void setR(){
|
||||||
|
R=true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean getOption(){
|
||||||
|
return option;
|
||||||
|
}
|
||||||
|
private static void setSmash(char c){
|
||||||
|
chr=c;
|
||||||
|
}
|
||||||
|
private static void setSequence(char c[]){
|
||||||
|
arr=c;
|
||||||
|
}
|
||||||
|
public static char getSmash(){
|
||||||
|
return chr;
|
||||||
|
}
|
||||||
|
private static char[] getSequence(){
|
||||||
|
return arr;
|
||||||
|
}
|
||||||
|
public static void wishPanel(){
|
||||||
|
actionLabel.setText("");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
package de.heatup.ui.actionPanel;
|
||||||
|
|
||||||
|
import java.awt.Component;
|
||||||
|
import java.awt.event.KeyAdapter;
|
||||||
|
import java.awt.event.KeyEvent;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
import javax.swing.JLabel;
|
||||||
|
|
||||||
|
import de.heatup.mapengine.MapEngine;
|
||||||
|
import de.heatup.mapengine.MapGrid;
|
||||||
|
import de.heatup.mapengine.MapGridCell;
|
||||||
|
import de.heatup.testing.GameLoopD;
|
||||||
|
|
||||||
|
public class ActionWatcher{
|
||||||
|
private static boolean action = false;
|
||||||
|
private static boolean setaction = false;
|
||||||
|
private static Random rdm = new Random();
|
||||||
|
|
||||||
|
public static void setAction(boolean b){
|
||||||
|
action = b;
|
||||||
|
}
|
||||||
|
public static boolean getAction(){
|
||||||
|
return action;
|
||||||
|
}
|
||||||
|
public static void tick(){
|
||||||
|
//Taucht auf, falls man in der Näche von einem Hardwareteil steht
|
||||||
|
if(MapGrid.getGridCell(GameLoopD.player01.getGridLocation().x, GameLoopD.player01.getGridLocation().y).isTrigger() && !action && !setaction){
|
||||||
|
if(!HardewareManipulate.getHardware(MapGrid.getGridCell(GameLoopD.player01.getGridLocation().x, GameLoopD.player01.getGridLocation().y).getCorrespondingHardwareToTrigger())){
|
||||||
|
ActionControl.actionLabel.setText("Taste A druecken");
|
||||||
|
}else{
|
||||||
|
ActionControl.actionLabel.setText("Bereits Manipuliert");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//Entfernt jeglichen Text wenn man sich von dem Hardwarestück entfernt und noch nicht A gedrückt hat
|
||||||
|
if(!MapGrid.getGridCell(GameLoopD.player01.getGridLocation().x, GameLoopD.player01.getGridLocation().y).isTrigger() && !action && !setaction){
|
||||||
|
ActionControl.wishPanel();
|
||||||
|
}
|
||||||
|
//Nach dem man A gedrueckt hat kommt entweder Smashing oder Keysequence Text.
|
||||||
|
if(action&&!setaction){
|
||||||
|
setaction = !setaction;
|
||||||
|
ActionControl.actionLabel.setText("");
|
||||||
|
ActionControl.setAction(rdm.nextInt(2)+1);
|
||||||
|
}
|
||||||
|
//Entfernt jeglichen Text wenn man sich von dem Hardwarestück entfernt und setzt Booleans wieder auf ausganssituation
|
||||||
|
if(!MapGrid.getGridCell(GameLoopD.player01.getGridLocation().x, GameLoopD.player01.getGridLocation().y).isTrigger() && setaction){
|
||||||
|
ActionControl.wishPanel();
|
||||||
|
ActionControl.count=0;
|
||||||
|
ActionControl.time=true;
|
||||||
|
ActionControl.beforeTime=0;
|
||||||
|
setaction = !setaction;
|
||||||
|
action = !action;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,132 @@
|
|||||||
|
package de.heatup.ui.actionPanel;
|
||||||
|
|
||||||
|
import de.heatup.timers.HardwareResetTimers;
|
||||||
|
|
||||||
|
public class HardewareManipulate {
|
||||||
|
private static boolean h00=false;
|
||||||
|
private static boolean h01=false;
|
||||||
|
private static boolean h02=false;
|
||||||
|
private static boolean h03=false;
|
||||||
|
private static boolean h04=false;
|
||||||
|
private static boolean h05=false;
|
||||||
|
private static boolean h06=false;
|
||||||
|
private static boolean h07=false;
|
||||||
|
private static boolean h08=false;
|
||||||
|
private static boolean h09=false;
|
||||||
|
public static void setHardware(char c){
|
||||||
|
switch(c){
|
||||||
|
case '0':
|
||||||
|
h00=true;
|
||||||
|
HardwareResetTimers.setManipulated(c);
|
||||||
|
break;
|
||||||
|
case '1':
|
||||||
|
h01=true;
|
||||||
|
HardwareResetTimers.setManipulated(c);
|
||||||
|
break;
|
||||||
|
case '2':
|
||||||
|
h02=true;
|
||||||
|
HardwareResetTimers.setManipulated(c);
|
||||||
|
break;
|
||||||
|
case '3':
|
||||||
|
h03=true;
|
||||||
|
HardwareResetTimers.setManipulated(c);
|
||||||
|
break;
|
||||||
|
case '4':
|
||||||
|
h04=true;
|
||||||
|
HardwareResetTimers.setManipulated(c);
|
||||||
|
break;
|
||||||
|
case '5':
|
||||||
|
h05=true;
|
||||||
|
HardwareResetTimers.setManipulated(c);
|
||||||
|
break;
|
||||||
|
case '6':
|
||||||
|
h06=true;
|
||||||
|
HardwareResetTimers.setManipulated(c);
|
||||||
|
break;
|
||||||
|
case '7':
|
||||||
|
h07=true;
|
||||||
|
HardwareResetTimers.setManipulated(c);
|
||||||
|
break;
|
||||||
|
case '8':
|
||||||
|
h08=true;
|
||||||
|
HardwareResetTimers.setManipulated(c);
|
||||||
|
break;
|
||||||
|
case '9':
|
||||||
|
h09=true;
|
||||||
|
HardwareResetTimers.setManipulated(c);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static void resetHardware(char c){
|
||||||
|
switch(c){
|
||||||
|
case '0':
|
||||||
|
h00=false;
|
||||||
|
break;
|
||||||
|
case '1':
|
||||||
|
h01=false;
|
||||||
|
break;
|
||||||
|
case '2':
|
||||||
|
h02=false;
|
||||||
|
break;
|
||||||
|
case '3':
|
||||||
|
h03=false;
|
||||||
|
break;
|
||||||
|
case '4':
|
||||||
|
h04=false;
|
||||||
|
break;
|
||||||
|
case '5':
|
||||||
|
h05=false;
|
||||||
|
break;
|
||||||
|
case '6':
|
||||||
|
h06=false;
|
||||||
|
break;
|
||||||
|
case '7':
|
||||||
|
h07=false;
|
||||||
|
break;
|
||||||
|
case '8':
|
||||||
|
h08=false;
|
||||||
|
break;
|
||||||
|
case '9':
|
||||||
|
h09=false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static boolean getHardware(char c){
|
||||||
|
switch(c){
|
||||||
|
case '0':
|
||||||
|
return h00;
|
||||||
|
case '1':
|
||||||
|
return h01;
|
||||||
|
case '2':
|
||||||
|
return h02;
|
||||||
|
case '3':
|
||||||
|
return h03;
|
||||||
|
case '4':
|
||||||
|
return h04;
|
||||||
|
case '5':
|
||||||
|
return h05;
|
||||||
|
case '6':
|
||||||
|
return h06;
|
||||||
|
case '7':
|
||||||
|
return h07;
|
||||||
|
case '8':
|
||||||
|
return h08;
|
||||||
|
case '9':
|
||||||
|
return h09;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static void reinitialisieren(){
|
||||||
|
h00=false;
|
||||||
|
h01=false;
|
||||||
|
h02=false;
|
||||||
|
h03=false;
|
||||||
|
h04=false;
|
||||||
|
h05=false;
|
||||||
|
h06=false;
|
||||||
|
h07=false;
|
||||||
|
h08=false;
|
||||||
|
h09=false;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
package de.heatup.ui.actionPanel;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
public class Keysequence {
|
||||||
|
private int length =8;
|
||||||
|
private char[] key_sq;
|
||||||
|
private Random rdm;
|
||||||
|
public Keysequence(){
|
||||||
|
rdm = new Random();
|
||||||
|
key_sq=new char[length];
|
||||||
|
}
|
||||||
|
public int getLength(){
|
||||||
|
return length;
|
||||||
|
}
|
||||||
|
protected char[] getKeySequence(){
|
||||||
|
for(int i=0;i<length;i++){
|
||||||
|
switch(rdm.nextInt(4)+1){
|
||||||
|
case 1:
|
||||||
|
key_sq[i]='Q';
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
key_sq[i]='W';
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
key_sq[i]='E';
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
key_sq[i]='R';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return key_sq;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
package de.heatup.ui.actionPanel;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
public class Smashing {
|
||||||
|
char key;
|
||||||
|
Random rdm;
|
||||||
|
|
||||||
|
public Smashing(){
|
||||||
|
rdm = new Random();
|
||||||
|
}
|
||||||
|
public char getKey(){
|
||||||
|
switch(rdm.nextInt(4)+1){
|
||||||
|
case 1:
|
||||||
|
key='Q';
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
key='W';
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
key='E';
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
key='R';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return key;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user