Feature/herkasingen

# Conflicts:
#	model/gameState/PlayState.java
# Bugs:
#   model/gameState/PlayState.java highscore empty
This commit is contained in:
jancoow
2015-07-09 10:17:39 +02:00
6 changed files with 196 additions and 13 deletions
+3 -3
View File
@@ -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);
}
+2 -1
View File
@@ -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
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

+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();
}
}
+16 -7
View File
@@ -4,17 +4,16 @@ import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Stroke;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Rectangle2D;
import java.util.Iterator;
import main.Window;
import model.SongHandler;
import model.drawObjects.Enemy;
import model.drawObjects.Player;
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;
@@ -45,6 +44,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 +60,7 @@ public class PlayState extends GameState {
@Override
public void init() {
init = true;
won = false;
lifePoints = 100;
currentScore = 0;
comboScore = 0;
@@ -69,8 +70,9 @@ public class PlayState extends GameState {
enemies_missed = 0;
buttons_pressed = 0;
joystick_moved = 0;
infoPanel.init(sql.getHighscore(sh.getCurrentSong(), sh.getCurrentSongInstance()).getScore());
Highscore h = sql.getHighscore(sh.getCurrentSong(), sh.getCurrentSongInstance());
if(h != null)
infoPanel.init(h.getScore());
for(Path p : area.paths)
{
@@ -101,8 +103,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;
@@ -164,7 +169,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
@@ -287,5 +292,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;
}
}
+1 -2
View File
@@ -2,7 +2,6 @@ package model.objects;
import image.Images;
import java.awt.AlphaComposite;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics2D;
@@ -29,7 +28,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 Rectangle2D backgroundPlay = new Rectangle2D.Double(256, 0, 1024, 1024);