129 lines
3.2 KiB
Java
129 lines
3.2 KiB
Java
package speiger.src.coreengine.rendering.gui.components.menu;
|
|
|
|
import speiger.src.coreengine.rendering.gui.GuiComponent;
|
|
import speiger.src.coreengine.rendering.gui.base.IButtonComponent;
|
|
import speiger.src.coreengine.rendering.gui.components.TextComponent;
|
|
import speiger.src.coreengine.rendering.gui.helper.constrains.Constrains;
|
|
import speiger.src.coreengine.rendering.gui.helper.constrains.Constrain;
|
|
import speiger.src.coreengine.rendering.gui.helper.constrains.ParentConstrain;
|
|
import speiger.src.coreengine.rendering.gui.helper.constrains.PixelConstrain;
|
|
import speiger.src.coreengine.rendering.gui.helper.constrains.TextConstrain;
|
|
|
|
public class MenuItemComponent extends GuiComponent implements IButtonComponent
|
|
{
|
|
public static final int FLAG_KEEP_MENU_OPEN = 1 << 20;
|
|
|
|
TextComponent text = new TextComponent().singleLine(true).limit(false).setTextScale(0.35F).cast();
|
|
Integer color = null;
|
|
protected float boxWidth;
|
|
|
|
public MenuItemComponent(String name)
|
|
{
|
|
this(0F, 0F, 0F, 0F, name);
|
|
}
|
|
|
|
public MenuItemComponent(float x, float y, float width, float height, String name)
|
|
{
|
|
super(x, y, width, height);
|
|
text.setText(name);
|
|
setFlag(FLAG_SUPPORT_BINDING);
|
|
}
|
|
|
|
protected void setTextScale(float scale)
|
|
{
|
|
text.setTextScale(0.35F * scale);
|
|
}
|
|
|
|
public TextComponent getText()
|
|
{
|
|
return text;
|
|
}
|
|
|
|
protected Constrain createWidthConstriain()
|
|
{
|
|
return TextConstrain.width(text).setPadding(2F);
|
|
}
|
|
|
|
public final MenuItemComponent setIsNotClosingMenu(boolean value)
|
|
{
|
|
setFlag(FLAG_KEEP_MENU_OPEN, value);
|
|
return this;
|
|
}
|
|
|
|
public final boolean isNotClosingMenu()
|
|
{
|
|
return isFlagSet(FLAG_KEEP_MENU_OPEN);
|
|
}
|
|
|
|
public MenuItemComponent setCustomColor(int color)
|
|
{
|
|
this.color = color;
|
|
return this;
|
|
}
|
|
|
|
protected void setMenuColor(int color)
|
|
{
|
|
if(this.color == null)
|
|
{
|
|
this.color = color;
|
|
}
|
|
}
|
|
|
|
protected void setBoxWidth(float value)
|
|
{
|
|
boxWidth = value;
|
|
}
|
|
|
|
@Override
|
|
public void init()
|
|
{
|
|
addChild(text, new Constrains(new PixelConstrain(0.25F), new ParentConstrain(), new ParentConstrain(), new ParentConstrain()));
|
|
}
|
|
|
|
@Override
|
|
protected boolean isOverBox(int mouseX, int mouseY)
|
|
{
|
|
float minX = getBox().getMinX();
|
|
float maxX = Math.max(getBox().getMaxX(), minX + boxWidth);
|
|
return minX <= mouseX && maxX >= mouseX && getBox().getMinY() <= mouseY && getBox().getMaxY() >= mouseY;
|
|
}
|
|
|
|
@Override
|
|
protected boolean renderSelf(int mouseX, int mouseY, float particalTicks)
|
|
{
|
|
float brigthness = getBrightness(mouseX, mouseY);
|
|
float minX = getBox().getMinX(0.2F);
|
|
float minY = getBox().getMinY(0.2F);
|
|
float maxX = Math.max(getBox().getMaxX(), minX + boxWidth);
|
|
float maxY = getBox().getMaxY(-0.2F);
|
|
getRenderer().setBrightness(brigthness).drawQuad(minX, minY, maxX, maxY, color).setBrightness(brigthness * 0.5F).drawFrame(minX, minY, maxX, maxY, color);
|
|
text.setBrightness(brigthness);
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public boolean onClick(int button, int mouseX, int mouseY)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public void onRelease(int button, int mouseX, int mouseY)
|
|
{
|
|
notifyListeners(LISTENER_USER_ACTION);
|
|
}
|
|
|
|
@Override
|
|
protected boolean onUserKey()
|
|
{
|
|
notifyListeners(LISTENER_USER_ACTION);
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public String toString()
|
|
{
|
|
return "Menu Item: "+getText().getText();
|
|
}
|
|
}
|