diff --git a/control/GameStateManager.java b/control/GameStateManager.java index 3d84872..32d321e 100644 --- a/control/GameStateManager.java +++ b/control/GameStateManager.java @@ -7,6 +7,7 @@ import java.util.List; import model.SongHandler; import model.gameState.GameOverState; import model.gameState.GameState; +import model.gameState.HelpState; import model.gameState.MenuState; import model.gameState.PlayState; import model.gameState.TitleState; @@ -32,6 +33,7 @@ public class GameStateManager { public enum State { TITLE_STATE, MENU_STATE, + HELP_STATE, PLAY_STATE, GAMEOVER_STATE } @@ -41,6 +43,7 @@ public class GameStateManager { gamestates = new ArrayList(); gamestates.add(new TitleState(this, sh, sql)); gamestates.add(new MenuState(this, sh, sql)); + gamestates.add(new HelpState(this, sh, sql)); gamestates.add(new PlayState(this, sh, sql)); gamestates.add(new GameOverState(this, sh, sql)); setState(State.TITLE_STATE); diff --git a/image/Images.java b/image/Images.java index bf0536b..a6c8b91 100644 --- a/image/Images.java +++ b/image/Images.java @@ -33,6 +33,7 @@ public class Images { images.add(toCompatibleImage(ImageIO.read(Main.class.getResource("/image/aanwijzers4sho.png")))); images.add(toCompatibleImage(ImageIO.read(Main.class.getResource("/image/kast.png")))); images.add(toCompatibleImage(ImageIO.read(Main.class.getResource("/image/gameover.png")))); + images.add(toCompatibleImage(ImageIO.read(Main.class.getResource("/image/help.png")))); } catch (IOException e) { e.printStackTrace(); } @@ -43,7 +44,7 @@ public class Images { } public enum ImageType { - pulse,cursor,pressstart,colorstrike,background,aanwijzers,kast,gameover + pulse,cursor,pressstart,colorstrike,background,aanwijzers,kast,gameover,help } public static BufferedImage readImage(File f) { diff --git a/model/gameState/HelpState.java b/model/gameState/HelpState.java new file mode 100644 index 0000000..81e8256 --- /dev/null +++ b/model/gameState/HelpState.java @@ -0,0 +1,91 @@ +package model.gameState; + +import image.Images; +import image.Images.ImageType; + +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.RenderingHints; +import java.awt.Transparency; +import java.awt.image.BufferedImage; +import java.awt.image.VolatileImage; + +import model.GameModel; +import model.SongHandler; +import control.GameStateManager; +import control.GameStateManager.State; +import control.button.ButtonEvent; +import control.joystick.JoystickEvent; +import data.io.SQLConnector; + +public class HelpState extends GameState { + + BufferedImage help = Images.getImage(ImageType.help); + VolatileImage background; + Font textFontSmall = new Font("OCR A Extended", Font.BOLD, 15); + + + int index = 0; + int frame; + + + public HelpState(GameStateManager gsm, SongHandler sh, SQLConnector sql){ + super(gsm, sh, sql); + createBackground(); + } + + @Override + public void init() { + sh.play(); + } + + @Override + public void update(float factor) { + + frame++; + } + + @Override + public void draw(Graphics2D g2) { + g2.drawImage(background, 0, 0, 1280, 1024, null); + + } + + @Override + public void buttonPressed(ButtonEvent e) { + + if(e.getButton().getButtonID() == 2) { + gsm.setState(State.MENU_STATE); + } + + } + + @Override + public void buttonReleased(ButtonEvent e) { + + } + + @Override + public void onJoystickMoved(JoystickEvent e) { + } + + public void createBackground() { + background = Images.initVolatileImage(1280, 1024, Transparency.OPAQUE); + Graphics2D g2 = background.createGraphics(); + RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + g2.setRenderingHints(rh); + + g2.drawImage(help, 0,0,1280,1024,null); + + g2.setFont(textFontSmall); + + //back + g2.setColor(GameModel.colors[2]); + g2.fillOval(80, 965, 30, 30); + g2.drawString("Back", 115, 985); + + g2.dispose(); + background.createGraphics(); + } + +} diff --git a/model/gameState/MenuState.java b/model/gameState/MenuState.java index b6151bf..58a5499 100644 --- a/model/gameState/MenuState.java +++ b/model/gameState/MenuState.java @@ -46,11 +46,10 @@ public class MenuState extends GameState { private VolatileImage mainScreenBackground, subScreenBackground, subScreenForeground; private int difSelect=0, oldDifSelect = -1; - - Font textFont = new Font("OCR A Extended", Font.BOLD, 50); - Font textFontSmall = new Font("OCR A Extended", Font.BOLD, 15); - Font textFont2 = new Font("OCR A Extended", Font.BOLD, 50); - + Font textFont = new Font("OCR A Extended", Font.BOLD, 50); + Font textFont2 = new Font("OCR A Extended", Font.BOLD, 35); + Font textFont3 = new Font("OCR A Extended", Font.BOLD, 20); + Font textFontSmall = new Font("OCR A Extended", Font.BOLD, 15); BufferedImage aanwijzers = Images.getImage(ImageType.aanwijzers); private int index = 0, @@ -91,17 +90,23 @@ public class MenuState extends GameState { } @Override public void init() { - if(subscreen) { + if(subscreen) + { ButtonHandler.getButton(1).setColor(GameModel.colors[0]); ButtonHandler.getButton(2).setColor(GameModel.colors[2]); generateSubScreenForeground(); - } else { + } + else + { ButtonHandler.getButton(1).setColor(GameModel.colors[0]); - + ButtonHandler.getButton(5).setColor(GameModel.colors[1]); ButtonHandler.getButton(6).setColor(GameModel.colors[4]); JoystickHandler.REPEAT = true; } + + + } @Override @@ -111,14 +116,20 @@ public class MenuState extends GameState { if(animationcounter == 5){ startanimation = false; } + }else if(subscreen){ + //nextScreen(); + }else{ + //previousScreen(); } - if(selected != oldselected){ - for(int i = 0; i < buttons.size(); i++) + for(int i = 0; i < buttons.size(); i++){ buttons.get(i).setSong(selectedToSong(selected+(i-2))); + + } oldselected = selected; } - if(difSelect != oldDifSelect) { + if(difSelect != oldDifSelect) + { oldDifSelect = difSelect; generateSubScreenForeground(); } @@ -130,15 +141,16 @@ public class MenuState extends GameState { public void draw(Graphics2D g2) { buttons.clear(); - buttons.add(new MenuButton(300,260,GameModel.colors[kleurButton1],selectedToSong(selected-2))); - buttons.add(new MenuButton(300,380,GameModel.colors[kleurButton2],selectedToSong(selected-1))); - buttons.add(new MenuButton(260,520,1020,80,GameModel.colors[kleurButton3],selectedToSong(selected))); - buttons.add(new MenuButton(300,680,GameModel.colors[kleurButton4],selectedToSong(selected+1))); - buttons.add(new MenuButton(300,800,GameModel.colors[kleurButton5],selectedToSong(selected+2))); + buttons.add(new MenuButton(400,250,GameModel.colors[kleurButton1],selectedToSong(selected-2))); + buttons.add(new MenuButton(400,390,GameModel.colors[kleurButton2],selectedToSong(selected-1))); + buttons.add(new MenuButton(360,525,920,80,GameModel.colors[kleurButton3],selectedToSong(selected))); + buttons.add(new MenuButton(400,670,GameModel.colors[kleurButton4],selectedToSong(selected+1))); + buttons.add(new MenuButton(400,810,GameModel.colors[kleurButton5],selectedToSong(selected+2))); buttons.get(2).setSelected(true); - + + g2.setColor(Color.BLACK); - + Font textFont2 = new Font("OCR A Extended", Font.BOLD, 50); g2.setFont(textFont2); if(!subscreen) { g2.drawImage(mainScreenBackground, 0, 0, 1280,1024,null); @@ -182,7 +194,9 @@ public class MenuState extends GameState { selected = 0; sh.set(songs.indexOf(selectedToSong(selected))); sh.play(); - } + }else if(e.getButton().getButtonID() == 3){ + gsm.setState(control.GameStateManager.State.HELP_STATE); + } } if(e.getButton().getButtonID() == 0) @@ -233,6 +247,8 @@ public class MenuState extends GameState { kleurButton5++; kleurButton5 %= 6; + + }else if(e.getJoystick().getPos() == Joystick.Position.UP){ selected--; @@ -253,7 +269,7 @@ public class MenuState extends GameState { kleurButton5 = 5; } - else if(e.getJoystick().getPos() == Joystick.Position.CENTER) + else if(e.getJoystick().getPos() == Position.CENTER) { buttons2.clear(); int instanceNr = 0; @@ -303,9 +319,14 @@ public class MenuState extends GameState { //select g2.setColor(GameModel.colors[0]); + g2.fillOval(20, 860, 30, 30); + g2.drawString("Play", 55, 880); + + //help + g2.setColor(GameModel.colors[3]); g2.fillOval(20, 900, 30, 30); - g2.drawString("Play", 55, 920); - + g2.drawString("Help", 55, 920); + //letters g2.setColor(GameModel.colors[1]); g2.fillOval(20, 940, 30, 30); @@ -318,6 +339,8 @@ public class MenuState extends GameState { g2.dispose(); mainScreenBackground.createGraphics(); + + } public void generateSubScreenBackground(){ @@ -351,8 +374,10 @@ public class MenuState extends GameState { g2.setFont(textFont); g2.drawString(selectedToSong(selected).getTitle(), 30, 60); + g2.setFont(textFont3); g2.setColor(Color.WHITE); - g2.drawString("Author: " + selectedToSong(selected).getAuthor(), 30, 200); + g2.drawString("Author: " + selectedToSong(selected).getAuthor(), 30, 100); + g2.setFont(textFont); boolean highscoresFound = true; int HIGHSCORES_TO_DISPLAY = 5; @@ -362,19 +387,25 @@ public class MenuState extends GameState { { highscores = sql.getHighscores(selectedToSong(selected), sh.getCurrentSong().getSongs().get(difSelect)); if(highscores.isEmpty()) + { highscoresFound = false; + } else g2.drawString("All Time Highscores", 30, 300); } else g2.drawString("Daily Highscore", 30, 300); + g2.setFont(textFont2); - if(highscoresFound) { + if(highscoresFound) + { HIGHSCORES_TO_DISPLAY = HIGHSCORES_TO_DISPLAY > highscores.size() ? highscores.size() : HIGHSCORES_TO_DISPLAY; - for(int i = 0; i highscores = sql.getHighscores(selectedToSong(selected), sh.getCurrentSong().getSongs().get(difSelect)); + List dailyHighs = new ArrayList(); + int highest = 0; + int oldHighest = 0; + */ for(DifficultyButton b : buttons2){ b.draw(g2); } @@ -429,6 +465,7 @@ public class MenuState extends GameState { animationcounter++; if(buttons.get(button).getX() >= -200) buttonInAnimation(button+1); + } } }