Reputation: 43
i have a image that's the pause menu. it has an exit button. when the exit button is pressed, a dialog appears. this is what i want.
so, i have an image, and i set the x and y position of where the mouse should be clicked so then the dialog will appear. i want to do something like:
public void update(GameContainer gc, StateBasedGame sbg, int delta) throws SlickException {
Input input = gc.getInput();
int xpos = Mouse.getX();
int ypos = Mouse.getY();
if ((xpos > 200 && xpos < 250) && (ypos > 230 && ypos < 260)) {
if (input.isMousePressed(0)) {
g.drawImage("res/Exit Confirmation.png", 200, 400)
}
I know the code above cannot be like that. but is there a way that is similar to that?
Here is the code:
import org.lwjgl.input.Mouse;
import org.newdawn.slick.*;
import org.newdawn.slick.state.*;
public class Menu extends BasicGameState {
public Menu(int state) {
}
public void init(GameContainer gc, StateBasedGame sbg) throws SlickException {
}
public void render(GameContainer gc, StateBasedGame sbg, Graphics g) throws SlickException {
Image background = new Image("res/Background.png");
g.drawImage(background, 0, 0);
Image play = new Image("res/Play Button.png");
g.drawImage(play, 275, 50);
Image exit = new Image("res/Exit Button.png");
g.drawImage(exit, 210, 250);
}
public void update(GameContainer gc, StateBasedGame sbg, int delta) throws SlickException {
Input input = gc.getInput();
int xpos = Mouse.getX();
int ypos = Mouse.getY();
if ((xpos > 300 && xpos < 510) && (ypos > 230 && ypos < 260)) {
if (input.isMousePressed(0)) {
sbg.enterState(2); //this will take me to the game.
}
if ((xpos > 200 && xpos < 250) && (ypos > 230 && ypos < 260)) {
//i want this to actually show up a confirmation dialog with my image.
}
}
}
public int getID() {
return 1;
}
}
Please help. Thanks.
Upvotes: 3
Views: 2317
Reputation: 5999
Ok, it appears you have several conceptual problems. Let me see if I can help.
Here is the code (although I didn't test it, but should be close):
import org.lwjgl.input.Mouse;
import org.newdawn.slick.*;
import org.newdawn.slick.state.*;
public class Menu extends BasicGameState {
Image background;
Image play;
Image exit;
Boolean exiting;
public Menu(int state) {
exiting = false;
}
public void init(GameContainer gc, StateBasedGame sbg) throws SlickException {
Image background = new Image("res/Background.png");
Image play = new Image("res/Play Button.png");
Image exit = new Image("res/Exit Button.png");
}
public void render(GameContainer gc, StateBasedGame sbg, Graphics g) throws SlickException {
g.drawImage(background, 0, 0);
g.drawImage(play, 275, 50);
if(exiting)
g.drawImage(exit, 210, 250);
}
@Override
public void mousePressed(int button, int x, int y)
{
if( button == 0 )
{
if ((x > 300 && x < 510) && (y > 230 && y < 260))
sbg.enterState(2); //this will take me to the game.
else if ((x > 200 && x < 250) && (y > 230 && y < 260))
exiting = true;
}
}
public void update(GameContainer gc, StateBasedGame sbg, int delta) throws SlickException {
}
public int getID() {
return 1;
}
}
Upvotes: 2