Здравствуйте! Хочу изменить дизайн кнопки по такому принципу: игрок кликнул- кнопка стала зеленой, игрок кликнул еще раз- кнопка стала обычной и так циклично.
Исходя из этого создал свой класс кнопки наследник GuiButton, и создал там переменную green, при клике делаю ее значение = !green. В классе кнопки во время ее прорисовки смотрю на значение этой переменной и если она true делаю bindTexture с зеленой кнопкой.
Однако почему-то кнопка не меняет свой цвет. Пытался делать прорисовку чисто зеленой кнопки без if'а- все отлично работает. Видимо, какая-то проблема со сменой дизайна кнопки во время процесса прорисовки.
Вот код:
Код ниже bindTexture я взял с метода drawButton класса GuiButton
Исходя из этого создал свой класс кнопки наследник GuiButton, и создал там переменную green, при клике делаю ее значение = !green. В классе кнопки во время ее прорисовки смотрю на значение этой переменной и если она true делаю bindTexture с зеленой кнопкой.
Однако почему-то кнопка не меняет свой цвет. Пытался делать прорисовку чисто зеленой кнопки без if'а- все отлично работает. Видимо, какая-то проблема со сменой дизайна кнопки во время процесса прорисовки.
Вот код:
Код ниже bindTexture я взял с метода drawButton класса GuiButton
Код:
public class PlayerButton extends GuiButton {
private boolean isGreen = false;
public PlayerButton(int par1, int par2, int par3, int par4, int par5, String par6Str) {
super(par1, par2, par3, par4, par5, par6Str);
}
public boolean isGreen() {
return isGreen;
}
public void setGreen(boolean green) {
isGreen = green;
}
@Override
public void drawButton(Minecraft par1Minecraft, int par2, int par3)
{
if (this.drawButton)
{
FontRenderer fontrenderer = par1Minecraft.fontRenderer;
if (isGreen) {
par1Minecraft.getTextureManager().bindTexture(new ResourceLocation("raids:textures/gui/mybutton.png"));
} else {
par1Minecraft.getTextureManager().bindTexture(buttonTextures);
}
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
this.field_82253_i = par2 >= this.xPosition && par3 >= this.yPosition && par2 < this.xPosition + this.width && par3 < this.yPosition + this.height;
int k = this.getHoverState(this.field_82253_i);
this.drawTexturedModalRect(this.xPosition, this.yPosition, 0, 46 + k * 20, this.width / 2, this.height);
this.drawTexturedModalRect(this.xPosition + this.width / 2, this.yPosition, 200 - this.width / 2, 46 + k * 20, this.width / 2, this.height);
this.mouseDragged(par1Minecraft, par2, par3);
int l = 14737632;
if (!this.enabled)
{
l = -6250336;
}
else if (this.field_82253_i)
{
l = 16777120;
}
this.drawCenteredString(fontrenderer, this.displayString, this.xPosition + this.width / 2, this.yPosition + (this.height - 8) / 2, l);
}
}
}