SimpleJavaEngine/src/main/java/speiger/src/coreengine/rendering/gui/components/CheckBoxComponent.java

123 lines
3.2 KiB
Java

package speiger.src.coreengine.rendering.gui.components;
import speiger.src.coreengine.rendering.gui.GuiComponent;
import speiger.src.coreengine.rendering.gui.base.IButtonComponent;
import speiger.src.coreengine.rendering.gui.components.misc.ICheckBox;
import speiger.src.coreengine.rendering.gui.helper.UIShapes;
import speiger.src.coreengine.rendering.gui.renderer.buffer.RenderBuffer;
public class CheckBoxComponent extends GuiComponent implements IButtonComponent, ICheckBox<CheckBoxComponent>
{
boolean isChecked = false;
int color;
RenderBuffer buffer;
public CheckBoxComponent(int color)
{
super(0F, 0F, 0F, 0F);
setFlag(FLAG_SUPPORT_BINDING);
this.color = color;
}
public CheckBoxComponent(int color, boolean checked)
{
super(0F, 0F, 0F, 0F);
setFlag(FLAG_SUPPORT_BINDING);
this.color = color;
}
public CheckBoxComponent(float x, float y, float width, float height, int color)
{
super(x, y, width, height);
setFlag(FLAG_SUPPORT_BINDING);
this.color = color;
}
public CheckBoxComponent(float x, float y, float width, float height, int color, boolean checked)
{
super(x, y, width, height);
setFlag(FLAG_SUPPORT_BINDING);
this.color = color;
isChecked = checked;
}
@Override
public void init()
{
addCloseListener(buffer = getRenderer().createBuffer());
}
@Override
public final CheckBoxComponent setChecked(boolean isChecked)
{
this.isChecked = isChecked;
return this;
}
public final CheckBoxComponent setColor(int color)
{
if(this.color != color)
{
this.color = color;
onChanged(true);
}
return this;
}
@Override
public boolean isChecked()
{
return isChecked;
}
@Override
protected void repaint()
{
float width = getBox().getWidth();
float height = getBox().getHeight();
buffer.clear();
UIShapes.createCross(buffer, width, height, (width / 3.3F), (height / 5F), color);
UIShapes.createCross(buffer, width, height, (width / 5F), (height / 10F), color);
}
@Override
public boolean renderSelf(int mouseX, int mouseY, float particalTicks)
{
float brightness = getActiveBrightness();
float centerX = getBox().getCenterX();
float centerY = getBox().getCenterY();
getRenderer().setBrightness(brightness).drawQuad(getBox(), color).setBrightness(brightness * 0.8F).drawFrame(getBox(), color).translate(centerX, centerY);
if(isChecked())
{
getRenderer().setBrightness(brightness * 0.7F).translate(0, 0, 0.001F).drawBuffers(buffer.selectionIterator(1), getBox().getWidth(), getBox().getHeight()).translate(0, 0, -0.001F);
}
if(isTopHovered(mouseX, mouseY))
{
getRenderer().setBrightness(brightness * 1.3F).translate(0, 0, 0.002F).drawBuffers(buffer.selectionIterator(0), getBox().getWidth(), getBox().getHeight()).translate(0, 0, -0.002F);
}
getRenderer().setBrightness(1F).translate(-centerX, -centerY);
return true;
}
@Override
public boolean onClick(int button, int mouseX, int mouseY)
{
return true;
}
@Override
public void onRelease(int button, int mouseX, int mouseY)
{
isChecked = !isChecked;
notifyListeners(LISTENER_USER_ACTION);
}
@Override
protected boolean onUserKey()
{
isChecked = !isChecked;
notifyListeners(LISTENER_USER_ACTION);
return true;
}
}