EndState.java 4.3 KB

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