Browse Source

If you not die you win

Remco 10 years ago
parent
commit
bedd6899db

+ 3 - 3
control/GameStateManager.java

@@ -5,7 +5,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import model.SongHandler;
-import model.gameState.GameOverState;
+import model.gameState.EndState;
 import model.gameState.GameState;
 import model.gameState.HelpState;
 import model.gameState.MenuState;
@@ -32,7 +32,7 @@ public class GameStateManager {
 		MENU_STATE,
 		HELP_STATE,
 		PLAY_STATE,
-		GAMEOVER_STATE,
+		END_STATE,
 		PRE_GAME_STATE
 	}
 	
@@ -42,7 +42,7 @@ public class GameStateManager {
 		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));
+		gamestates.add(new EndState(this, sh, sql));
 		gamestates.add(new PreGameState(this,sh, sql));
 		setState(State.TITLE_STATE);
 	}

+ 0 - 2
data/io/SQLConnector.java

@@ -8,8 +8,6 @@ import java.sql.Statement;
 import java.util.ArrayList;
 import java.util.List;
 
-import com.sun.crypto.provider.RSACipher;
-
 import model.objects.highscore.Highscore;
 import audio.Song;
 import audio.SongInstance;

+ 2 - 1
image/Images.java

@@ -35,6 +35,7 @@ public class Images {
 		   	images.add(toCompatibleImage(ImageIO.read(Main.class.getResource("/image/gameover.png"))));
 		   	images.add(toCompatibleImage(ImageIO.read(Main.class.getResource("/image/screenshot.png"))));
 		   	images.add(toCompatibleImage(ImageIO.read(Main.class.getResource("/image/help.png"))));
+		   	images.add(toCompatibleImage(ImageIO.read(Main.class.getResource("/image/youwon.png"))));
 		} catch (IOException e) {
 			e.printStackTrace();
 		}
@@ -45,7 +46,7 @@ public class Images {
 	}
 
 	public enum ImageType {
-		pulse,cursor,pressstart,colorstrike,background,aanwijzers,kast,gameover, screenshot, help
+		pulse,cursor,pressstart,colorstrike,background,aanwijzers,kast,gameover, screenshot, help,youwon
 	}
 
 	public static BufferedImage readImage(File f) {

BIN
image/youwon.png


+ 174 - 0
model/gameState/EndState.java

@@ -0,0 +1,174 @@
+package model.gameState;
+
+import image.Images;
+
+import java.awt.Color;
+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 java.io.IOException;
+
+import model.GameModel;
+import model.SongHandler;
+import model.objects.InfoPanel;
+import model.objects.highscore.HighscoreName;
+
+import com.google.zxing.WriterException;
+
+import control.GameStateManager;
+import control.GameStateManager.State;
+import control.button.ButtonEvent;
+import control.button.ButtonHandler;
+import control.joystick.JoystickEvent;
+import control.joystick.JoystickHandler;
+import data.io.SQLConnector;
+import data.io.WebcamUploader;
+
+public class EndState extends GameState {
+
+    BufferedImage end = null;
+    VolatileImage background;
+	Font textFont = new Font("OCR A Extended", Font.BOLD, 70);
+	HighscoreName hsn;
+	int image_x = 0;	
+	private boolean uploaded;
+	private BufferedImage QRimage;
+	
+    int frame;
+
+	public EndState(GameStateManager gsm, SongHandler sh, SQLConnector sql) {
+		super(gsm, sh, sql);
+		hsn = new HighscoreName(640,717,5,textFont);
+	}
+
+	@Override
+	public void init() {
+		createBackground();
+		ButtonHandler.getButton(1).setColor(GameModel.colors[0]);
+		ButtonHandler.getButton(2).setColor(GameModel.colors[2]);
+		JoystickHandler.REPEAT = true;
+		uploaded = false;
+//		System.out.println("Endgame: "+PlayState.won());
+		if(PlayState.won()){
+			end = Images.getImage(Images.ImageType.youwon);
+		}else{
+			end = Images.getImage(Images.ImageType.gameover);
+		}
+	}
+
+	@Override
+	public void update(float factor) {
+		image_x = ((frame / 5) % 5) * 40;
+        frame++;
+	}
+
+	@Override
+	public void draw(Graphics2D g2) {
+		g2.drawImage(background, 0, 0, 1280, 1024, null);
+		
+		if(end != null){
+			g2.drawImage(end.getSubimage(image_x, 0, 40, 26),  640-122, 400, 245, 130, null);
+		}
+			
+		if(!uploaded)
+			hsn.drawName(g2);
+		else if(QRimage != null){
+			g2.drawImage(QRimage, (1280/2)-(QRimage.getWidth()/2), 600,null);
+			//1280 is de breedte van de panel
+		}
+			
+	}
+	
+	@Override
+	public void buttonPressed(ButtonEvent e) {
+		//System.out.println("Name: "+hsn.getName());
+		switch(e.getButton().getButtonID()){
+		case 0:
+			gsm.setState(State.TITLE_STATE);
+			break;
+		case 1:
+			if(hsn.getName().trim().length() >= 3)
+			{
+				if(!uploaded){
+					int id = sql.addHighscore(sh.getCurrentSong(), sh.getCurrentSongInstance(), hsn.getName(), PlayState.currentScore);
+					try {
+						WebcamUploader.takePictureAndUpload(id);
+					} catch (IOException e2) {
+						e2.printStackTrace();
+					}
+					 		
+					try {
+						QRimage = WebcamUploader.createQRImage("http://portfolio.jancokock.me/colorstrike/message.php?id="+id, 400);
+					} catch (WriterException | IOException e1) {
+						e1.printStackTrace();
+					}
+					uploaded = true;
+
+				}else{
+					gsm.setState(State.MENU_STATE);
+				}
+			}
+			break;			
+		case 2:
+			gsm.setState(State.MENU_STATE);
+			break;
+		}
+		
+		
+	}
+	@Override
+	public void buttonReleased(ButtonEvent e) {
+		
+	}
+	@Override
+	public void onJoystickMoved(JoystickEvent e) {
+		switch(e.getJoystick().getPos()){		
+		case DOWN:
+			hsn.down();
+			break;			
+		case LEFT:
+			hsn.left();
+			break;
+		case RIGHT:
+			hsn.right();
+			break;
+		case UP:
+			hsn.up();
+			break;		
+		default:
+			break;	
+		}
+	}
+	
+	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.setColor(Color.BLACK);
+		g2.setFont(textFont);
+		
+		g2.drawString("High Score", 385, 212);
+		g2.drawString(InfoPanel.getTotalHighscore() + "", 390, 342);
+		g2.dispose();
+	}
+}

+ 13 - 4
model/gameState/PlayState.java

@@ -45,6 +45,7 @@ public class PlayState extends GameState {
 	private int joystick_moved = 0;
 	
 	private boolean init = false;
+	private static boolean won = false;
 
 	private long oldProgress = 0;
 
@@ -60,6 +61,7 @@ public class PlayState extends GameState {
 	@Override
 	public void init() {
 		init = true;
+		won = false;
 		lifePoints = 100;
 		currentScore = 0;
 		comboScore = 0;
@@ -104,8 +106,11 @@ public class PlayState extends GameState {
 		}
 		
 
-		if(progress > sh.getCurrentSongInstance().getEndTime() + Enemy.secondsToEnd*1000*2)
-			endGame();
+		if(progress > sh.getCurrentSongInstance().getEndTime() + Enemy.secondsToEnd*1000*2){
+			won = true;
+			endGame();			
+		}
+			
 
 		oldProgress = progress;
 
@@ -157,7 +162,7 @@ public class PlayState extends GameState {
 		}
 	}
 
-	private void endGame() {
+	private void endGame() {		
 		if(sh.getProgress()/1000 > 5000)	
 		{
 			sql.addPlaydata(sh.getCurrentSong(), sh.getCurrentSongInstance(), sh.getProgress()/1000, enemies_missed, enemies_hit, buttons_pressed, joystick_moved);
@@ -167,7 +172,7 @@ public class PlayState extends GameState {
 		if(currentScore == 0)
 			gsm.setState(State.MENU_STATE);
 		else
-			gsm.setState(State.GAMEOVER_STATE);
+			gsm.setState(State.END_STATE);
 	}
 
 	@Override
@@ -290,5 +295,9 @@ public class PlayState extends GameState {
 		Path path = area.paths.get(pathID);
 		Enemy e = new Enemy(pathID, 1, color, path);
 		path.getEnemysInPath().addLast(e);
+	}	
+	
+	public static boolean won(){
+		return won;
 	}
 }