ScoreMenuRenderer.java 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package pathgame.rendering;
  2. import me.hammerle.snuviengine.api.Renderer;
  3. import pathgame.gameplay.Level;
  4. public class ScoreMenuRenderer
  5. {
  6. public void renderTick(Renderer r, float lag, Level level)
  7. {
  8. float windowWidth = r.getViewWidth();
  9. float windowHeight = r.getViewHeight();
  10. float paddingX = 30;
  11. float paddingY = 50;
  12. r.setMixColorEnabled(false);
  13. r.setColorEnabled(true);
  14. r.setTextureEnabled(false);
  15. r.setBlendingEnabled(true);
  16. r.getColorRenderer().drawRectangle(paddingX, paddingY, windowWidth - paddingX, windowHeight - paddingY, 0x90000000);
  17. r.setTextureEnabled(true);
  18. r.translateTo(0.0f, 0.0f);
  19. float scale = scale(r, 1);
  20. String message;
  21. message = "&2" + String.valueOf(level.getPlayer().getEnergyUsed()) + "&f of &2"
  22. + String.valueOf(level.getPlayer().getEnergySupply()) + "&f Energy used";
  23. r.getFontRenderer().drawString((windowWidth * scale - getWidth(r, message)) / 2, (windowHeight * scale - getHeight(r, message)) / 2 - windowHeight * scale * 0.5f * 0.15f, message);
  24. System.out.println((float) level.getPlayer().getEnergyUsed() / level.getPlayer().getEnergySupply());
  25. if((float) level.getPlayer().getEnergyUsed() / level.getPlayer().getEnergySupply() < 0.5f)
  26. {
  27. message = "You were better than the algorithm!";
  28. }
  29. else if((float) level.getPlayer().getEnergyUsed() / level.getPlayer().getEnergySupply() < 0.6f)
  30. {
  31. message = "Only 20% more energy use than the algorithm!";
  32. }
  33. else if((float) level.getPlayer().getEnergyUsed() / level.getPlayer().getEnergySupply() < 0.75f)
  34. {
  35. message = "Only 50% more energy use than the algorithm!";
  36. }
  37. else if((float) level.getPlayer().getEnergyUsed() / level.getPlayer().getEnergySupply() < 1)
  38. {
  39. message = "Only twice the energy use of the algorithm!";
  40. }
  41. else if((float) level.getPlayer().getEnergyUsed() / level.getPlayer().getEnergySupply() > 1)
  42. {
  43. message = "More than twice the energy use of the algorithm!";
  44. }
  45. r.getFontRenderer().drawString((windowWidth * scale - getWidth(r, message)) / 2, (windowHeight * scale - getHeight(r, message)) / 2 - windowHeight * scale * 0.5f * (-0.15f), message);
  46. scale = scale(r, 2);
  47. if((float) level.getPlayer().getEnergyUsed() / level.getPlayer().getEnergySupply() < 1)
  48. {
  49. message = "Congratulations!";
  50. }
  51. else
  52. {
  53. message = "What a pity! Out of energy!";
  54. }
  55. r.getFontRenderer().drawString((windowWidth * scale - getWidth(r, message)) / 2, (windowHeight * scale - getHeight(r, message)) / 2, message);
  56. message = "OK!";
  57. r.getFontRenderer().drawString((windowWidth * scale - getWidth(r, message)) / 2, (windowHeight * scale - paddingY * scale - getHeight(r, message)) - 10, message);
  58. }
  59. private float getWidth(Renderer r, String s)
  60. {
  61. return r.getFontRenderer().getSize(s).getWidth();
  62. }
  63. private float getHeight(Renderer r, String s)
  64. {
  65. return r.getFontRenderer().getSize(s).getHeight();
  66. }
  67. private float scale(Renderer r, int scale)
  68. {
  69. r.scale(scale, scale);
  70. r.updateMatrix();
  71. return 1.0f / scale;
  72. }
  73. }