I’ve been working on figuring out how to render maps, sprites and various other things to a JPanel and it’s been working great so-far but I just ran into a snag. For some reason, even though the code is running (I’ve done some println checks), nothing is being painted to the screen. If anyone can see where I messed up that’ll help.
I was thinking that the problem is with the while() loops but they’re working so that left me with checking the SpriteLoader and MapLoader classes but they’re working fine as well. I also checked that I was repainting the JPanel every time and I was so that wasn’t the problem. Now I’ve run out of ideas for what the problem could be. =/
Edit: There are no error messages when compiling either.
package Interface;
import Functions.KeyboardListener;
import Functions.MapLoader;
import Functions.SpriteLoader;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import javax.swing.JPanel;
public class Game extends JPanel
{
private KeyboardListener keyboard;
private int spriteCounter = 0;
private int loopCounter = 0;
private boolean gamePaused = false, inventoryScreenPaused = true;
public Game()
{
keyboard = new KeyboardListener();
addKeyListener(keyboard);
setFocusable(true);
setDoubleBuffered(true);
}
public void paint(Graphics g)
{
//Check which screen to render.
if(keyboard.getInventory() == true)
{
gamePaused = true;
inventoryScreenPaused = false;
}
super.paint(g);
Graphics2D graphics = (Graphics2D) g;
RenderingHints renderingHints = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
renderingHints.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
graphics.setRenderingHints(renderingHints);
while(gamePaused == false)
{
int width = 10;
int height = 10;
//Render Map
MapLoader mapLoader = new MapLoader(); //THIS SHOULD BE GIVEN TO THIS CLASS FROM ANOTHER CLASS SUCH AS THE GAME LOOP SO IT DOESN'T NEED A BAZILLION COPYS OF THE MAPLOADER CLASS.
int map[][] = mapLoader.loadMap("TestMap", 0, 0);
for(int row = 0; row < height; row++)
{
for(int column = 0; column < width; column++)
{
if(map[column][row] == -1237980) //To change the movement speed just times all of the .getXpos and .getYpos parts by a speed multiplier
{
graphics.setColor(Color.RED);
graphics.fillRect(column*40 - keyboard.getXpos(), row*40 - keyboard.getYpos(), 40, 40);
}
else if(map[column][row] == -3584)
{
graphics.setColor(Color.YELLOW);
graphics.fillRect(column*40 - keyboard.getXpos(), row*40 - keyboard.getYpos(), 40, 40);
}
else if(map[column][row] == -16735512)
{
graphics.setColor(Color.BLUE);
graphics.fillRect(column*40 - keyboard.getXpos(), row*40 - keyboard.getYpos(), 40, 40);
}
}
}
//Render Player
SpriteLoader spriteLoader = new SpriteLoader();
if (keyboard.getWalking() == false)
{
spriteCounter = 0;
}
else if(keyboard.getWalking() == true && spriteCounter == 0)
{
spriteCounter = 1;
}
int direction = keyboard.getDirection();
if (spriteCounter == 0 && keyboard.getWalking() == false)
{
switch (direction)
{
case 0:
graphics.drawImage(spriteLoader.loadSprite("Left_Idle"), 628, 499, this);
break;
case 1:
graphics.drawImage(spriteLoader.loadSprite("Up_Idle"), 628, 499, this);
break;
case 2:
graphics.drawImage(spriteLoader.loadSprite("Right_Idle"), 628, 499, this);
break;
case 3:
graphics.drawImage(spriteLoader.loadSprite("Down_Idle"), 628, 499, this);
break;
}
}
else if (spriteCounter == 1 && keyboard.getWalking() == true)
{
switch (direction)
{
case 0:
graphics.drawImage(spriteLoader.loadSprite("Left_Two"), 628, 499, this);
if(loopCounter >= 16)
{
spriteCounter++;
loopCounter = 0;
}
break;
case 1:
graphics.drawImage(spriteLoader.loadSprite("Up_One"), 628, 499, this);
if(loopCounter >= 16)
{
spriteCounter++;
loopCounter = 0;
}
break;
case 2:
graphics.drawImage(spriteLoader.loadSprite("Right_Two"), 628, 499, this);
if(loopCounter >= 16)
{
spriteCounter++;
loopCounter = 0;
}
break;
case 3:
graphics.drawImage(spriteLoader.loadSprite("Down_One"), 628, 499, this);
if(loopCounter >= 16)
{
spriteCounter++;
loopCounter = 0;
}
break;
}
}
else if (spriteCounter == 2 && keyboard.getWalking() == true)
{
switch (direction)
{
case 0:
graphics.drawImage(spriteLoader.loadSprite("Left_Idle"), 628, 499, this);
if(loopCounter >= 16)
{
spriteCounter++;
loopCounter = 0;
}
break;
case 1:
graphics.drawImage(spriteLoader.loadSprite("Up_Idle"), 628, 499, this);
if(loopCounter >= 16)
{
spriteCounter++;
loopCounter = 0;
}
break;
case 2:
graphics.drawImage(spriteLoader.loadSprite("Right_Idle"), 628, 499, this);
if(loopCounter >= 16)
{
spriteCounter++;
loopCounter = 0;
}
break;
case 3:
graphics.drawImage(spriteLoader.loadSprite("Down_Idle"), 628, 499, this);
if(loopCounter >= 16)
{
spriteCounter++;
loopCounter = 0;
}
break;
}
}
else if (spriteCounter == 3 && keyboard.getWalking() == true)
{
switch (direction)
{
case 0:
graphics.drawImage(spriteLoader.loadSprite("Left_One"), 628, 499, this);
if(loopCounter >= 16)
{
spriteCounter = 1;
loopCounter = 0;
}
break;
case 1:
graphics.drawImage(spriteLoader.loadSprite("Up_Two"), 628, 499, this);
if(loopCounter >= 16)
{
spriteCounter = 1;
loopCounter = 0;
}
break;
case 2:
graphics.drawImage(spriteLoader.loadSprite("Right_One"), 628, 499, this);
if(loopCounter >= 16)
{
spriteCounter = 1;
loopCounter = 0;
}
break;
case 3:
graphics.drawImage(spriteLoader.loadSprite("Down_Two"), 628, 499, this);
if(loopCounter >= 16)
{
spriteCounter = 1;
loopCounter = 0;
}
break;
}
}
loopCounter++;
repaint();
//Cleanup
graphics.dispose();
}
while(inventoryScreenPaused == false)
{
SpriteLoader spriteLoader = new SpriteLoader();
graphics.drawImage(spriteLoader.loadImage("TestInventory_Main"), 628, 499, this);
repaint();
}
}
}