Browse Source

Merge remote-tracking branch 'origin/develop' into develop

Conflicts:
	image/Images.java
	model/gameState/TitleState.java
Dofensmirtsz 10 năm trước cách đây
mục cha
commit
44f50f2698

+ 6 - 1
audio/Song.java

@@ -12,7 +12,7 @@ import javax.sound.sampled.AudioInputStream;
 import javax.sound.sampled.AudioSystem;
 import javax.sound.sampled.UnsupportedAudioFileException;
 
-public class Song {
+public class Song implements Comparable<Song>{
 
 	private String title;
 	private String subtitle;
@@ -150,4 +150,9 @@ public class Song {
 	public void close()
 	{
 	}
+
+	@Override
+	public int compareTo(Song s) {
+		return getTitle().compareTo(s.getTitle());
+	}
 }

+ 1 - 1
audio/SongInstance.java

@@ -66,7 +66,7 @@ public class SongInstance {
 		
 		for(ButtonInstance i : buttons)
 		{
-			if(i.getTime() >= progress)
+			if(i.getTime() > progress)
 			{
 				return b;
 			}

+ 6 - 2
audio/io/JSONReader.java

@@ -57,15 +57,19 @@ public class JSONReader {
 			throw new FileNotFoundException("Audio file does not exist: " + audio.getPath());
 		s.setAudio(audio);
 		
+		/*
 		File background = new File(f.getParent() + File.separator + file.getString("background"));
 		if(!background.exists() || !(background.getName().toLowerCase().endsWith(".jpg") || background.getName().toLowerCase().endsWith(".png")))
 			throw new FileNotFoundException("Background image does not exist: " + background.getPath());
-		s.setBackground(background);
+		s.setBackground(background);*/
+		s.setBackground(null);
 
+		/*
 		File banner = new File(f.getParent() + File.separator + file.getString("banner"));
 		if(!banner.exists() || !(banner.getName().toLowerCase().endsWith(".jpg") || banner.getName().toLowerCase().endsWith(".png")))
 			throw new FileNotFoundException("Banner image does not exist: " + banner.getPath());
-		s.setBanner(banner);
+		s.setBanner(banner);*/
+		s.setBanner(null);
 		
 		s.setFile(f);
 		

+ 14 - 0
audio/sorting/SortALPHA.java

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

+ 14 - 0
audio/sorting/SortPLAYED.java

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

+ 12 - 2
control/GameControl.java

@@ -2,7 +2,6 @@ package control;
 
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
-import java.util.TimerTask;
 
 import javax.swing.Timer;
 
@@ -29,6 +28,18 @@ public class GameControl implements JoystickListener, ButtonListener, ActionList
 		view.setIgnoreRepaint(true);
 		update = new Timer(1000/60,this);
 		update.start();
+//		Timer update = new Timer();
+//		update.schedule(new TimerTask() {
+//			
+//			@Override
+//			public void run() {
+//				long currentTime = System.currentTimeMillis();
+//				model.update(currentTime - lastTime);
+//				lastTime = currentTime;
+//				view.repaint();			
+//				System.out.println("Test");
+//			}
+//		}, 0,1000/120);
 	}
 
 	@Override
@@ -55,5 +66,4 @@ public class GameControl implements JoystickListener, ButtonListener, ActionList
 		lastTime = currentTime;
 		view.repaint();				
 	}
-
 }

+ 15 - 3
control/GameStateManager.java

@@ -1,5 +1,6 @@
 package control;
 
+import java.awt.Color;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -8,6 +9,8 @@ import model.gameState.GameState;
 import model.gameState.MenuState;
 import model.gameState.PlayState;
 import model.gameState.TitleState;
+import control.button.Button;
+import control.button.ButtonHandler;
 
 public class GameStateManager {
 
@@ -27,24 +30,33 @@ public class GameStateManager {
 		gamestates.add(new TitleState(this, sh));
 		gamestates.add(new MenuState(this, sh));
 		gamestates.add(new PlayState(this, sh));
-		currentState = gamestates.get(0);
+		setState(State.TITLE_STATE);
 	}
 	
 	public void setState(State st)
 	{
 		currentState = gamestates.get(st.ordinal());
-		currentState.init();
+		init();
 	}
 
 	public void next() {
 		index++;
 		index %= gamestates.size();
 		currentState = gamestates.get(index);
-		currentState.init();
+		init();
 	}
 	
 	public void update(float factor){		
 		currentState.update(factor);
 		fps = (int) (60/(factor/10));
 	}
+	
+	public void init()
+	{
+		for (int i = 1; i < ButtonHandler.getButtons().size(); i++) {
+			Button b = ButtonHandler.getButton(i);
+			b.setColor(Color.BLACK);
+		}
+		currentState.init();
+	}
 }

+ 1 - 4
control/LedHandler.java

@@ -15,10 +15,7 @@ public class LedHandler {
 	    try {
 	        p = Runtime.getRuntime().exec("sudo python led.py");
 	        inp = new BufferedReader( new InputStreamReader(p.getInputStream()) );
-	        out = new BufferedWriter( new OutputStreamWriter(p.getOutputStream()) );
-	        
-	        //setLed(15, 100, 100, 100);	        
-	        //strobo();        
+	        out = new BufferedWriter( new OutputStreamWriter(p.getOutputStream()) );      
 	    }
 	    catch (Exception err) {
 	        err.printStackTrace();

+ 1 - 3
image/Images.java

@@ -31,8 +31,6 @@ public class Images {
 			images.add(toCompatibleImage(ImageIO.read(Main.class.getResource("/image/colorstrike.png")))); 
 		   	images.add(toCompatibleImage(ImageIO.read(Main.class.getResource("/image/background.png"))));
 		   	images.add(toCompatibleImage(ImageIO.read(Main.class.getResource("/image/aanwijzers4sho.png"))));
-		   	images.add(toCompatibleImage(ImageIO.read(Main.class.getResource("/image/MenuAchtergrond.png"))));
-		   	images.add(toCompatibleImage(ImageIO.read(Main.class.getResource("/image/SubmenuAchtergrond.png"))));
 		   	images.add(toCompatibleImage(ImageIO.read(Main.class.getResource("/image/kast.png"))));
 		} catch (IOException e) {
 			e.printStackTrace();
@@ -44,7 +42,7 @@ public class Images {
 	}
 
 	public enum ImageType {
-		pulse,cursor,pressstart,colorstrike,background,aanwijzers,menuachtergrond,subMenu,kast
+		pulse,cursor,pressstart,colorstrike,background,aanwijzers,kast
 	}
 
 	public static BufferedImage readImage(File f) {

BIN
image/MenuAchtergrond.png


BIN
image/SubmenuAchtergrond.png


+ 1 - 1
main/Window.java

@@ -61,7 +61,7 @@ public class Window extends JFrame {
 		final SongHandler sh = new SongHandler();
 		GameStateManager gsm = new GameStateManager(sh);
 		GameView view = new GameView(led,gsm);
-		GameModel model = new GameModel(sh, gsm);
+		GameModel model = new GameModel(sh, gsm, led);
 		GameControl control = new GameControl(model, view,gsm);
 		setContentPane(view);
 		

+ 30 - 11
model/GameModel.java

@@ -2,24 +2,43 @@ package model;
 
 import java.awt.Color;
 
+import main.Window;
 import control.GameStateManager;
+import control.LedHandler;
 import control.button.ButtonHandler;
 
-public class GameModel{
-	
-	public static Color[] colors = {Color.GREEN,Color.YELLOW,Color.RED,Color.MAGENTA,Color.CYAN,Color.WHITE};
+public class GameModel {
+
+	public static Color[] colors = { Color.GREEN, Color.YELLOW, Color.RED, Color.MAGENTA, Color.CYAN, Color.WHITE };
 	private GameStateManager gsm;
-	
-	public GameModel(SongHandler sh, GameStateManager gsm)
-	{
+	private LedHandler led;
+	private int count = 0;
+
+	public GameModel(SongHandler sh, GameStateManager gsm, LedHandler led) {
 		this.gsm = gsm;
-		
-		for(int i = 1; i < ButtonHandler.getButtons().size(); i++){
-			ButtonHandler.getButtons().get(i).setColor(colors[i-1]);;
+		this.led = led;
+
+		for (int i = 1; i < ButtonHandler.getButtons().size(); i++) {
+			ButtonHandler.getButtons().get(i).setColor(colors[i - 1]);
+			;
 		}
 	}
-	
-	public void update(float factor){	
+
+	public void update(float factor) {
 		gsm.update(factor);
+
+		Color c = colors[(int) (Math.random() * (colors.length - 1) + 1)];
+
+		if (Window.ON_RASP) {
+			count++;
+			if(count>15)
+			{
+				for (int i = 7; i < 54; i++) {
+					led.setLed(i, c.getRed(), c.getGreen(), c.getBlue());
+				}
+				led.show();
+				count = 0;
+			}
+		}
 	}
 }

+ 11 - 1
model/SongHandler.java

@@ -2,6 +2,8 @@ package model;
 
 import java.io.File;
 import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.List;
 
 import main.Window;
@@ -9,6 +11,7 @@ import audio.AudioPlayer;
 import audio.Song;
 import audio.SongInstance;
 import audio.io.DirScanner;
+import audio.sorting.SortALPHA;
 
 public class SongHandler {
 	
@@ -38,7 +41,9 @@ public class SongHandler {
 			dir = new File(System.getProperty( "user.home" ) + "/Documents/songs/");
 		
 		songs = DirScanner.scanDirectories(dir);
-		System.out.println(songs.size());
+		
+		Collections.sort(songs, new SortALPHA());
+		
 		updatePlayer();
 	}
 	
@@ -109,5 +114,10 @@ public class SongHandler {
 		p.play();
 	}
 	
+	public void sort(Comparator<Song> sorter)
+	{
+		Collections.sort(songs, sorter);
+	}
+	
 	
 }

+ 54 - 14
model/gameState/MenuState.java

@@ -3,6 +3,7 @@ package model.gameState;
 import image.Images;
 import image.Images.ImageType;
 
+import java.awt.AlphaComposite;
 import java.awt.Color;
 import java.awt.Font;
 import java.awt.GradientPaint;
@@ -21,8 +22,11 @@ import model.objects.DifficultyButton;
 import model.objects.MenuButton;
 import audio.Song;
 import audio.SongInstance;
+import audio.sorting.SortALPHA;
+import audio.sorting.SortPLAYED;
 import control.GameStateManager;
 import control.button.ButtonEvent;
+import control.button.ButtonHandler;
 import control.joystick.Joystick;
 import control.joystick.JoystickEvent;
 
@@ -34,7 +38,7 @@ public class MenuState extends GameState {
 
 	private int animationcounter;
 	private boolean subscreen, startanimation;
-	private VolatileImage mainScreenBackground, subScreenBackground;
+	private VolatileImage mainScreenBackground, subScreenBackground, subScreenForeground;
 	
 	int yPosDiffButton = 900;
 	private int difSelect=0;
@@ -42,9 +46,6 @@ public class MenuState extends GameState {
 	BufferedImage aanwijzers = Images.getImage(ImageType.aanwijzers);
 	int index = 0;
 	
-	BufferedImage menuAchtergrond = Images.getImage(ImageType.menuachtergrond);
-	BufferedImage subMenu = Images.getImage(ImageType.subMenu);
-	
 	public MenuState(GameStateManager gsm, SongHandler sh) {	
 		super(gsm, sh);
 		buttons = new ArrayList<MenuButton>();
@@ -59,11 +60,16 @@ public class MenuState extends GameState {
 		buttons.add(new MenuButton(-600, 350, 1.7, 30, Color.yellow,selectedToSong(selected+1)));
 		buttons.add(new MenuButton(-600, 450, 1.7, 30, Color.WHITE,selectedToSong(selected+2)));
 		buttons.get(2).setSelected(true);
-		generateMainScreenBackground();		
+		generateMainScreenBackground();	
+		generateSubScreenBackground();
 	}
 	@Override
 	public void init() {
+		ButtonHandler.getButton(1).setColor(GameModel.colors[0]);
+		ButtonHandler.getButton(2).setColor(GameModel.colors[2]);
 		
+		ButtonHandler.getButton(5).setColor(GameModel.colors[1]);
+		ButtonHandler.getButton(6).setColor(GameModel.colors[4]);
 	}
 
 	@Override
@@ -96,7 +102,6 @@ public class MenuState extends GameState {
 	 			buttons2.add(new DifficultyButton(yPosDiffButton-instanceNr,si.getDifficulty(), GameModel.colors[i-1]));
 	 			instanceNr += 100;
 	 		}
-	 		
 	     }
 	     index++;
 	}
@@ -111,6 +116,7 @@ public class MenuState extends GameState {
 		}
 		if(subscreen) {
 			g2.drawImage(subScreenBackground,0,0,1280,1024,null);
+			g2.drawImage(subScreenForeground,0,0,1280,1024,null);
 			index%=25;
 			int y = (index/5)*75;
 			int x = (index%5)*75;
@@ -131,9 +137,17 @@ public class MenuState extends GameState {
 		}else{										//Screen for selecting song
 			if(e.getButton().getButtonID() == 1){
 				subscreen = true;
-				generateSubScreenBackground();
+				generateSubScreenForeground();
 			}else if(e.getButton().getButtonID() == 2){
 				subscreen = false;
+			}else if(e.getButton().getButtonID() == 5){
+				sh.sort(new SortALPHA());
+				oldselected = 1;
+				selected = 0;
+			}else if(e.getButton().getButtonID() == 6){
+				sh.sort(new SortPLAYED());
+				oldselected = 1;
+				selected = 0;
 			}	
 		}
 	}
@@ -157,7 +171,7 @@ public class MenuState extends GameState {
 				}
 			}
 			sh.set(sh.getCurrentSong().getSongs().get(difSelect));	
-			generateSubScreenBackground();			
+			generateSubScreenForeground();			
 		}else{										//Screen for selecting song
 			if(e.getJoystick().getPos() == Joystick.Position.DOWN){
 				selected++;
@@ -175,7 +189,16 @@ public class MenuState extends GameState {
 		RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
 	    g2.setRenderingHints(rh);
 		g2.setFont(textFont2);
-		g2.drawImage(menuAchtergrond,0,0,1280,1024,null);
+		g2.setPaint(new GradientPaint(0, 0, new Color(0,0,1, 0.6f),1280,1024 ,new Color(0,0,1, 0.2f)));
+		g2.fillRect(0, 0, 1280, 1024);	
+		g2.setPaint(new GradientPaint(0, 0, new Color(1,1,0, 0.6f),1280,1024 ,new Color(0,0,1, 0.2f)));
+		
+	 
+		Polygon triangle2 = new Polygon(); 
+		triangle2.addPoint(0, 0);
+		triangle2.addPoint(0, 1024/4+50);
+		triangle2.addPoint(1280/2+50, 0);
+		g2.fillPolygon(triangle2);
 		
 		g2.setColor(Color.ORANGE);
 		Polygon triangle = new Polygon();
@@ -195,13 +218,30 @@ public class MenuState extends GameState {
 		Graphics2D g2 = subScreenBackground.createGraphics();
 		RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
 	    g2.setRenderingHints(rh);
-		g2.setFont(textFont2);
 	    g2.setColor(Color.BLACK);
-	    g2.drawImage(subMenu, 0, 0, 1280, 1024, null);
-	    
+		GradientPaint gp3 = new GradientPaint(640, 1024/8,Color.BLUE,640,1024 ,Color.WHITE);
+		g2.setPaint(gp3);
+		g2.fillRect(0, 0, 1280, 1024);
+		GradientPaint gp4 = new GradientPaint(0, 0,new Color(1,1,0,0.6f),1280,1024,new Color(1,1,1,0.2f));
+		g2.setPaint(gp4);
+		g2.fillRect(0,128,1280,25);
 		g2.setColor(Color.ORANGE);
 		g2.fillRect(0, 0, 1280, 1024/8);
 		g2.setColor(Color.BLACK);
+		g2.dispose();
+		subScreenBackground.createGraphics();
+	}
+	
+	public void generateSubScreenForeground(){
+		subScreenForeground = Images.initVolatileImage(1280, 1024, Transparency.TRANSLUCENT);
+		Graphics2D g2 = subScreenForeground.createGraphics();
+		RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+		g2.setComposite(AlphaComposite.DstOut);
+		g2.fillRect(0, 0, subScreenForeground.getWidth(), subScreenForeground.getHeight());
+		g2.setComposite(AlphaComposite.SrcOver);
+	    g2.setRenderingHints(rh);
+	    g2.setColor(Color.BLACK);
+ 		g2.setFont(textFont2);
 		g2.drawString(selectedToSong(selected).getTitle(), 30, 60);
 		
 		
@@ -213,8 +253,8 @@ public class MenuState extends GameState {
 		for(DifficultyButton b : buttons2){
 			b.draw(g2);
 		}
-		g2.dispose();
-		subScreenBackground.createGraphics();
+	    g2.dispose();
+	    subScreenForeground.createGraphics();
 	}
 	
 	public void buttonInAnimation(int button){

+ 58 - 32
model/gameState/PlayState.java

@@ -16,6 +16,7 @@ import model.objects.PlayArea;
 import audio.ButtonInstance;
 import audio.ObjectInstance;
 import control.GameStateManager;
+import control.GameStateManager.State;
 import control.button.Button;
 import control.button.ButtonEvent;
 import control.button.ButtonHandler;
@@ -23,8 +24,7 @@ import control.joystick.JoystickEvent;
 
 public class PlayState extends GameState {
 
-	public static final Rectangle2D borderRect = new Rectangle2D.Double(256, 0,
-			1024, 1024);
+	public static final Rectangle2D borderRect = new Rectangle2D.Double(256, 0, 1024, 1024);
 	private PlayArea area;
 	private InfoPanel infoPanel;
 	private Player player;
@@ -32,7 +32,8 @@ public class PlayState extends GameState {
 
 	public static int sizeOfEnemy = 40;
 	public static int currentScore = 0;
-	public static int lifePoints = 100;
+	public static int comboScore = 0;
+	public static double lifePoints = 100;
 
 	private long oldProgress = 0;
 
@@ -40,55 +41,57 @@ public class PlayState extends GameState {
 		super(gsm, sh);
 		infoPanel = new InfoPanel(0, 0);
 		area = new PlayArea(256, 1024, 1024, 125);
-		// for(int index = 0; index < 8; index++){
-		// addEnemy(index, GameModel.colors[index % 6]);
-		// }
-		//
 		player = new Player(1280 - 1024 + 1024 / 2, 1024 / 2);
-		stroke = new BasicStroke(sizeOfEnemy, BasicStroke.CAP_ROUND,
-				BasicStroke.JOIN_ROUND);
+		stroke = new BasicStroke(sizeOfEnemy, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND);
 	}
 
 	@Override
 	public void init() {
+		
+		lifePoints = 100;
+		currentScore = 0;
+		comboScore = 0;
+		oldProgress = 0 ;
+		
+		for(Path p : area.paths)
+		{
+			p.getEnemysInPath().clear();
+		}
+		
 		try {
 			Thread.sleep(2000);
 		} catch (InterruptedException e) {
 			e.printStackTrace();
 		}
-		
+
 		sh.play();
 
-		for(int i=1; i<ButtonHandler.getButtons().size(); i++)
-		{
+		for (int i = 1; i < ButtonHandler.getButtons().size(); i++) {
 			Button b = ButtonHandler.getButton(i);
 			b.setColor(Color.BLACK);
 		}
 		
-		// System.out.println("Diff" +
-		// sh.getCurrentSongInstance().getDifficulty());
+		ButtonHandler.getButton(1).setColor(sh.getCurrentSongInstance().getButtons().get(0).getColor());
+
 	}
 
 	@Override
 	public void update(float factor) {
-		
+
 		long progress = (long) ((sh.getProgress() / 1000) + (Enemy.secondsToEnd * 1000));
 
-		for (ButtonInstance bu : sh.getCurrentSongInstance().getButtonsBetween(
-				oldProgress, progress)) {
+		for (ButtonInstance bu : sh.getCurrentSongInstance().getButtonsBetween(oldProgress, progress)) {
 			Button b = ButtonHandler.getButton(bu.getButtonID());
 			b.setColor(bu.getColor());
-//			System.out.println(bu.getButtonID() + " - " + bu.getColor()+ " / " + b.getColor());
 		}
-		
-		for (ObjectInstance ob : sh.getCurrentSongInstance().getObjectsBetween(
-				oldProgress, progress)) {
+
+		for (ObjectInstance ob : sh.getCurrentSongInstance().getObjectsBetween(oldProgress, progress)) {
 			Path p = area.paths.get(ob.getDirection());
 			p.addEnemy(ob.getColor(), ob.getDirection(), (int) ob.getLength());
 		}
 
 		oldProgress = progress;
-		
+
 		player.update(factor);
 		for (Path path : area.paths) {
 
@@ -98,15 +101,26 @@ public class PlayState extends GameState {
 
 				Enemy e = enemyIterator.next();
 
-				if (e.getDistanceFromStart() > Enemy.distanceToOctagon
-						+ (sizeOfEnemy * 1.5)) {
+				if (e.getDistanceFromStart() > Enemy.distanceToOctagon + (sizeOfEnemy * 1.5)) {
 					enemyIterator.remove();
+					lifePoints -= 5;
+					comboScore /= 2;
 				}
 
 				e.update(factor);
 			}
 		}
 
+		lifePoints -= 0.002 * factor;
+		
+		if(lifePoints <= 0)
+			gsm.setState(State.MENU_STATE);
+		if(comboScore >= 100)
+		{
+			comboScore = 0;
+			currentScore += 500;
+		}
+
 		infoPanel.updateIPanel();
 	}
 
@@ -134,25 +148,37 @@ public class PlayState extends GameState {
 
 	@Override
 	public void buttonPressed(ButtonEvent e) {
-		Iterator<Enemy> enemysInPath = area.paths.get(player.getIndex())
-				.getEnemysInPath().iterator();
+		boolean notHit = true;
+		Iterator<Enemy> enemysInPath = area.paths.get(player.getIndex()).getEnemysInPath().iterator();
 		while (enemysInPath.hasNext()) {
 			Enemy enemy = enemysInPath.next();
-			if (enemy.getDistanceFromStart() > Enemy.distanceToOctagon
-					|| enemy.getDistanceFromStart() > Enemy.distanceToOctagon
-							+ sizeOfEnemy) {
+			if (enemy.getDistanceFromStart() > Enemy.distanceToOctagon || enemy.getDistanceFromStart() > Enemy.distanceToOctagon + sizeOfEnemy) {
 				if (e.getButton().getColor().equals(enemy.getColor())) {
-					currentScore += enemy.getDistanceFromStart()
-							- Enemy.distanceToOctagon;
+					currentScore += enemy.getDistanceFromStart() - Enemy.distanceToOctagon;
+					comboScore += 5;
+					lifePoints = Math.min(lifePoints+10, 100);
 					enemysInPath.remove();
+					notHit = false;
 					break;
 				}
 			}
-
 		}
 		
+
 		player.setBeat();
 
+		if(notHit)
+		{
+			if(area.paths.get(player.getIndex()).getEnemysInPath().size() > 0)
+			{
+				lifePoints -= 1.5;
+			}
+		}
+		
+		if(e.getButton().getButtonID() == 0)
+		{
+			gsm.setState(State.MENU_STATE);
+		}
 	}
 
 	@Override

+ 32 - 32
model/gameState/TitleState.java

@@ -7,9 +7,6 @@ import java.awt.Color;
 import java.awt.Font;
 import java.awt.GradientPaint;
 import java.awt.Graphics2D;
-import java.awt.GraphicsConfiguration;
-import java.awt.GraphicsDevice;
-import java.awt.GraphicsEnvironment;
 import java.awt.RenderingHints;
 import java.awt.Transparency;
 import java.awt.image.BufferedImage;
@@ -29,7 +26,8 @@ public class TitleState extends GameState {
     VolatileImage background;
 	Font textFont = new Font("OCR A Extended", Font.BOLD, 15);
 	Font textFont2 = new Font("OCR A Extended", Font.BOLD, 130);
-	GradientPaint gp = new GradientPaint(300, 0, new Color(0,0,1, 0.6f),980,1024 ,new Color(0,0,1, 0.2f));
+	GradientPaint gp = new GradientPaint(300, 0, new Color(0, 0, 1, 0.6f), 980, 1024, new Color(0, 0, 1, 0.2f));
+
 	
     int index = 0;
     int varx = 0;
@@ -43,9 +41,10 @@ public class TitleState extends GameState {
 		super(gsm, sh);
 		createBackground();
 	}
+
 	@Override
 	public void init() {
-
+		sh.play();
 	}
 
 	@Override
@@ -68,53 +67,54 @@ public class TitleState extends GameState {
 		//g2.drawImage(kast.getSubimage(xKast*300,0,300,400), 640-122,650,300,400,null);
 		g2.drawImage(kast.getSubimage(xKast*300,0,300,400), 100,300,300,400,null);
 	}
-	
+
 	@Override
 	public void buttonPressed(ButtonEvent e) {
-		
-		switch(e.getButton().getButtonID()){
+
+		switch (e.getButton().getButtonID()) {
 		case 0:
 			gsm.setState(State.MENU_STATE);
 			break;
 		}
-		
-		
+
 	}
+
 	@Override
 	public void buttonReleased(ButtonEvent e) {
-		
+
 	}
+
 	@Override
 	public void onJoystickMoved(JoystickEvent e) {
 	}
-	
-	public void createBackground(){
+
+	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.setColor(new Color(1,1,1, 0.3f));
-		g2.fillRect(0,0,1280,1024);
-		
-		g2.setColor(new Color(0,1,0, 0.7f));
-		g2.fillRect(0,0,100,1024);
-		g2.fillRect(1180,0,100,1024);
-		
-		g2.setColor(new Color(1,1,0, 0.7f));
-		g2.fillRect(100,0,100,1024);
-		g2.fillRect(1080,0,100,1024);
-		
-		g2.setColor(new Color(1,0,0, 0.7f));
-		g2.fillRect(200,0,100,1024);
-		g2.fillRect(980,0,100,1024);
-		
+		g2.setRenderingHints(rh);
+		g2.setColor(new Color(1, 1, 1, 0.3f));
+		g2.fillRect(0, 0, 1280, 1024);
+
+		g2.setColor(new Color(0, 1, 0, 0.7f));
+		g2.fillRect(0, 0, 100, 1024);
+		g2.fillRect(1180, 0, 100, 1024);
+
+		g2.setColor(new Color(1, 1, 0, 0.7f));
+		g2.fillRect(100, 0, 100, 1024);
+		g2.fillRect(1080, 0, 100, 1024);
+
+		g2.setColor(new Color(1, 0, 0, 0.7f));
+		g2.fillRect(200, 0, 100, 1024);
+		g2.fillRect(980, 0, 100, 1024);
+
 		g2.setPaint(gp);
 		g2.fillRect(300, 0, 680, 1024);
-		
+
 		g2.setFont(textFont);
 		g2.setColor(Color.WHITE);
-		g2.drawString("©2015 Team Hamtaro", 550, 1012);
-		
+		g2.drawString("©2015 Team Hamtaro", 550, 1012);
+
 		g2.setColor(Color.RED);
 		g2.setFont(textFont2);
 		g2.drawString("Color", 385, 212);

+ 13 - 15
model/objects/InfoPanel.java

@@ -13,31 +13,21 @@ import model.gameState.PlayState;
 
 public class InfoPanel {
 	
-	private String totalHighscore = "XXXXXX";
-	private int lifePercent;
-	private int upgradeScore = 0;
+	private String totalHighscore = "Score: 000000";
 	private int x, y;
 	private VolatileImage infoPanel;
 	
 	public InfoPanel(int x, int y){
 		this.x = x;
 		this.y = y;
-		generateInfoPanel();
 		updateIPanel();
+		generateInfoPanel();
 	}
 	
 	public void updateIPanel() {		
 		totalHighscore  = "Score: " + PlayState.currentScore;
 		
-		
-		lifePercent =+ PlayState.lifePoints;
-		
-		if(0 <= PlayState.currentScore && PlayState.currentScore <=100) {			
-			if(upgradeScore != PlayState.currentScore){
-				upgradeScore = PlayState.currentScore;
-				generateInfoPanel();
-			}
-		}
+		generateInfoPanel();
 	}
 	
 	private void generateInfoPanel(){
@@ -46,18 +36,21 @@ public class InfoPanel {
 		RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
 	    g2.setRenderingHints(rh);	
 	    g2.setColor(Color.BLACK);
+	    
 		g2.fillRect(x, y, 256, 1024);
+		
 		Font scoreFont = new Font("OCR A Extended", Font.BOLD, 30);
 		g2.setFont(scoreFont);
 		g2.setColor(Color.ORANGE);
+		
 		g2.drawString(totalHighscore, 25, 75);
 		g2.drawRect(25, 100, 200, 30);
 		g2.drawRect(25, 300, 200, 700);
 		g2.setColor(Color.GREEN);
-		g2.fillRect(25, 100, 2 * lifePercent, 30);
+		g2.fillRect(25, 100, (int)(2 * PlayState.lifePoints), 30);
 		
 		g2.setColor(Color.YELLOW);		
-		g2.fillRect(25, 1000 - 7 * upgradeScore, 200, 0 + 7 * upgradeScore);
+		g2.fillRect(25, 1000 - 7 * PlayState.comboScore, 200, 0 + 7 * PlayState.comboScore);
 		g2.dispose();
 		infoPanel.createGraphics();
 	}
@@ -65,4 +58,9 @@ public class InfoPanel {
 	public void draw(Graphics2D g2){
 		g2.drawImage(infoPanel, 0, 0, 256,1024,null);
 	}
+	
+	public String getTotalHighscore()
+	{
+		return totalHighscore;
+	}
 }

+ 20 - 25
view/GameView.java

@@ -13,41 +13,36 @@ import javax.swing.JPanel;
 import control.GameStateManager;
 import control.LedHandler;
 
-public class GameView extends JPanel{
-	
+public class GameView extends JPanel {
+
 	/**
 	 * 
 	 */
 	private static final long serialVersionUID = 1939480784205689618L;
-	
-		
+
 	LedHandler led;
 	GameStateManager gsm;
-	Font fpsfont = 	new Font("OCR A Extended", Font.BOLD, 60);
-	
-	public GameView(LedHandler led,GameStateManager gsm)
-	{
-		this.led=led;
-		this.gsm = gsm;		
-		this.
-		setPreferredSize(new Dimension(1280,1024));
+
+	// Font fpsfont = new Font("OCR A Extended", Font.BOLD, 60);
+
+	public GameView(LedHandler led, GameStateManager gsm) {
+		this.led = led;
+		this.gsm = gsm;
+		this.setPreferredSize(new Dimension(1280, 1024));
 	}
 
 	@Override
-	public void paintComponent(Graphics g)
-	{
+	public void paintComponent(Graphics g) {
 		super.paintComponent(g);
-		
+
 		Graphics2D g2d = (Graphics2D) g;
-		RenderingHints rh = new RenderingHints(
-	              RenderingHints.KEY_ANTIALIASING,
-	              RenderingHints.VALUE_ANTIALIAS_ON);
-	     g2d.setRenderingHints(rh);
-		gsm.currentState.draw(g2d);		
-		
-		g2d.setColor(Color.RED);
-		g2d.setFont(fpsfont);
-		g2d.drawString(gsm.fps + "fps", 1000, 40);
+		RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+		g2d.setRenderingHints(rh);
+		gsm.currentState.draw(g2d);
+
+		//g2d.setColor(Color.RED);
+		//g2d.setFont(fpsfont);
+		//g2d.drawString(gsm.fps + "fps", 1000, 40);
 		Toolkit.getDefaultToolkit().sync();
-	}	
+	}
 }