package gui; import openlauncher.Launch; import openlauncher.ModPack; import openlauncher.ModPackInstaller; import org.lwjgl.input.Keyboard; import org.lwjgl.input.Mouse; import org.lwjgl.opengl.GL11; import org.newdawn.slick.Color; import org.newdawn.slick.opengl.Texture; import org.newdawn.slick.opengl.TextureLoader; import org.newdawn.slick.util.ResourceLoader; import java.io.IOException; import java.util.ArrayList; import static org.lwjgl.opengl.GL11.GL_BLEND; import static org.lwjgl.opengl.GL11.GL_TEXTURE_2D; import static org.lwjgl.opengl.GL11.glBindTexture; import static org.lwjgl.opengl.GL11.glEnable; public class PacksComponent implements RenderComponet { Texture panelBackGroundTEX; Icon play; public ArrayList<ModPack> packs = new ArrayList<ModPack>(); int scroll; int scrolltwo = 0; boolean isScrolling = false; String selectedPack = ""; public PacksComponent() { } public void setupTextures(){ try { panelBackGroundTEX = TextureLoader.getTexture("PNG", ResourceLoader.getResourceAsStream("img/packPanel.png")); System.out.println(panelBackGroundTEX.getHeight()); } catch (IOException e) { e.printStackTrace(); } try { play = new Icon("img/right.png"); } catch (IOException e) { e.printStackTrace(); } } @Override public void render() { if(OpenLauncherGui.loadingComponet.isLoading){ return; } int i = 0; for (int j = 0; j < 45; j++) { if(scroll == scrolltwo){ isScrolling = false; } if(isScrolling){ if(scrolltwo > scroll){ scroll ++; } else { scroll --; } } } for (ModPack pack : packs) { glEnable(GL_BLEND); Color.white.bind(); Texture packTexture = pack.getTexture(); if(packTexture != null){ glBindTexture(GL_TEXTURE_2D, pack.getTexture().getTextureID()); } else { glBindTexture(GL_TEXTURE_2D, panelBackGroundTEX.getTextureID()); } GL11.glBegin(GL11.GL_QUADS); int x = (i * 550) + 10 + scroll; int y = 200; // if(souldRenderAt(x)){ //TODO fade out GL11.glTexCoord2f(0, 0); GL11.glVertex2f(x, y); GL11.glTexCoord2f(1, 0); GL11.glVertex2f(x + panelBackGroundTEX.getTextureWidth(), y); GL11.glTexCoord2f(1, 1); GL11.glVertex2f(x + panelBackGroundTEX.getTextureWidth(), y + panelBackGroundTEX.getTextureHeight()); GL11.glTexCoord2f(0, 1); GL11.glVertex2f(x, y + panelBackGroundTEX.getTextureHeight()); GL11.glEnd(); i++; if (OpenLauncherGui.HEIGHT - Mouse.getY() > y && OpenLauncherGui.HEIGHT - Mouse.getY() < y + panelBackGroundTEX.getTextureHeight()) { if (Mouse.getX() > x && Mouse.getX() < x + panelBackGroundTEX.getTextureWidth()) { Color.white.bind(); play.glBindTexture(); if(selectedPack.equals(pack.getInstanceName())){ play.render(x + 100, y, 0, 0, play.getWidth(), play.getHeight(), 0); } if (Mouse.isButtonDown(0)) { System.out.println(pack.getInstanceName()); int d = 0; for(ModPack packname : packs){ if(packname.getInstanceName().equals(pack.getInstanceName())){ if(selectedPack.equals(pack.getInstanceName()) && !isScrolling){ Thread thread = new Thread() { public void run() { ModPack launchPack = null; for (ModPack modPack : Launch.modPacks) { if (modPack.getInstanceName().equals(selectedPack)) { launchPack = modPack; } } try { OpenLauncherGui.loadingComponet.isLoading = true; new ModPackInstaller().playPack(launchPack); } catch (IOException e) { e.printStackTrace(); } } }; thread.start(); } scrolltwo = -(d * 550 -550); isScrolling = true; selectedPack = pack.getInstanceName(); } d++; } } } } // } } } public boolean souldRenderAt(int x) { System.out.println(x); if ( x > OpenLauncherGui.WIDTH){ return false; } return x < -600; } @Override public void input() { if(Keyboard.isKeyDown(Keyboard.KEY_RIGHT)){ scrolltwo += 550; isScrolling = true; } if(Keyboard.isKeyDown(Keyboard.KEY_LEFT)){ scrolltwo -= 550; isScrolling = true; } } @Override public void logic(int delta) { } }