244 lines
4.6 KiB
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
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|