package com.maceswinger.gui.components;
import static org.lwjgl.opengl.GL11.GL_QUADS;
import static org.lwjgl.opengl.GL11.GL_TEXTURE_2D;
import static org.lwjgl.opengl.GL11.glBegin;
import static org.lwjgl.opengl.GL11.glBindTexture;
import static org.lwjgl.opengl.GL11.glEnd;
import static org.lwjgl.opengl.GL11.glPopMatrix;
import static org.lwjgl.opengl.GL11.glPushMatrix;
import static org.lwjgl.opengl.GL11.glTexCoord2f;
import static org.lwjgl.opengl.GL11.glVertex2f;
import java.util.ArrayList;
import java.util.List;
import org.lwjgl.opengl.GL11;
import com.maceswinger.gui.Gui;
import com.maceswinger.gui.components.GuiButtonArray.Button;
import com.maceswinger.utils.CustomMouse;
import com.maceswinger.utils.Textures;
public class GuiTexturedButtonArray extends GuiComponent{
private List<TexturedButton> options = new ArrayList<TexturedButton>();
public GuiTexturedButtonArray(int id, Gui gui) {
super(id, gui);
}
public void addButton(TexturedButton button) {
options.add(button);
}
public int getId() {
return id;
}
public class TexturedButton {
public int id;
public int text, ttext;
public boolean isAvailable = true;
private float x,y;
private float width,height;
private boolean isActive = true;
public TexturedButton(int id, int text,int ttext, float x, float y, float width, float height) {
this.id = id;
this.text = text;
this.ttext=ttext;
this.x=x;
this.y=y;
this.width = width;
this.height=height;
}
public boolean isCustomMouseinBounds(){
if(CustomMouse.getX()<this.x+width&&CustomMouse.getX()>this.x&&CustomMouse.getY()<this.y+height&&CustomMouse.getY()>this.y){
return true;
}
return false;
}
public void tick(){
if (isActive && CustomMouse.isButtonDown(0) && isCustomMouseinBounds()) {
parent.guiActionPerformed(id, 0);
} else if (!isCustomMouseinBounds()) {
isActive = true;
}
}
}
public void render() {
for (TexturedButton o : options) {
glPushMatrix();
if(o.isCustomMouseinBounds())GL11.glColor4f(1,1,1,1);
if(!o.isCustomMouseinBounds())GL11.glColor4f(1,1,1,0.5f);
glBindTexture(GL_TEXTURE_2D,Textures.textureID[o.text]);
glBegin(GL_QUADS);
glTexCoord2f(0,1);
glVertex2f(o.x, o.y);
glTexCoord2f(1,1);
glVertex2f(o.x+o.width, o.y);
glTexCoord2f(1,0);
glVertex2f(o.x+o.width, o.y+o.height);
glTexCoord2f(0,0);
glVertex2f(o.x, o.y+o.height);
GL11.glColor4f(1,1,1,1);
glEnd();
glBindTexture(GL_TEXTURE_2D,Textures.textureID[o.ttext]);
if(o.isCustomMouseinBounds())GL11.glTranslatef(0,6,0);
glBegin(GL_QUADS);
glTexCoord2f(0,1);
glVertex2f(o.x, o.y);
glTexCoord2f(1,1);
glVertex2f(o.x+o.width, o.y);
glTexCoord2f(1,0);
glVertex2f(o.x+o.width, o.y+o.height);
glTexCoord2f(0,0);
glVertex2f(o.x, o.y+o.height);
GL11.glColor4f(1,1,1,1);
glEnd();
glPopMatrix();
}
}
@Override
public void tick(int ticks) {
for(TexturedButton b:options){
b.tick();
}
}
public void deactivate(int id) {
for (TexturedButton o : options) {
if (o.id == id) {
o.isActive = false;
return;
}
}
}
}