257 lines
9.1 KiB
Java
257 lines
9.1 KiB
Java
package com.pahimar.ee3.client.gui.inventory;
|
|
|
|
import com.pahimar.ee3.client.gui.element.ElementSearchField;
|
|
import com.pahimar.ee3.client.gui.element.ElementStatefulButton;
|
|
import com.pahimar.ee3.inventory.ContainerTransmutationTablet;
|
|
import com.pahimar.ee3.network.PacketHandler;
|
|
import com.pahimar.ee3.network.message.MessageGuiElementClicked;
|
|
import com.pahimar.ee3.network.message.MessageSliderElementUpdated;
|
|
import com.pahimar.ee3.reference.Colors;
|
|
import com.pahimar.ee3.reference.Messages;
|
|
import com.pahimar.ee3.reference.Textures;
|
|
import com.pahimar.ee3.tileentity.TileEntityTransmutationTablet;
|
|
import com.pahimar.repackage.cofh.lib.gui.GuiBase;
|
|
import com.pahimar.repackage.cofh.lib.gui.GuiColor;
|
|
import com.pahimar.repackage.cofh.lib.gui.element.ElementSlider;
|
|
import com.pahimar.repackage.cofh.lib.gui.element.ElementTextField;
|
|
import com.pahimar.repackage.cofh.lib.render.RenderHelper;
|
|
import cpw.mods.fml.relauncher.Side;
|
|
import cpw.mods.fml.relauncher.SideOnly;
|
|
import net.minecraft.entity.player.InventoryPlayer;
|
|
import net.minecraft.util.StatCollector;
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
public class GuiTransmutationTablet extends GuiBase {
|
|
private ContainerTransmutationTablet containerTablet;
|
|
|
|
private ElementTextField searchTextField;
|
|
private ElementStatefulButton sortOptionButton;
|
|
private ElementStatefulButton sortOrderButton;
|
|
private ElementSlider slider;
|
|
protected int tickCount;
|
|
|
|
private static final int LEFT_MOUSE_BUTTON = 0;
|
|
private static final int RIGHT_MOUSE_BUTTON = 1;
|
|
|
|
private static final int SORT_BY_DISPLAY_NAME = 0;
|
|
private static final int SORT_BY_ENERGY_VALUE = 1;
|
|
private static final int SORT_BY_ID = 2;
|
|
|
|
private static final int SORT_ASCENDING = 0;
|
|
private static final int SORT_DESCENDING = 1;
|
|
|
|
public GuiTransmutationTablet(
|
|
InventoryPlayer inventoryPlayer,
|
|
TileEntityTransmutationTablet tileEntityTransmutationTablet
|
|
) {
|
|
super(
|
|
new ContainerTransmutationTablet(
|
|
inventoryPlayer, tileEntityTransmutationTablet
|
|
),
|
|
Textures.Gui.TRANSMUTATION_TABLET
|
|
);
|
|
this.containerTablet = (ContainerTransmutationTablet) this.inventorySlots;
|
|
xSize = 256;
|
|
ySize = 256;
|
|
}
|
|
|
|
@Override
|
|
public void initGui() {
|
|
super.initGui();
|
|
|
|
this.drawTitle = false;
|
|
this.drawInventory = false;
|
|
|
|
searchTextField = new ElementSearchField(this, 173, 18, "searchField", 78, 10);
|
|
searchTextField.backgroundColor = new GuiColor(0, 0, 0, 0).getColor();
|
|
searchTextField.borderColor = new GuiColor(0, 0, 0, 0).getColor();
|
|
|
|
sortOptionButton = new ElementStatefulButton(
|
|
this,
|
|
151,
|
|
36,
|
|
"sortOption",
|
|
0,
|
|
0,
|
|
18,
|
|
0,
|
|
36,
|
|
0,
|
|
18,
|
|
18,
|
|
54,
|
|
18,
|
|
Textures.Gui.Elements.BUTTON_SORT_OPTION
|
|
) {
|
|
@Override
|
|
public void drawBackground(int mouseX, int mouseY, float gameTicks) {
|
|
RenderHelper.bindTexture(texture);
|
|
if (isEnabled()) {
|
|
if (getState() == SORT_BY_DISPLAY_NAME) {
|
|
drawTexturedModalRect(posX, posY, 36, 0, sizeX, sizeY);
|
|
} else if (getState() == SORT_BY_ENERGY_VALUE) {
|
|
drawTexturedModalRect(posX, posY, 0, 0, sizeX, sizeY);
|
|
} else if (getState() == SORT_BY_ID) {
|
|
drawTexturedModalRect(posX, posY, 18, 0, sizeX, sizeY);
|
|
}
|
|
}
|
|
}
|
|
};
|
|
|
|
sortOrderButton = new ElementStatefulButton(
|
|
this,
|
|
151,
|
|
58,
|
|
"sortOrder",
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
18,
|
|
0,
|
|
18,
|
|
18,
|
|
36,
|
|
18,
|
|
Textures.Gui.Elements.BUTTON_SORT_ORDER
|
|
) {
|
|
@Override
|
|
public void drawBackground(int mouseX, int mouseY, float gameTicks) {
|
|
RenderHelper.bindTexture(texture);
|
|
if (isEnabled()) {
|
|
if (getState() == SORT_ASCENDING) {
|
|
drawTexturedModalRect(posX, posY, 0, 0, sizeX, sizeY);
|
|
} else if (getState() == SORT_DESCENDING) {
|
|
drawTexturedModalRect(posX, posY, 18, 0, sizeX, sizeY);
|
|
}
|
|
}
|
|
}
|
|
};
|
|
setTooltipByState();
|
|
|
|
slider = new ElementSlider(this, "scrollBar", 239, 36, 12, 201, 187, 0) {
|
|
@Override
|
|
protected void dragSlider(int x, int y) {
|
|
if (y > _value) {
|
|
setValue(_value + 1);
|
|
} else {
|
|
setValue(_value - 1);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public boolean onMouseWheel(int mouseX, int mouseY, int movement) {
|
|
PacketHandler.INSTANCE.sendToServer(new MessageSliderElementUpdated(this)
|
|
);
|
|
return super.onMouseWheel(mouseX, mouseY, movement);
|
|
}
|
|
|
|
@Override
|
|
public void onStopDragging() {
|
|
PacketHandler.INSTANCE.sendToServer(new MessageSliderElementUpdated(this)
|
|
);
|
|
}
|
|
|
|
@Override
|
|
public int getSliderY() {
|
|
return _value;
|
|
}
|
|
};
|
|
slider.backgroundColor = new GuiColor(0, 0, 0, 0).getColor();
|
|
slider.borderColor = new GuiColor(0, 0, 0, 0).getColor();
|
|
slider.setSliderSize(12, 15);
|
|
|
|
addElement(sortOptionButton);
|
|
addElement(sortOrderButton);
|
|
addElement(searchTextField);
|
|
addElement(slider);
|
|
}
|
|
|
|
@Override
|
|
protected void drawGuiContainerForegroundLayer(int x, int y) {
|
|
super.drawGuiContainerForegroundLayer(x, y);
|
|
fontRendererObj.drawString(
|
|
String.format("%s:", StatCollector.translateToLocal(Messages.ENERGY_VALUE)),
|
|
10,
|
|
142,
|
|
Integer.parseInt(Colors.PURE_WHITE, 16)
|
|
);
|
|
fontRendererObj.drawString(
|
|
String.format("%s", containerTablet.getEnergyValue()),
|
|
10,
|
|
152,
|
|
Integer.parseInt(Colors.PURE_WHITE, 16)
|
|
);
|
|
}
|
|
|
|
@Override
|
|
public void updateScreen() {
|
|
super.updateScreen();
|
|
tickCount++;
|
|
}
|
|
|
|
@Override
|
|
protected boolean checkHotbarKeys(int key) {
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public void handleElementButtonClick(String buttonName, int mouseButton) {
|
|
if (buttonName.equals("sortOption")) {
|
|
PacketHandler.INSTANCE.sendToServer(
|
|
new MessageGuiElementClicked(buttonName, mouseButton)
|
|
);
|
|
|
|
if (mouseButton == LEFT_MOUSE_BUTTON) {
|
|
if (sortOptionButton.getState() == SORT_BY_DISPLAY_NAME) {
|
|
sortOptionButton.setState(SORT_BY_ENERGY_VALUE);
|
|
} else if (sortOptionButton.getState() == SORT_BY_ENERGY_VALUE) {
|
|
sortOptionButton.setState(SORT_BY_ID);
|
|
} else if (sortOptionButton.getState() == SORT_BY_ID) {
|
|
sortOptionButton.setState(SORT_BY_DISPLAY_NAME);
|
|
}
|
|
} else if (mouseButton == RIGHT_MOUSE_BUTTON) {
|
|
if (sortOptionButton.getState() == SORT_BY_DISPLAY_NAME) {
|
|
sortOptionButton.setState(SORT_BY_ID);
|
|
} else if (sortOptionButton.getState() == SORT_BY_ENERGY_VALUE) {
|
|
sortOptionButton.setState(SORT_BY_DISPLAY_NAME);
|
|
} else if (sortOptionButton.getState() == SORT_BY_ID) {
|
|
sortOptionButton.setState(SORT_BY_ENERGY_VALUE);
|
|
}
|
|
}
|
|
|
|
setTooltipByState();
|
|
} else if (buttonName.equals("sortOrder")) {
|
|
PacketHandler.INSTANCE.sendToServer(
|
|
new MessageGuiElementClicked(buttonName, mouseButton)
|
|
);
|
|
|
|
if (sortOrderButton.getState() == SORT_ASCENDING) {
|
|
sortOrderButton.setState(SORT_DESCENDING);
|
|
} else if (sortOrderButton.getState() == SORT_DESCENDING) {
|
|
sortOrderButton.setState(SORT_ASCENDING);
|
|
}
|
|
|
|
setTooltipByState();
|
|
}
|
|
}
|
|
|
|
private void setTooltipByState() {
|
|
sortOptionButton.clearToolTip();
|
|
if (sortOptionButton.getState() == SORT_BY_DISPLAY_NAME) {
|
|
sortOptionButton.setToolTip(Messages.Tooltips.SORT_BY_DISPLAY_NAME);
|
|
} else if (sortOptionButton.getState() == SORT_BY_ENERGY_VALUE) {
|
|
sortOptionButton.setToolTip(Messages.Tooltips.SORT_BY_ENERGY_VALUE);
|
|
} else if (sortOptionButton.getState() == SORT_BY_ID) {
|
|
sortOptionButton.setToolTip(Messages.Tooltips.SORT_BY_ID);
|
|
}
|
|
|
|
sortOrderButton.clearToolTip();
|
|
if (sortOrderButton.getState() == SORT_ASCENDING) {
|
|
sortOrderButton.setToolTip(Messages.Tooltips.SORT_ASCENDING);
|
|
} else if (sortOrderButton.getState() == SORT_DESCENDING) {
|
|
sortOrderButton.setToolTip(Messages.Tooltips.SORT_DESCENDING);
|
|
}
|
|
}
|
|
}
|