diff --git a/audio/Song.java b/audio/Song.java index 6ec5a2c..c31fd34 100644 --- a/audio/Song.java +++ b/audio/Song.java @@ -165,4 +165,15 @@ public class Song implements Comparable{ } return timesPlayed; } + + public int getHighestScore() + { + int highest = 0; + for(SongInstance s : songs) + { + if(s.getHighestScore() > highest) + highest = s.getHighestScore(); + } + return highest; + } } diff --git a/audio/SongInstance.java b/audio/SongInstance.java index 472b29b..0be1dd6 100644 --- a/audio/SongInstance.java +++ b/audio/SongInstance.java @@ -7,6 +7,7 @@ public class SongInstance { private String difficulty; private int timesPlayed; + private int highestScore; private List objects; private List buttons; @@ -15,6 +16,7 @@ public class SongInstance { { this.difficulty = difficulty; this.timesPlayed = 0; + this.highestScore = 0; objects = new ArrayList(); buttons = new ArrayList(); @@ -94,6 +96,14 @@ public class SongInstance { this.timesPlayed = timesPlayed; } + public int getHighestScore() { + return highestScore; + } + + public void setHighestScore(int highestScore) { + this.highestScore = highestScore; + } + public void played() { timesPlayed++; diff --git a/audio/sorting/SortAUTHOR.java b/audio/sorting/SortAUTHOR.java new file mode 100644 index 0000000..381e2dd --- /dev/null +++ b/audio/sorting/SortAUTHOR.java @@ -0,0 +1,14 @@ +package audio.sorting; + +import java.util.Comparator; + +import audio.Song; + +public class SortAUTHOR implements Comparator { + + @Override + public int compare(Song s1, Song s2) { + return s1.getAuthor().compareTo(s2.getAuthor()); + } + +} diff --git a/audio/sorting/SortSCORE.java b/audio/sorting/SortSCORE.java new file mode 100644 index 0000000..478eadd --- /dev/null +++ b/audio/sorting/SortSCORE.java @@ -0,0 +1,18 @@ +package audio.sorting; + +import java.util.Comparator; + +import audio.Song; + +public class SortSCORE implements Comparator { + + public int compare(Song s1, Song s2) { + if(s1.getHighestScore() < s2.getHighestScore()) + return 1; + else if(s1.getHighestScore() > s2.getHighestScore()) + return -1; + else + return s1.getTitle().compareTo(s2.getTitle()); + } + +} diff --git a/data/io/SQLConnector.java b/data/io/SQLConnector.java index d64956a..b747bfe 100644 --- a/data/io/SQLConnector.java +++ b/data/io/SQLConnector.java @@ -191,6 +191,18 @@ public class SQLConnector } catch (SQLException e) { e.printStackTrace(); } + + Statement st4 = executeResultQuery("SELECT MAX(`score`) as score FROM `highscore` WHERE `songinstance`=(SELECT id FROM songinstance WHERE song=" + id + " AND difficulty='" + si.getDifficulty() + "')"); + try { + ResultSet rs4 = st4.getResultSet(); + if(rs4.next()) + { + int i = rs4.getInt(1); + si.setHighestScore(i); + } + } catch (SQLException e) { + e.printStackTrace(); + } } } else diff --git a/model/gameState/MenuState.java b/model/gameState/MenuState.java index 42ef389..ac53c35 100644 --- a/model/gameState/MenuState.java +++ b/model/gameState/MenuState.java @@ -24,7 +24,9 @@ import model.objects.highscore.Highscore; import audio.Song; import audio.SongInstance; import audio.sorting.SortALPHA; +import audio.sorting.SortAUTHOR; import audio.sorting.SortPLAYED; +import audio.sorting.SortSCORE; import control.GameStateManager; import control.GameStateManager.State; import control.button.ButtonEvent; @@ -102,9 +104,12 @@ public class MenuState extends GameState { else { ButtonHandler.getButton(1).setColor(GameModel.colors[0]); + ButtonHandler.getButton(2).setColor(GameModel.colors[3]); - ButtonHandler.getButton(5).setColor(GameModel.colors[1]); - ButtonHandler.getButton(6).setColor(GameModel.colors[4]); + ButtonHandler.getButton(3).setColor(GameModel.colors[1]); + ButtonHandler.getButton(4).setColor(GameModel.colors[2]); + ButtonHandler.getButton(5).setColor(GameModel.colors[4]); + ButtonHandler.getButton(6).setColor(GameModel.colors[5]); JoystickHandler.REPEAT = true; } @@ -187,19 +192,25 @@ public class MenuState extends GameState { subscreen = true; gsm.init(); generateSubScreenForeground(); - }else if(e.getButton().getButtonID() == 5){ - sh.sort(new SortALPHA()); - selected = 0; - sh.set(songs.indexOf(selectedToSong(selected))); - sh.play(); - }else if(e.getButton().getButtonID() == 6){ - sh.sort(new SortPLAYED()); - selected = 0; - sh.set(songs.indexOf(selectedToSong(selected))); - sh.play(); - }else if(e.getButton().getButtonID() == 3){ + }else if(e.getButton().getButtonID() == 2){ gsm.setState(control.GameStateManager.State.HELP_STATE); } + else + { + if(e.getButton().getButtonID() == 3){ + sh.sort(new SortALPHA()); + }else if(e.getButton().getButtonID() == 4){ + sh.sort(new SortAUTHOR()); + }else if(e.getButton().getButtonID() == 5){ + sh.sort(new SortPLAYED()); + }else if(e.getButton().getButtonID() == 6){ + sh.sort(new SortSCORE()); + } + + selected = 0; + sh.set(songs.indexOf(selectedToSong(selected))); + sh.play(); + } } if(e.getButton().getButtonID() == 0) @@ -334,23 +345,34 @@ public class MenuState extends GameState { //select g2.setColor(GameModel.colors[0]); - g2.fillOval(20, 860, 30, 30); - g2.drawString("Play", 55, 880); + g2.fillOval(20, 780, 30, 30); + g2.drawString("Play", 55, 800); //help g2.setColor(GameModel.colors[3]); - g2.fillOval(20, 900, 30, 30); - g2.drawString("Help", 55, 920); + g2.fillOval(20, 820, 30, 30); + g2.drawString("Help", 55, 840); //letters g2.setColor(GameModel.colors[1]); - g2.fillOval(20, 940, 30, 30); - g2.drawString("A-Z", 55, 960); + g2.fillOval(20, 860, 30, 30); + g2.drawString("A-Z", 55, 880); + + //most played + g2.setColor(GameModel.colors[2]); + g2.fillOval(20, 900, 30, 30); + g2.drawString("Author", 55, 920); //most played g2.setColor(GameModel.colors[4]); + g2.fillOval(20, 940, 30, 30); + g2.drawString("Most Played", 55, 960); + + //most played + g2.setColor(GameModel.colors[5]); g2.fillOval(20, 980, 30, 30); - g2.drawString("Most Played", 55, 1000); + g2.drawString("Highest Score", 55, 1000); + g2.dispose(); mainScreenBackground.createGraphics(); diff --git a/model/gameState/PlayState.java b/model/gameState/PlayState.java index 8c88b18..7774384 100644 --- a/model/gameState/PlayState.java +++ b/model/gameState/PlayState.java @@ -76,11 +76,6 @@ public class PlayState extends GameState { { p.getEnemysInPath().clear(); } - - for (int i = 1; i < ButtonHandler.getButtons().size(); i++) { - Button b = ButtonHandler.getButton(i); - b.setColor(Color.BLACK); - } ButtonHandler.getButton(1).setColor(sh.getCurrentSongInstance().getButtons().get(0).getColor()); @@ -160,7 +155,7 @@ public class PlayState extends GameState { } private void endGame() { - if(sh.getProgress()/1000 < 5000) + if(sh.getProgress()/1000 > 5000) { sql.addPlaydata(sh.getCurrentSong(), sh.getCurrentSongInstance(), sh.getProgress()/1000, enemies_missed, enemies_hit, buttons_pressed, joystick_moved); sh.getCurrentSongInstance().played();