HUDRenderer.java 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. package pathgame.rendering;
  2. import java.util.LinkedList;
  3. import me.hammerle.snuviengine.api.Renderer;
  4. import me.hammerle.snuviengine.api.Texture;
  5. import pathgame.gameplay.MinusStepsValues;
  6. import pathgame.gameplay.Player;
  7. /**
  8. * A container for holding everything about the renderer for the Head-Up-Display
  9. *
  10. * @author julia
  11. */
  12. public class HUDRenderer
  13. {
  14. public static final float OFFSET_Y = 40;
  15. private static final Texture ENERGYBAR = new Texture("resources/energyBars.png");
  16. /**
  17. * Recalculates the rendering positions and settings of the HUD-elements on
  18. * the screen every rendertick based on the gamelogic in the gametick
  19. *
  20. * @param r the renderer
  21. * @param p the current player
  22. * @param lag the current lag
  23. */
  24. public void renderTick(Renderer r, Player p, float lag)//TileMap map, TileMapRenderer map, float lag, float offX, float offY)
  25. {
  26. r.translateTo(0.0f, 0.0f);
  27. r.scale(2.0f, 2.0f);
  28. r.updateMatrix();
  29. renderHUDBackgound(r);
  30. renderObjectiveTracker(r, p);
  31. renderEnergyBar(r, p);
  32. renderEnergyText(r, p);
  33. renderMinusEnergy(r, p, lag);
  34. }
  35. private void renderHUDBackgound(Renderer r)
  36. {
  37. r.setMixColorEnabled(true);
  38. r.setColorEnabled(true);
  39. r.setTextureEnabled(false);
  40. r.setBlendingEnabled(true);
  41. r.getColorRenderer().drawRectangle(0, 0, r.getViewWidth(), 20, 0xFF_00_00_00);//ABGR
  42. }
  43. private void renderObjectiveTracker(Renderer r, Player p)
  44. {
  45. r.setMixColorEnabled(false);
  46. r.setColorEnabled(true);
  47. r.setTextureEnabled(true);
  48. String objectiveTracker = String.valueOf(p.getObjectivesVisited()) + "/" + String.valueOf(p.getObjectivesAmount()) + " Towns";
  49. r.getFontRenderer().drawString(2, 6, objectiveTracker);
  50. }
  51. private void renderEnergyText(Renderer r, Player p)
  52. {
  53. r.setMixColorEnabled(false);
  54. r.setColorEnabled(true);
  55. r.setTextureEnabled(true);
  56. String energy = String.valueOf(p.getEnergyLeft()) + "/" + String.valueOf(p.getEnergySupply());
  57. r.getFontRenderer().drawString(
  58. r.getViewWidth() * 0.5f
  59. - r.getFontRenderer().getSize(energy).getWidth() - 15,
  60. 6, energy);
  61. }
  62. private void renderEnergyBar(Renderer r, Player p)
  63. {
  64. r.setMixColorEnabled(true);
  65. r.setColorEnabled(false);
  66. r.setTextureEnabled(true);
  67. r.setBlendingEnabled(true);
  68. float energyPercent = 100 / (float) p.getEnergySupply() * (float) p.getEnergyLeft() / 100;
  69. if(energyPercent < 0)
  70. {
  71. energyPercent = 0;
  72. }
  73. ENERGYBAR.bind();
  74. r.getTextureRenderer().drawRectangle(100, 5, (r.getViewWidth() / 2 - 5), 17, 0, 0.0625f, 1, 0.0625f * 2);
  75. r.getTextureRenderer().drawRectangle(100, 5, (((r.getViewWidth() / 2 - 5) - 100) * (energyPercent)) + 100, 17, 0, 0, 1 * energyPercent, 0.0625f);
  76. }
  77. private void renderMinusEnergy(Renderer r, Player p, float lag)
  78. {
  79. r.setMixColorEnabled(false);
  80. r.setColorEnabled(true);
  81. r.setTextureEnabled(true);
  82. LinkedList<MinusStepsValues> steps = p.getLastSteps();
  83. for(MinusStepsValues step : steps)
  84. {
  85. String minusEnergy = String.format("&4-%d", step.getValue());
  86. r.getFontRenderer().drawString(r.getViewWidth() * 0.5f - 63, 9 + step.getLifeTime() + lag, minusEnergy);
  87. }
  88. }
  89. }