package mods.ocminecart.client.gui;
import mods.ocminecart.OCMinecart;
import mods.ocminecart.client.gui.widget.GuiUtil;
import mods.ocminecart.common.container.RemoteModuleContainer;
import mods.ocminecart.network.ModNetwork;
import mods.ocminecart.network.message.GuiButtonClick;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiTextField;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.StatCollector;
import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.GL11;
import java.util.ArrayList;
import java.util.List;
public class RemoteModuleGui extends GuiContainer {
private GuiTextField pass;
private ResourceLocation texture = new ResourceLocation(OCMinecart.MODID+":textures/gui/remotemodulegui.png");
private int passMsgR = 100;
private boolean oPerm = false;
private boolean locked = false;
public RemoteModuleGui(){
super(new RemoteModuleContainer());
this.xSize=150;
this.ySize=117;
}
@Override
public void initGui(){
super.initGui();
pass = new GuiTextField(Minecraft.getMinecraft().fontRenderer,8,85,75,10);
pass.setFocused(false);
pass.setEnabled(false);
pass.setMaxStringLength(10);
this.buttonList.add(new GuiButton(0, 85+this.guiLeft, 84+this.guiTop, 60, 20, StatCollector.translateToLocal("gui."+OCMinecart.MODID+".general.confirm")));
this.buttonList.add(new GuiButton(1, 126+this.guiLeft, 4+this.guiTop, 20, 20, "U"));
this.buttonList.add(new GuiButton(2, 8+this.guiLeft, 20+this.guiTop, 84, 20, EnumChatFormatting.RED+
StatCollector.translateToLocal("gui."+OCMinecart.MODID+".remotem.remmodule")));
((GuiButton)this.buttonList.get(0)).enabled=false;
((GuiButton)this.buttonList.get(1)).enabled=false;
}
@Override
protected void drawGuiContainerBackgroundLayer(float p_146976_1_,int p_146976_2_, int p_146976_3_) {
GL11.glColor3d(1F, 1F, 1F);
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
func_146110_a(this.guiLeft,this.guiTop,0,0,this.xSize,this.ySize, this.xSize,this.ySize); //Same as drawTexturedModalRect, but allows custom image sizes
}
@Override
protected void drawGuiContainerForegroundLayer(int mx, int my) {
GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS);
this.fontRendererObj.drawString(StatCollector.translateToLocal("gui."+OCMinecart.MODID+".remmconf"), 8,8, 0x404040);
pass.drawTextBox();
int stat = this.getContainer().passstate;
if(stat==1) this.fontRendererObj.drawString(StatCollector.translateToLocal("gui."+OCMinecart.MODID+".general.success"), 10, 100, 0x10AA10);
else if(stat==2) this.fontRendererObj.drawString(StatCollector.translateToLocal("gui."+OCMinecart.MODID+".general.failed"), 10, 100, 0xFF3030);
this.fontRendererObj.drawString(StatCollector.translateToLocal("gui."+OCMinecart.MODID+".remotem.chpass"), 8, 73, 0x404040);
GuiButton b1 = (GuiButton) this.buttonList.get(0);
if(this.func_146978_c(b1.xPosition, b1.yPosition, b1.width, b1.height, mx+this.guiLeft, my+this.guiTop)){
List<String> txt = new ArrayList<String>();
txt.add(EnumChatFormatting.WHITE+StatCollector.translateToLocal("tooltip."+OCMinecart.MODID+".gui.chpass"));
txt.add(EnumChatFormatting.GRAY+StatCollector.translateToLocal("tooltip."+OCMinecart.MODID+".gui.empass"));
GuiUtil.drawHoverText(txt, mx-this.guiLeft, my-this.guiTop, this.width, this.height, this.guiLeft, Minecraft.getMinecraft().fontRenderer);
}
b1 = (GuiButton) this.buttonList.get(1);
if(this.func_146978_c(b1.xPosition, b1.yPosition, b1.width, b1.height, mx+this.guiLeft, my+this.guiTop)){
List<String> txt = new ArrayList<String>();
txt.add(EnumChatFormatting.WHITE+((locked)?"Locked":"Unlocked"));
txt.add(EnumChatFormatting.GRAY+StatCollector.translateToLocal("tooltip."+OCMinecart.MODID+".gui.lockbtn"));
GuiUtil.drawHoverText(txt, mx-this.guiLeft, my-this.guiTop, this.width, this.height, this.guiLeft, Minecraft.getMinecraft().fontRenderer);
}
GL11.glPopAttrib();
}
protected void keyTyped(char ch, int key){
if(key==Keyboard.KEY_ESCAPE) super.keyTyped(ch, key);
else if(pass.isFocused()) pass.textboxKeyTyped(ch, key);
else super.keyTyped(ch, key);
}
protected void mouseClicked(int x, int y, int key){
super.mouseClicked(x, y, key);
pass.mouseClicked(x-this.guiLeft,y-this.guiTop,key);
}
public void actionPerformed(GuiButton button){
switch(button.id){
case 0:
NBTTagCompound nbt = new NBTTagCompound();
nbt.setString("password", pass.getText());
ModNetwork.channel.sendToServer(new GuiButtonClick(2,0,nbt));
this.pass.setText("");
break;
case 1:
ModNetwork.channel.sendToServer(new GuiButtonClick(2,1,null));
break;
case 2:
ModNetwork.channel.sendToServer(new GuiButtonClick(2,2,null));
break;
}
}
private RemoteModuleContainer getContainer(){
return (RemoteModuleContainer) this.inventorySlots;
}
public void updateScreen(){
if(this.getContainer().passstate!=0){
this.passMsgR--;
if(this.passMsgR<=0) this.getContainer().passstate=0;
}
else if(this.passMsgR!=100) this.passMsgR=100;
if(locked!=this.getContainer().locked){
locked=this.getContainer().locked;
((GuiButton)this.buttonList.get(1)).displayString=(locked)?"L":"U";
}
if(oPerm!=this.getContainer().perm){
oPerm = this.getContainer().perm;
this.pass.setEnabled(oPerm);
((GuiButton)this.buttonList.get(0)).enabled=oPerm;
((GuiButton)this.buttonList.get(1)).enabled=oPerm;
}
}
}