package com.flansmod.client.gui.teams; import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.GL11; import com.flansmod.common.FlansMod; import com.flansmod.common.network.PacketBaseEdit; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiTextField; import net.minecraft.client.gui.ScaledResolution; import net.minecraft.util.ResourceLocation; import java.io.IOException; import java.util.Arrays; public class GuiBaseEditor extends GuiScreen { private static final ResourceLocation texture = new ResourceLocation("flansmod", "gui/baseEdit.png"); private int guiOriginX; private int guiOriginY; private GuiTextField nameEntryField; private GuiButton[] teamButtons; private GuiButton[] mapButtons; private GuiButton leftButton; private GuiButton rightButton; private int mapsPage; /** The packet received from the server containing all the base information. Modify this and send it back */ public PacketBaseEdit packet; public GuiBaseEditor(PacketBaseEdit packet) { this.packet = packet; } public void initGui() { super.initGui(); this.buttonList.clear(); //Setup the text entry field Keyboard.enableRepeatEvents(true); nameEntryField = new GuiTextField(0, this.fontRendererObj, width / 2 - 128 + 70, height / 2 - 94 + 24, 179, fontRendererObj.FONT_HEIGHT); nameEntryField.setMaxStringLength(60); nameEntryField.setEnableBackgroundDrawing(true); nameEntryField.setVisible(true); nameEntryField.setFocused(true); nameEntryField.setTextColor(16777215); nameEntryField.setText(packet.baseName); //Add buttons teamButtons = new GuiButton[4]; teamButtons[0] = new GuiButton(0, width / 2 - 128 + 6, height / 2 - 94 + 38, 58, 20, "No Team"); teamButtons[1] = new GuiButton(1, width / 2 - 128 + 68, height / 2 - 94 + 38, 58, 20, "Spectator"); teamButtons[2] = new GuiButton(2, width / 2 - 128 + 130, height / 2 - 94 + 38, 58, 20, "Team 1"); teamButtons[3] = new GuiButton(3, width / 2 - 128 + 192, height / 2 - 94 + 38, 58, 20, "Team 2"); buttonList.addAll(Arrays.asList(teamButtons).subList(0, 4)); mapButtons = new GuiButton[5]; for(int i = 0; i < 5; i++) { mapButtons[i] = new GuiButton(4 + i, width / 2 - 128 + 28, height / 2 - 94 + 75 + 22 * i, 200, 20, "Map " + (i + 1)); buttonList.add(mapButtons[i]); } leftButton = new GuiButton(9, width / 2 - 128 + 6, height / 2 - 94 + 119, 20, 20, "<"); rightButton = new GuiButton(10, width / 2 + 128 - 26, height / 2 - 94 + 119, 20, 20, ">"); buttonList.add(leftButton); buttonList.add(rightButton); } @Override public void drawScreen(int i, int j, float f) { ScaledResolution scaledresolution = new ScaledResolution(mc); int k = scaledresolution.getScaledWidth(); int l = scaledresolution.getScaledHeight(); FontRenderer fontrenderer = mc.fontRendererObj; drawDefaultBackground(); GL11.glEnable(3042 /*GL_BLEND*/); mc.renderEngine.bindTexture(texture); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); int m = guiOriginX = k / 2 - 128; int n = guiOriginY = l / 2 - 94; drawTexturedModalRect(m, n, 0, 0, 256, 189); drawString(fontRendererObj, "Base Settings", guiOriginX + 6, guiOriginY + 6, 0xffffff); drawString(fontRendererObj, "Base Name : ", guiOriginX + 6, guiOriginY + 24, 0xffffff); drawString(fontRendererObj, "Map", guiOriginX + 6, guiOriginY + 64, 0xffffff); nameEntryField.drawTextBox(); super.drawScreen(i, j, f); } @Override protected void actionPerformed(GuiButton button) { switch(button.id) { case 0 : case 1 : case 2 : case 3 : packet.teamID = button.id; break; case 4 : case 5 : case 6 : case 7 : case 8 : packet.mapID = mapsPage * 5 + button.id - 4; break; case 9 : mapsPage--; break; case 10 : mapsPage++; break; } } @Override public void updateScreen() { for(int i = 0; i < 4; i++) { teamButtons[i].enabled = packet.teamID != i; } for(int i = 0; i < 5; i++) { mapButtons[i].visible = packet.maps.length > i + mapsPage * 5; if(mapButtons[i].visible) { mapButtons[i].displayString = packet.maps[i + mapsPage * 5]; mapButtons[i].enabled = i + mapsPage * 5 != packet.mapID; } } rightButton.visible = packet.maps.length > (mapsPage + 1) * 5; leftButton.visible = mapsPage > 0; nameEntryField.updateCursorCounter(); } @Override protected void mouseClicked(int i, int j, int k) { try { super.mouseClicked(i, j, k); } catch(IOException e) {} nameEntryField.mouseClicked(i, j, k); } @Override protected void keyTyped(char c, int i) { try { super.keyTyped(c, i); } catch(IOException e) {} nameEntryField.textboxKeyTyped(c, i); } @Override public void onGuiClosed() { super.onGuiClosed(); packet.baseName = nameEntryField.getText(); Keyboard.enableRepeatEvents(false); FlansMod.getPacketHandler().sendToServer(packet); } @Override public boolean doesGuiPauseGame() { return false; } }