HUDRenderer.java 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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. public class HUDRenderer {
  8. public static final float OFFSET_Y = 40;
  9. private static final Texture ENERGYBAR = new Texture("resources/energyBars.png");
  10. public void renderTick(Renderer r, Player p, float lag) {
  11. r.translateTo(0.0f, 0.0f);
  12. r.scale(2.0f, 2.0f);
  13. r.updateMatrix();
  14. renderHUDBackgound(r);
  15. renderObjectiveTracker(r, p);
  16. renderEnergyBar(r, p);
  17. renderEnergyText(r, p);
  18. renderMinusEnergy(r, p, lag);
  19. }
  20. private void renderHUDBackgound(Renderer r) {
  21. r.setMixColorEnabled(true);
  22. r.setColorEnabled(true);
  23. r.setTextureEnabled(false);
  24. r.enableBlending();
  25. r.getColorRenderer().drawRectangle(0, 0, r.getViewWidth(), 20, 0xFF_00_00_00);
  26. }
  27. private void renderObjectiveTracker(Renderer r, Player p) {
  28. r.setMixColorEnabled(false);
  29. r.setColorEnabled(true);
  30. r.setTextureEnabled(true);
  31. String objectiveTracker = String.valueOf(p.getObjectivesVisited()) + "/" + String.valueOf(p.getObjectivesAmount()) + " Towns";
  32. r.getFontRenderer().drawString(2, 6, objectiveTracker);
  33. }
  34. private void renderEnergyText(Renderer r, Player p) {
  35. r.setMixColorEnabled(false);
  36. r.setColorEnabled(true);
  37. r.setTextureEnabled(true);
  38. String energy = String.valueOf(p.getEnergyLeft()) + "/" + String.valueOf(p.getEnergySupply());
  39. r.getFontRenderer().drawString(
  40. r.getViewWidth() * 0.5f
  41. - r.getFontRenderer().getSize(energy).getStringWidth() - 15,
  42. 6, energy);
  43. }
  44. private void renderEnergyBar(Renderer r, Player p) {
  45. r.setMixColorEnabled(true);
  46. r.setColorEnabled(false);
  47. r.setTextureEnabled(true);
  48. r.enableBlending();
  49. float energyPercent = 100 / (float) p.getEnergySupply() * (float) p.getEnergyLeft() / 100;
  50. if(energyPercent < 0) {
  51. energyPercent = 0;
  52. }
  53. ENERGYBAR.bind();
  54. r.getTextureRenderer().drawRectangle(100, 5, (r.getViewWidth() / 2 - 5), 17, 0, 0.0625f, 1, 0.0625f * 2);
  55. r.getTextureRenderer().drawRectangle(100, 5, (((r.getViewWidth() / 2 - 5) - 100) * (energyPercent)) + 100, 17, 0, 0, 1 * energyPercent, 0.0625f);
  56. }
  57. private void renderMinusEnergy(Renderer r, Player p, float lag) {
  58. r.setMixColorEnabled(false);
  59. r.setColorEnabled(true);
  60. r.setTextureEnabled(true);
  61. LinkedList<MinusStepsValues> steps = p.getLastSteps();
  62. for(MinusStepsValues step : steps) {
  63. String minusEnergy = String.format("#AA0000-%d", step.getValue());
  64. r.getFontRenderer().drawString(r.getViewWidth() * 0.5f - 63, 9 + step.getLifeTime() + lag, minusEnergy);
  65. }
  66. }
  67. }