equivalent-exchange-3/src/main/java/com/pahimar/ee3/client/gui/inventory/GuiTransmutationTablet.java

257 lines
9.1 KiB
Java
Raw Normal View History

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;
2015-04-02 07:26:01 +02:00
import com.pahimar.ee3.network.PacketHandler;
import com.pahimar.ee3.network.message.MessageGuiElementClicked;
2015-04-02 07:26:01 +02:00
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;
2015-05-04 20:14:58 +02:00
private ElementStatefulButton sortOrderButton;
private ElementSlider slider;
protected int tickCount;
2015-05-05 03:08:06 +02:00
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;
2015-05-04 20:14:58 +02:00
private static final int SORT_ASCENDING = 0;
private static final int SORT_DESCENDING = 1;
2023-01-03 17:47:36 +01:00
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
2023-01-03 17:47:36 +01:00
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();
2023-01-03 17:47:36 +01:00
sortOptionButton = new ElementStatefulButton(
this,
151,
36,
"sortOption",
0,
0,
18,
0,
36,
0,
18,
18,
54,
18,
Textures.Gui.Elements.BUTTON_SORT_OPTION
) {
@Override
2023-01-03 17:47:36 +01:00
public void drawBackground(int mouseX, int mouseY, float gameTicks) {
2015-05-04 20:14:58 +02:00
RenderHelper.bindTexture(texture);
2023-01-03 17:47:36 +01:00
if (isEnabled()) {
if (getState() == SORT_BY_DISPLAY_NAME) {
2015-05-04 20:14:58 +02:00
drawTexturedModalRect(posX, posY, 36, 0, sizeX, sizeY);
2023-01-03 17:47:36 +01:00
} else if (getState() == SORT_BY_ENERGY_VALUE) {
2015-05-04 20:14:58 +02:00
drawTexturedModalRect(posX, posY, 0, 0, sizeX, sizeY);
2023-01-03 17:47:36 +01:00
} else if (getState() == SORT_BY_ID) {
2015-05-05 03:08:06 +02:00
drawTexturedModalRect(posX, posY, 18, 0, sizeX, sizeY);
}
2015-05-04 20:14:58 +02:00
}
}
};
2023-01-03 17:47:36 +01:00
sortOrderButton = new ElementStatefulButton(
this,
151,
58,
"sortOrder",
0,
0,
0,
0,
18,
0,
18,
18,
36,
18,
Textures.Gui.Elements.BUTTON_SORT_ORDER
) {
2015-05-04 20:14:58 +02:00
@Override
2023-01-03 17:47:36 +01:00
public void drawBackground(int mouseX, int mouseY, float gameTicks) {
RenderHelper.bindTexture(texture);
2023-01-03 17:47:36 +01:00
if (isEnabled()) {
if (getState() == SORT_ASCENDING) {
drawTexturedModalRect(posX, posY, 0, 0, sizeX, sizeY);
2023-01-03 17:47:36 +01:00
} else if (getState() == SORT_DESCENDING) {
drawTexturedModalRect(posX, posY, 18, 0, sizeX, sizeY);
}
}
}
};
setTooltipByState();
2015-04-02 07:26:01 +02:00
2023-01-03 17:47:36 +01:00
slider = new ElementSlider(this, "scrollBar", 239, 36, 12, 201, 187, 0) {
@Override
2023-01-03 17:47:36 +01:00
protected void dragSlider(int x, int y) {
if (y > _value) {
setValue(_value + 1);
2023-01-03 17:47:36 +01:00
} else {
setValue(_value - 1);
}
}
@Override
2023-01-03 17:47:36 +01:00
public boolean onMouseWheel(int mouseX, int mouseY, int movement) {
PacketHandler.INSTANCE.sendToServer(new MessageSliderElementUpdated(this)
);
return super.onMouseWheel(mouseX, mouseY, movement);
}
2015-04-02 07:26:01 +02:00
@Override
2023-01-03 17:47:36 +01:00
public void onStopDragging() {
PacketHandler.INSTANCE.sendToServer(new MessageSliderElementUpdated(this)
);
2015-04-02 07:26:01 +02:00
}
@Override
2023-01-03 17:47:36 +01:00
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);
2015-05-04 20:14:58 +02:00
addElement(sortOrderButton);
addElement(searchTextField);
addElement(slider);
}
@Override
2023-01-03 17:47:36 +01:00
protected void drawGuiContainerForegroundLayer(int x, int y) {
super.drawGuiContainerForegroundLayer(x, y);
2023-01-03 17:47:36 +01:00
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
2023-01-03 17:47:36 +01:00
public void updateScreen() {
super.updateScreen();
tickCount++;
}
@Override
2023-01-03 17:47:36 +01:00
protected boolean checkHotbarKeys(int key) {
return false;
}
@Override
2023-01-03 17:47:36 +01:00
public void handleElementButtonClick(String buttonName, int mouseButton) {
if (buttonName.equals("sortOption")) {
PacketHandler.INSTANCE.sendToServer(
new MessageGuiElementClicked(buttonName, mouseButton)
);
2023-01-03 17:47:36 +01:00
if (mouseButton == LEFT_MOUSE_BUTTON) {
if (sortOptionButton.getState() == SORT_BY_DISPLAY_NAME) {
sortOptionButton.setState(SORT_BY_ENERGY_VALUE);
2023-01-03 17:47:36 +01:00
} else if (sortOptionButton.getState() == SORT_BY_ENERGY_VALUE) {
sortOptionButton.setState(SORT_BY_ID);
2023-01-03 17:47:36 +01:00
} else if (sortOptionButton.getState() == SORT_BY_ID) {
sortOptionButton.setState(SORT_BY_DISPLAY_NAME);
}
2023-01-03 17:47:36 +01:00
} else if (mouseButton == RIGHT_MOUSE_BUTTON) {
if (sortOptionButton.getState() == SORT_BY_DISPLAY_NAME) {
sortOptionButton.setState(SORT_BY_ID);
2023-01-03 17:47:36 +01:00
} else if (sortOptionButton.getState() == SORT_BY_ENERGY_VALUE) {
sortOptionButton.setState(SORT_BY_DISPLAY_NAME);
2023-01-03 17:47:36 +01:00
} else if (sortOptionButton.getState() == SORT_BY_ID) {
sortOptionButton.setState(SORT_BY_ENERGY_VALUE);
}
}
2015-05-05 03:08:06 +02:00
setTooltipByState();
2023-01-03 17:47:36 +01:00
} else if (buttonName.equals("sortOrder")) {
PacketHandler.INSTANCE.sendToServer(
new MessageGuiElementClicked(buttonName, mouseButton)
);
2015-05-05 03:08:06 +02:00
2023-01-03 17:47:36 +01:00
if (sortOrderButton.getState() == SORT_ASCENDING) {
2015-05-05 03:08:06 +02:00
sortOrderButton.setState(SORT_DESCENDING);
2023-01-03 17:47:36 +01:00
} else if (sortOrderButton.getState() == SORT_DESCENDING) {
2015-05-05 03:08:06 +02:00
sortOrderButton.setState(SORT_ASCENDING);
}
setTooltipByState();
}
}
2023-01-03 17:47:36 +01:00
private void setTooltipByState() {
sortOptionButton.clearToolTip();
2023-01-03 17:47:36 +01:00
if (sortOptionButton.getState() == SORT_BY_DISPLAY_NAME) {
sortOptionButton.setToolTip(Messages.Tooltips.SORT_BY_DISPLAY_NAME);
2023-01-03 17:47:36 +01:00
} else if (sortOptionButton.getState() == SORT_BY_ENERGY_VALUE) {
sortOptionButton.setToolTip(Messages.Tooltips.SORT_BY_ENERGY_VALUE);
2023-01-03 17:47:36 +01:00
} else if (sortOptionButton.getState() == SORT_BY_ID) {
sortOptionButton.setToolTip(Messages.Tooltips.SORT_BY_ID);
}
2015-05-05 03:08:06 +02:00
sortOrderButton.clearToolTip();
2023-01-03 17:47:36 +01:00
if (sortOrderButton.getState() == SORT_ASCENDING) {
2015-05-05 03:08:06 +02:00
sortOrderButton.setToolTip(Messages.Tooltips.SORT_ASCENDING);
2023-01-03 17:47:36 +01:00
} else if (sortOrderButton.getState() == SORT_DESCENDING) {
2015-05-05 03:08:06 +02:00
sortOrderButton.setToolTip(Messages.Tooltips.SORT_DESCENDING);
}
}
}