tron-terror-game/src/Game/GamePanel.java

244 lines
4.6 KiB
Java

package Game;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.Timer;
public class GamePanel extends JPanel implements ActionListener, KeyListener{
/**
*
*/
private static final long serialVersionUID = 1L;
private MenuPanel topPanel;
private GameLogic logic;
private JLabel lblScore;
boolean p1Fire, p2Fire;
public static final int W = 1195, H = 855;
/*
*
* Setup TIMERS & LISTENERS !!!
*
*/
Timer timerGeneral;
Timer timerBullet;
public GamePanel() {
setBackground(Color.BLACK);
setLayout(new BorderLayout());
setSize(W, H);
logic = new GameLogic(W, H);
lblScore = new JLabel(logic.getP2Name()+": "+logic.getPlayer2Point()+" "+logic.getP1Name()+": "+logic.getPlayer1Point());
lblScore.setForeground(Color.WHITE);
lblScore.setHorizontalAlignment(JLabel.CENTER);
add(lblScore, BorderLayout.SOUTH);
//TEST!!!!
timerGeneral = new Timer(30, this);
timerBullet = new Timer(1, this);
}
private void p1Fire()
{
logic.fire(logic.getP1());
p1Fire = true;
timerBullet.start();
}
private void p2Fire()
{
logic.fire(logic.getP2());
p2Fire = true;
timerBullet.start();
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
if(timerBullet.isRunning())
paintBullets(g);
logic.draw(g);
g.setColor(Color.CYAN); //paint borders
g.drawRect(0, 0, W-1, H-1);
}
private void paintBullets(Graphics g)
{
if(p1Fire)
{
int bulletState = logic.getBullet1().fireStep(W, H);
if(bulletState == Bullet.STILL_GO){ // CHANGE 500 TODO
logic.draw(g);
logic.bulletStep(g, bulletState);
}
else{
logic.draw(g);
p1Fire = false;
timerBullet.stop();
}
}
else if(p2Fire)
{
int bulletState = logic.getBullet2().fireStep(W, H);
if(bulletState == Bullet.STILL_GO){ // CHANGE 500 TODO
logic.draw(g);
logic.bulletStep(g, bulletState);
}
else{
logic.draw(g);
p2Fire = false;
timerBullet.stop();
}
}
}
public void start(){
logic.restart();
timerGeneral.start();
System.out.println(getWidth()+" "+getHeight());
}
/*
*
* Actions! Timers, and keyActions will be down here!
*
*/
@Override
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==timerGeneral)
{
if(logic.stepAndOk())
repaint();
else
{
//logic.stepAndOk();
timerGeneral.stop();
System.out.println("FUCK!");
lblScore.setText(logic.getP2Name()+": "+logic.getPlayer2Point()+" "+logic.getP1Name()+": "+logic.getPlayer1Point());
}
repaint();
}
if(e.getSource() == timerBullet)
{
repaint();
}
}
@Override
public void keyPressed(KeyEvent e) {
/*
* Player1 Controls
*/
if(e.getKeyCode() == KeyEvent.VK_SPACE)
{
if(logic.getP1().isCanFire()){
p1Fire();
logic.getP1().setCanFire(false);
}
}
else if(e.getKeyCode() == KeyEvent.VK_DOWN){
if(logic.getP1().getDirection() != Player.UP)
logic.setP1Direction(Player.DOWN);
}
else if(e.getKeyCode() == KeyEvent.VK_UP){
if(logic.getP1().getDirection() != Player.DOWN)
logic.setP1Direction(Player.UP);
}
else if(e.getKeyCode() == KeyEvent.VK_LEFT){
if(logic.getP1().getDirection() != Player.RIGHT)
logic.setP1Direction(Player.LEFT);
}
else if(e.getKeyCode() == KeyEvent.VK_RIGHT){
if(logic.getP1().getDirection() != Player.LEFT)
logic.setP1Direction(Player.RIGHT);
}
/*
* Player2 Controls
*/
if(e.getKeyCode() == KeyEvent.VK_CONTROL)
{
if(logic.getP2().isCanFire()){
p2Fire();
logic.getP2().setCanFire(false);
}
}
else if(e.getKeyCode() == KeyEvent.VK_S){
if(logic.getP2().getDirection() != Player.UP)
logic.setP2Direction(Player.DOWN);
}
else if(e.getKeyCode() == KeyEvent.VK_W){
if(logic.getP2().getDirection() != Player.DOWN)
logic.setP2Direction(Player.UP);
}
else if(e.getKeyCode() == KeyEvent.VK_A){
if(logic.getP2().getDirection() != Player.RIGHT)
logic.setP2Direction(Player.LEFT);
}
else if(e.getKeyCode() == KeyEvent.VK_D){
if(logic.getP2().getDirection() != Player.LEFT)
logic.setP2Direction(Player.RIGHT);
}
if(e.getKeyCode() == KeyEvent.VK_F2)
{
start();
}
}
@Override
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub
}
}