GameOverState.java 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. package model.gameState;
  2. import image.Images;
  3. import java.awt.Color;
  4. import java.awt.Font;
  5. import java.awt.Graphics2D;
  6. import java.awt.RenderingHints;
  7. import java.awt.Transparency;
  8. import java.awt.image.BufferedImage;
  9. import java.awt.image.VolatileImage;
  10. import java.awt.image.WritableRenderedImage;
  11. import java.io.ByteArrayOutputStream;
  12. import java.io.File;
  13. import java.io.IOException;
  14. import javax.imageio.ImageIO;
  15. import com.google.zxing.WriterException;
  16. import model.GameModel;
  17. import model.SongHandler;
  18. import model.objects.InfoPanel;
  19. import model.objects.highscore.HighscoreName;
  20. import net.glxn.qrgen.QRCode;
  21. import net.glxn.qrgen.image.ImageType;
  22. import control.GameStateManager;
  23. import control.GameStateManager.State;
  24. import control.button.ButtonEvent;
  25. import control.button.ButtonHandler;
  26. import control.joystick.JoystickEvent;
  27. import control.joystick.JoystickHandler;
  28. import data.io.SQLConnector;
  29. import data.io.WebcamUploader;
  30. public class GameOverState extends GameState {
  31. BufferedImage gameOver = Images.getImage(Images.ImageType.gameover);
  32. VolatileImage background;
  33. Font textFont = new Font("OCR A Extended", Font.BOLD, 70);
  34. HighscoreName hsn;
  35. int image_x = 0;
  36. private boolean uploaded;
  37. private BufferedImage QRimage;
  38. int frame;
  39. public GameOverState(GameStateManager gsm, SongHandler sh, SQLConnector sql) {
  40. super(gsm, sh, sql);
  41. hsn = new HighscoreName(640,717,5,textFont);
  42. }
  43. @Override
  44. public void init() {
  45. createBackground();
  46. ButtonHandler.getButton(1).setColor(GameModel.colors[0]);
  47. ButtonHandler.getButton(2).setColor(GameModel.colors[2]);
  48. JoystickHandler.REPEAT = true;
  49. uploaded = false;
  50. }
  51. @Override
  52. public void update(float factor) {
  53. image_x = ((frame / 5) % 5) * 40;
  54. frame++;
  55. }
  56. @Override
  57. public void draw(Graphics2D g2) {
  58. g2.drawImage(background, 0, 0, 1280, 1024, null);
  59. g2.drawImage(gameOver.getSubimage(image_x, 0, 40, 26), 640-122, 400, 245, 130, null);
  60. if(!uploaded)
  61. hsn.drawName(g2);
  62. else if(QRimage != null){
  63. g2.drawImage(QRimage, 400, 600, 400, 400, null);
  64. }
  65. }
  66. @Override
  67. public void buttonPressed(ButtonEvent e) {
  68. //System.out.println("Name: "+hsn.getName());
  69. switch(e.getButton().getButtonID()){
  70. case 1:
  71. if(hsn.getName().trim().length() >= 3)
  72. {
  73. if(!uploaded){
  74. int id = sql.addHighscore(sh.getCurrentSong(), sh.getCurrentSongInstance(), hsn.getName(), PlayState.currentScore);
  75. try {
  76. WebcamUploader.takePictureAndUpload(id);
  77. } catch (IOException e2) {
  78. e2.printStackTrace();
  79. }
  80. try {
  81. QRimage = WebcamUploader.createQRImage("http://portfolio.jancokock.me/colorstrike/message.php?id="+id, 400);
  82. } catch (WriterException | IOException e1) {
  83. e1.printStackTrace();
  84. }
  85. uploaded = true;
  86. System.out.println(id);
  87. }else{
  88. gsm.setState(State.MENU_STATE);
  89. }
  90. }
  91. break;
  92. case 2:
  93. gsm.setState(State.MENU_STATE);
  94. }
  95. }
  96. @Override
  97. public void buttonReleased(ButtonEvent e) {
  98. }
  99. @Override
  100. public void onJoystickMoved(JoystickEvent e) {
  101. switch(e.getJoystick().getPos()){
  102. case DOWN:
  103. hsn.down();
  104. break;
  105. case LEFT:
  106. hsn.left();
  107. break;
  108. case RIGHT:
  109. hsn.right();
  110. break;
  111. case UP:
  112. hsn.up();
  113. break;
  114. default:
  115. break;
  116. }
  117. }
  118. public void createBackground(){
  119. background = Images.initVolatileImage(1280, 1024, Transparency.OPAQUE);
  120. Graphics2D g2 = background.createGraphics();
  121. RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
  122. g2.setRenderingHints(rh);
  123. g2.setColor(new Color(1,1,1, 0.3f));
  124. g2.fillRect(0,0,1280,1024);
  125. g2.setColor(new Color(0,1,0, 0.7f));
  126. g2.fillRect(0,0,100,1024);
  127. g2.fillRect(1180,0,100,1024);
  128. g2.setColor(new Color(1,1,0, 0.7f));
  129. g2.fillRect(100,0,100,1024);
  130. g2.fillRect(1080,0,100,1024);
  131. g2.setColor(new Color(1,0,0, 0.7f));
  132. g2.fillRect(200,0,100,1024);
  133. g2.fillRect(980,0,100,1024);
  134. g2.setColor(Color.BLACK);
  135. g2.setFont(textFont);
  136. g2.drawString("High Score", 385, 212);
  137. g2.drawString(InfoPanel.getTotalHighscore() + "", 390, 342);
  138. g2.dispose();
  139. }
  140. }