EDIT: Cut down on the giant first post. Also the second problem has been fixed. When I moved the loadScene, there was no scene to render in the Draw class, hence the NullPointer. But now that the map has been drawn, I am still unable to move around despite having been able to before I changed how the map was drawn.
Draw.java
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.image.BufferStrategy;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Draw extends JFrame{
private static final long serialVersionUID = 1L;
JFrame frame;
Canvas canvas;
BufferStrategy bufferStrategy;
Image background;
Image button;
JPanel battlePane = (JPanel) getContentPane();
Scene scene;
Camera cam;
final int WIDTH = Settings.width;
final int HEIGHT = Settings.heigth;
Draw(){
frame = new JFrame("PlaceHolder");
JPanel panel = (JPanel) frame.getContentPane();
panel.setPreferredSize(new Dimension(WIDTH, HEIGHT));
panel.setLayout(null);
canvas = new Canvas();
canvas.setBounds(0, 0, WIDTH, HEIGHT);
canvas.setIgnoreRepaint(true);
frame.setIgnoreRepaint(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setResizable(true);
frame.setVisible(true);
panel.add(canvas);
canvas.createBufferStrategy(2);
bufferStrategy = canvas.getBufferStrategy();
canvas.requestFocus();
canvas.setBackground(Color.black);
canvas.addKeyListener(new ButtonHandler());
}
void render() throws IOException {
Graphics2D g = (Graphics2D) bufferStrategy.getDrawGraphics();
g.clearRect(0, 0, WIDTH, HEIGHT);
scene = Scene.loadScene("scenes/datTestMap.dat");
scene.render(g);
g.dispose();
bufferStrategy.show();
}
void renderMenu(){
//int flicker = 0;
Graphics2D g = (Graphics2D) bufferStrategy.getDrawGraphics();
g.clearRect(0, 0, WIDTH, HEIGHT);
g.drawString(" PRESS ENTER TO START ", WIDTH/2 - 70, HEIGHT/2 - 5);
g.drawRect(WIDTH/4, HEIGHT/4, WIDTH/2, HEIGHT/2);
g.dispose();
bufferStrategy.show();
}
void renderBattle(){
try{
File pic = new File("bg.jpg");
File b = new File("Button.jpg");
background = ImageIO.read(pic);
button = ImageIO.read(b);
}catch (IOException e){
System.out.println("!");
}
//Image image = Toolkit.getDefaultToolkit().getImage("Button.jpg");
//image = new ImageIcon("Button.jpg").getImage();
JButton testButton = new JButton("Fight!");
Graphics2D g = (Graphics2D) bufferStrategy.getDrawGraphics();
g.clearRect(0, 0, WIDTH, HEIGHT);
//Draws background
//g.drawImage(background, 0, 0, null);
frame.getContentPane().add(testButton);
testButton.setLocation(300, 300);
g.drawString(" FIGHT BITCHES! ", HEIGHT-20, 20);
//Draws Fight button
g.drawRect(400, 400, Instances.button.getWidth(), Instances.button.getHeight());
g.drawImage(button, 400, 400, null);
g.drawString("FIGHT", 425, 415);
//Draws Flee button
g.drawRect(400, 425, Instances.button.getWidth(), Instances.button.getHeight());
g.drawImage(button, 400, 425, null);
g.drawString("FLEE", 425, 440);
bufferStrategy.show();
g.dispose();
}
protected void render(Graphics2D g){
//g.drawImage(Instances.mapMan.getMap(), 0-Instances.camera.getX(), 0-Instances.camera.getY(), null);
try {
scene = Scene.loadScene("scenes/datTestMap");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//scene.render(g);
g.setColor(Instances.player.getColor());
g.fillRect(Instances.player.getX()-Instances.camera.getX(), Instances.player.getY()-Instances.camera.getY(), 15, 15);
}
}
ButtonHandler.java
import java.io.IOException;
import javax.sound.sampled.Clip;
imporimport java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class ButtonHandler extends KeyAdapter {
public ButtonHandler() {
System.out.println(" Button handler initialized! ");
}
public void keyPressed(KeyEvent key) {
switch (key.getKeyCode()) {
case KeyEvent.VK_UP:
Instances.player.setUp(true);
break;
case KeyEvent.VK_DOWN:
Instances.player.setDown(true);
break;
case KeyEvent.VK_LEFT:
Instances.player.setLeft(true);
break;
case KeyEvent.VK_RIGHT:
Instances.player.setRight(true);
break;
case KeyEvent.VK_ENTER:
if(Instances.GAMESTATE == GameState.INGAME){
Instances.GAMESTATE = GameState.BATTLE;
System.out.println(Instances.GAMESTATE);
}else if(Instances.GAMESTATE == GameState.MENU){
Instances.GAMESTATE = GameState.INGAME;
System.out.println(Instances.GAMESTATE);
}else if(Instances.GAMESTATE == GameState.BATTLE){
Instances.GAMESTATE = GameState.INGAME;
System.out.println(Instances.GAMESTATE);
}
break;
case KeyEvent.VK_SPACE:
System.out.println(Instances.GAMESTATE);
if(Instances.GAMESTATE == GameState.BATTLE){
Instances.battle.startFight();
}
break;
case KeyEvent.VK_1:
Instances.mapMan.setMap("map1");
break;
case KeyEvent.VK_2:
Instances.mapMan.setMap("map2");
break;
case KeyEvent.VK_3:
Instances.mapMan.setMap("map3");
break;
}
}
public void keyReleased(KeyEvent key) {
switch (key.getKeyCode()) {
case KeyEvent.VK_UP:
Instances.player.setUp(false);
System.out.println(" Released UP!");
break;
case KeyEvent.VK_DOWN:
System.out.println(" Released DOWN!");
Instances.player.setDown(false);
break;
case KeyEvent.VK_LEFT:
System.out.println(" Released LEFT!");
Instances.player.setLeft(false);
break;
case KeyEvent.VK_RIGHT:
System.out.println(" Released RIGHT!");
Instances.player.setRight(false);
break;
}
}
@Override
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub
}
}
Throwing this link out there as a test, not sure if anybody can access it, but if so then woot!
https://bitbucket.org/DatGameCompany/westernrpg/src/6e7593f88105/src