Game.java 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. package me.hammerle.snuviengine.game;
  2. import java.io.FileInputStream;
  3. import java.io.IOException;
  4. import java.util.Random;
  5. import me.hammerle.snuviengine.api.Engine;
  6. import me.hammerle.snuviengine.api.KeyBinding;
  7. import me.hammerle.snuviengine.api.KeyHandler;
  8. import me.hammerle.snuviengine.api.Shader;
  9. import me.hammerle.snuviengine.api.TextureRenderer;
  10. import me.hammerle.snuviengine.util.Clock;
  11. import me.hammerle.snuviengine.util.WrappedInputStream;
  12. import static org.lwjgl.glfw.GLFW.*;
  13. public class Game extends Engine
  14. {
  15. public final static KeyBinding UP = KeyHandler.register(GLFW_KEY_UP);
  16. public final static KeyBinding DOWN = KeyHandler.register(GLFW_KEY_DOWN);
  17. public final static KeyBinding LEFT = KeyHandler.register(GLFW_KEY_LEFT);
  18. public final static KeyBinding RIGHT = KeyHandler.register(GLFW_KEY_RIGHT);
  19. public final static KeyBinding KEY_F = KeyHandler.register(GLFW_KEY_F);
  20. private boolean toogleFps = false;
  21. public final static KeyBinding KEY_T = KeyHandler.register(GLFW_KEY_T);
  22. private boolean toogleTps = false;
  23. private final TextureRenderer tr = new TextureRenderer(12);
  24. public BoxList<Entity> entities = new BoxList<>(5000, 0.0, 0.0, 400.0, 300.0, 1.0);
  25. private World w;
  26. public Game()
  27. {
  28. /*Random r = new Random(200);
  29. for(int i = 0; i < 4096; i++)
  30. {
  31. Entity ent = new Entity(this, 2.0, 2.0);
  32. ent.setPosition((int) (r.nextDouble() * 400.0), (int) (r.nextDouble() * 300));
  33. ent.node = entities.add(ent);
  34. }*/
  35. Hero hero = new Hero(this, 25.0, 25.0);
  36. hero.setPosition(0.0, 0.0);
  37. hero.node = entities.add(hero);
  38. w = new World(hero);
  39. try
  40. {
  41. w.read(new WrappedInputStream(new FileInputStream("./testworld")));
  42. }
  43. catch(IOException ex)
  44. {
  45. ex.printStackTrace();
  46. }
  47. }
  48. @Override
  49. public void init()
  50. {
  51. setNanosPerTick(50_000_000);
  52. //setMaxFps(120);
  53. //Shader.setAmbientLight(0.5f, 0.5f, 0.5f);
  54. Shader.setLightColor(0, 1f, 0.75f, 0.5f);
  55. Shader.setLightStrength(0, 0.01f);
  56. }
  57. @Override
  58. public void tick()
  59. {
  60. w.tick();
  61. CLOCK.start();
  62. entities.forEach(ent -> ent.tick());
  63. CLOCK.stop();
  64. CLOCK.calculate();
  65. if(KEY_F.getTime() == 1)
  66. {
  67. toogleFps = !toogleFps;
  68. setRenderFps(toogleFps);
  69. }
  70. if(KEY_T.getTime() == 1)
  71. {
  72. toogleTps = !toogleTps;
  73. setRenderTps(toogleTps);
  74. }
  75. }
  76. private static final Clock CLOCK = new Clock(250);
  77. @Override
  78. public void renderTick(float lag)
  79. {
  80. Shader.setLightEnabled(true);
  81. w.renderTick(lag);
  82. /*Shader.setTextureEnabled(false);
  83. Shader.setColorEnabled(true);
  84. Shader.getColorRenderer().drawRectangle(0, 299, 400, 300, 0xFFFFFFFF);
  85. entities.forEach(ent -> ent.renderTick(lag));*/
  86. Shader.setTextureEnabled(true);
  87. Shader.setColorEnabled(true);
  88. Shader.translateTo(0.0f, 0.0f);
  89. Shader.updateMatrix();
  90. float y = 5;
  91. y = Shader.getFontRenderer().drawString(5, y, true, "FPS " + String.format("%.1f", getFps()));
  92. y = Shader.getFontRenderer().drawString(5, y, true, "TPS " + String.format("%.1f", getTps()));
  93. y = Shader.getFontRenderer().drawString(5, y, true, String.valueOf(CLOCK.getTime()));
  94. y = Shader.getFontRenderer().drawString(5, y, true, String.valueOf(CLOCK.getMinTime()));
  95. }
  96. }