package me.hammerle.snuviengine.game; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.Random; import me.hammerle.snuviengine.api.Engine; import me.hammerle.snuviengine.api.KeyBinding; import me.hammerle.snuviengine.api.KeyHandler; import me.hammerle.snuviengine.api.Shader; import me.hammerle.snuviengine.api.Texture; import me.hammerle.snuviengine.api.TextureRenderer; import me.hammerle.snuviengine.util.Clock; import me.hammerle.snuviengine.util.WrappedInputStream; import static org.lwjgl.glfw.GLFW.*; public class Game extends Engine { public final static KeyBinding UP = KeyHandler.register(GLFW_KEY_UP); public final static KeyBinding DOWN = KeyHandler.register(GLFW_KEY_DOWN); public final static KeyBinding LEFT = KeyHandler.register(GLFW_KEY_LEFT); public final static KeyBinding RIGHT = KeyHandler.register(GLFW_KEY_RIGHT); public final static KeyBinding KEY_F = KeyHandler.register(GLFW_KEY_F); private boolean toogleFps = false; public final static KeyBinding KEY_T = KeyHandler.register(GLFW_KEY_T); private boolean toogleTps = false; private final TextureRenderer tr = new TextureRenderer(); public BoxList entities = new BoxList(0.0, 0.0, 400.0, 300.0, 1.0); private World w; public Game() { /*Random r = new Random(200); for(int i = 0; i < 128; i++) { Entity ent = new Entity(this, 5.0, 5.0); ent.setPosition((int) (r.nextDouble() * 400.0), (int) (r.nextDouble() * 300)); ent.node = entities.add(ent); }*/ Hero hero = new Hero(this, 25.0, 25.0); hero.setPosition(0.0, 0.0); hero.node = entities.add(hero); w = new World(hero); try { w.read(new WrappedInputStream(new FileInputStream("./testworld"))); } catch(IOException ex) { ex.printStackTrace(); } } @Override public void init() { setNanosPerTick(50_000_000); setMaxFps(120); } @Override public void tick() { w.tick(); /*CLOCK.start(); entities.forEach(ent -> ent.tick()); CLOCK.stop(); CLOCK.calculate(); if(KEY_F.getTime() == 1) { toogleFps = !toogleFps; setRenderFps(toogleFps); } if(KEY_T.getTime() == 1) { toogleTps = !toogleTps; setRenderTps(toogleTps); }*/ } private static final Clock CLOCK = new Clock(250); @Override public void renderTick(float lag) { w.renderTick(lag); /*Shader.setTextureEnabled(false); Shader.setColorEnabled(true); Shader.getColorRenderer().drawRectangle(0, 299, 400, 300, 0xFFFFFFFF); entities.forEach(ent -> ent.renderTick(lag));*/ Shader.setTextureEnabled(true); Shader.setColorEnabled(true); Shader.translateTo(0.0f, 0.0f); Shader.updateMatrix(); float y = 5; y = Shader.getFontRenderer().drawString(5, y, true, "FPS " + String.format("%.1f", getFps())); y = Shader.getFontRenderer().drawString(5, y, true, "TPS " + String.format("%.1f", getTps())); y = Shader.getFontRenderer().drawString(5, y, true, String.valueOf(CLOCK.getTime())); y = Shader.getFontRenderer().drawString(5, y, true, String.valueOf(CLOCK.getMinTime())); } }