package gui; import org.lwjgl.LWJGLException; import org.lwjgl.Sys; import org.lwjgl.opengl.Display; import org.lwjgl.opengl.DisplayMode; import org.lwjgl.opengl.GL11; import java.util.ArrayList; import static org.lwjgl.opengl.GL11.GL_BLEND; import static org.lwjgl.opengl.GL11.GL_COLOR_BUFFER_BIT; import static org.lwjgl.opengl.GL11.GL_MODELVIEW; import static org.lwjgl.opengl.GL11.GL_ONE_MINUS_SRC_ALPHA; import static org.lwjgl.opengl.GL11.GL_PROJECTION; import static org.lwjgl.opengl.GL11.GL_SRC_ALPHA; import static org.lwjgl.opengl.GL11.GL_TEXTURE_2D; import static org.lwjgl.opengl.GL11.glBlendFunc; import static org.lwjgl.opengl.GL11.glClear; import static org.lwjgl.opengl.GL11.glClearColor; import static org.lwjgl.opengl.GL11.glEnable; import static org.lwjgl.opengl.GL11.glLoadIdentity; import static org.lwjgl.opengl.GL11.glMatrixMode; import static org.lwjgl.opengl.GL11.glOrtho; import static org.lwjgl.opengl.GL11.glRecti; import static org.lwjgl.opengl.GL11.glViewport; public class OpenLauncherGui { public static final int WIDTH = 1280; public static final int HEIGHT = 720; public static ArrayList<RenderComponet> componets = new ArrayList<RenderComponet>(); public boolean isRunning = true; private long lastFrame; public PacksComponent packsComponent = new PacksComponent(); public static LoadingComponet loadingComponet = new LoadingComponet(); public void start(){ setUpDisplay(); setUpOpenGL(); init(); setUpTimer(); while (isRunning) { render(); logic(getDelta()); input(); Display.update(); Display.sync(60); if (Display.isCloseRequested()) { isRunning = false; } } Display.destroy(); } public static void main(String[] args) { new OpenLauncherGui(); } public void input() { for (RenderComponet renderComponet : componets) { renderComponet.input(); } } private long getTime() { return (Sys.getTime() * 1000 / Sys.getTimerResolution()); } private void setUpTimer() { lastFrame = getTime(); } private int getDelta() { long currentTime = getTime(); int delta = (int) (currentTime - lastFrame); lastFrame = getTime(); return delta; } private void logic(int delta) { for (RenderComponet componet : componets) { componet.logic(delta); } } public void render() { glClear(GL_COLOR_BUFFER_BIT); glRecti(10, 10, 20, 20); for (RenderComponet renderComponet : componets) { GL11.glPushMatrix(); renderComponet.render(); GL11.glPopMatrix(); } } public void setUpOpenGL() { glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0, WIDTH, HEIGHT, 0, 1, -1); glMatrixMode(GL_MODELVIEW); glEnable(GL_TEXTURE_2D); glClearColor(0.0f, 0.0f, 0.0f, 0.0f); // enable alpha blending glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glViewport(0, 0, WIDTH, HEIGHT); glMatrixMode(GL_MODELVIEW); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0, WIDTH, HEIGHT, 0, 1, -1); glMatrixMode(GL_MODELVIEW); } public void init() { componets.add(new Wallpaper()); componets.add(new Footer()); packsComponent.setupTextures(); componets.add(packsComponent); loadingComponet.setupTextures(); componets.add(loadingComponet); } public void setUpDisplay() { try { Display.setDisplayMode(new DisplayMode(WIDTH, HEIGHT)); Display.setTitle("OpenLauncher"); Display.create(); } catch (LWJGLException e) { e.printStackTrace(); } } }