Przeglądaj źródła

Merge pull request #23 from ProjectGroepA2/feature/sorting

Feature/sorting
Kenneth van Ewijk 10 lat temu
rodzic
commit
5480476837

+ 11 - 0
audio/Song.java

@@ -165,4 +165,15 @@ public class Song implements Comparable<Song>{
 		}
 		return timesPlayed;
 	}
+	
+	public int getHighestScore()
+	{
+		int highest = 0;
+		for(SongInstance s : songs)
+		{
+			if(s.getHighestScore() > highest)
+				highest = s.getHighestScore();
+		}
+		return highest;
+	}
 }

+ 10 - 0
audio/SongInstance.java

@@ -7,6 +7,7 @@ public class SongInstance {
 
 	private String difficulty;
 	private int timesPlayed;
+	private int highestScore;
 	
 	private List<ObjectInstance> objects;
 	private List<ButtonInstance> buttons;
@@ -15,6 +16,7 @@ public class SongInstance {
 	{
 		this.difficulty = difficulty;
 		this.timesPlayed = 0;
+		this.highestScore = 0;
 		
 		objects = new ArrayList<ObjectInstance>();
 		buttons = new ArrayList<ButtonInstance>();
@@ -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++;

+ 14 - 0
audio/sorting/SortAUTHOR.java

@@ -0,0 +1,14 @@
+package audio.sorting;
+
+import java.util.Comparator;
+
+import audio.Song;
+
+public class SortAUTHOR implements Comparator<Song> {
+
+	@Override
+	public int compare(Song s1, Song s2) {
+		return s1.getAuthor().compareTo(s2.getAuthor());
+	}
+
+}

+ 18 - 0
audio/sorting/SortSCORE.java

@@ -0,0 +1,18 @@
+package audio.sorting;
+
+import java.util.Comparator;
+
+import audio.Song;
+
+public class SortSCORE implements Comparator<Song> {
+
+	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());
+	}
+
+}

+ 12 - 0
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

+ 40 - 18
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,18 +192,24 @@ 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());
+			}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();	
-			}else if(e.getButton().getButtonID() == 3){
-				gsm.setState(control.GameStateManager.State.HELP_STATE);
 			}
 		}
 		
@@ -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();

+ 1 - 6
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();