This commit is contained in:
Bilel Bghiel
2015-07-09 13:36:27 +02:00
6 changed files with 205 additions and 10 deletions
+174
View File
@@ -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();
}
}
+17 -4
View File
@@ -9,7 +9,6 @@ import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.util.Iterator;
import main.Window;
import model.SongHandler;
import model.drawObjects.Enemy;
import model.drawObjects.Player;
@@ -17,6 +16,7 @@ import model.drawObjects.PointAnimation;
import model.objects.InfoPanel;
import model.objects.Path;
import model.objects.PlayArea;
import model.objects.highscore.Highscore;
import audio.ButtonInstance;
import audio.ObjectInstance;
import control.GameStateManager;
@@ -47,6 +47,7 @@ public class PlayState extends GameState {
private int joystick_moved = 0;
private boolean init = false;
private static boolean won = false;
private long oldProgress = 0;
@@ -62,6 +63,7 @@ public class PlayState extends GameState {
@Override
public void init() {
init = true;
won = false;
lifePoints = 100;
currentScore = 0;
comboScore = 0;
@@ -71,6 +73,9 @@ public class PlayState extends GameState {
enemies_missed = 0;
buttons_pressed = 0;
joystick_moved = 0;
Highscore h = sql.getHighscore(sh.getCurrentSong(), sh.getCurrentSongInstance());
if(h != null)
infoPanel.init(h.getScore());
infoPanel.init(sql.getHighscore(sh.getCurrentSong(), sh.getCurrentSongInstance()).getScore());
@@ -103,8 +108,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;
@@ -166,7 +174,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
@@ -229,6 +237,7 @@ public class PlayState extends GameState {
}
}
}
player.setBeat();
@@ -291,5 +300,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;
}
}
+9 -2
View File
@@ -2,6 +2,13 @@ package model.objects;
import image.Images;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Polygon;
import java.awt.RenderingHints;
import java.awt.Stroke;
import java.awt.Transparency;
import java.awt.*;
import java.awt.geom.GeneralPath;
import java.awt.geom.Line2D;
@@ -24,7 +31,7 @@ public class PlayArea {
private VolatileImage background;
private boolean hit = false;
private int count = 0,maxCount = 100,pathID = -1;
private Stroke stroke = new BasicStroke(5);
private Stroke stroke = new BasicStroke(5,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND);
private PointAnimation pointAnimation = new PointAnimation();
private Rectangle2D backgroundPlay = new Rectangle2D.Double(256, 0, 1024, 1024);
@@ -125,7 +132,7 @@ public class PlayArea {
pointAnimation.draw(g2);
g2.setFont(tempFont);
}
public Line2D getLine(int index){
if(index < 0){
index = 0;