Package erogenousbeef.bigreactors.client.gui

Source Code of erogenousbeef.bigreactors.client.gui.GuiReactorControlRod

package erogenousbeef.bigreactors.client.gui;

import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiTextField;
import net.minecraft.inventory.Container;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.ResourceLocation;

import org.lwjgl.input.Keyboard;

import erogenousbeef.bigreactors.client.ClientProxy;
import erogenousbeef.bigreactors.common.BigReactors;
import erogenousbeef.bigreactors.common.multiblock.tileentity.TileEntityReactorControlRod;
import erogenousbeef.bigreactors.gui.controls.BeefGuiIcon;
import erogenousbeef.bigreactors.gui.controls.BeefGuiInsertionProgressBar;
import erogenousbeef.bigreactors.gui.controls.BeefGuiLabel;
import erogenousbeef.bigreactors.gui.controls.GuiIconButton;
import erogenousbeef.bigreactors.net.CommonPacketHandler;
import erogenousbeef.bigreactors.net.message.ControlRodChangeInsertionMessage;
import erogenousbeef.bigreactors.net.message.ControlRodChangeNameMessage;

public class GuiReactorControlRod extends BeefGuiBase {

  TileEntityReactorControlRod entity;
 
  BeefGuiLabel titleString;
  BeefGuiLabel rodNameLabel;
  BeefGuiLabel insertionLabel;

  GuiButton setNameBtn;
 
  BeefGuiIcon rodInsertIcon;
  GuiIconButton rodInsertBtn;
  GuiIconButton rodRetractBtn;

  BeefGuiInsertionProgressBar insertionBar;
 
    private GuiTextField rodName;

 
  public GuiReactorControlRod(Container c, TileEntityReactorControlRod controlRod) {
    super(c);
   
    entity = controlRod;
  }
 
  @Override
  public ResourceLocation getGuiBackground() {
    return new ResourceLocation (BigReactors.GUI_DIRECTORY + "BasicBackground.png");
  }

  @Override
  public void initGui() {
    super.initGui();

    int leftX = guiLeft + 4;
    int topY = guiTop + 4;
   
    Keyboard.enableRepeatEvents(true);
   
    titleString = new BeefGuiLabel(this, "Reactor Control Rod", leftX, topY);
    topY += titleString.getHeight() + 8;
   
    rodNameLabel = new BeefGuiLabel(this, "Name:", leftX, topY + 6);
   
    rodName = new GuiTextField(fontRendererObj, leftX + 4 + rodNameLabel.getWidth(), topY, 100, 20);
    rodName.setCanLoseFocus(true);
    rodName.setMaxStringLength(32);
    rodName.setText(entity.getName());
    rodName.setEnabled(true);
   
    setNameBtn = new GuiButton(2, guiLeft + 140, topY, 30, 20, "Set");
    setNameBtn.enabled = false;
    topY += 28;
   
    rodInsertIcon = new BeefGuiIcon(this, leftX+42, topY, 16, 16, ClientProxy.GuiIcons.getIcon("controlRod"), new String[] { EnumChatFormatting.AQUA + "Rod Insertion", "", "Change the control rod's insertion.", "Higher insertion slows reaction rate.", "", "Lower reaction rates reduce heat,", "energy, radiation output, and", "fuel consumption." });
    insertionLabel = new BeefGuiLabel(this, "", leftX+62, topY+5);
    topY += 20;
    insertionBar = new BeefGuiInsertionProgressBar(this, leftX+40, topY);

    topY += 12;
    rodRetractBtn = new GuiIconButton(0, leftX+70, topY, 20, 20, ClientProxy.GuiIcons.getIcon("upArrow"), new String[] { EnumChatFormatting.AQUA + "Insert Rod", "Increase insertion by 10.", "", "Shift: +100", "Alt: +5", "Shift+Alt: +1", "", "Ctrl: Change ALL Rods" });
    topY += 20;
    rodInsertBtn = new GuiIconButton(1, leftX+70, topY, 20, 20, ClientProxy.GuiIcons.getIcon("downArrow"), new String[] { EnumChatFormatting.AQUA + "Retract Rod", "Reduce insertion by 10.", "", "Shift: -100", "Alt: -5", "Shift+Alt: -1", "", "Ctrl: Change ALL Rods" });
    topY += 32;

    registerControl(insertionBar);
    registerControl(titleString);
    registerControl(rodNameLabel);
    registerControl(rodInsertIcon);
    registerControl(insertionLabel);

    registerControl(rodName);
    registerControl(rodRetractBtn);
    registerControl(rodInsertBtn);
    registerControl(setNameBtn);
   
    updateStrings();
  }
 
  @Override
  public void onGuiClosed() {
    super.onGuiClosed();
    Keyboard.enableRepeatEvents(false);
  }
 
  @Override
  public void updateScreen() {
    super.updateScreen();
    updateStrings();
  }
 
  protected void updateStrings() {
    if(entity.isConnected()) {
      rodInsertBtn.enabled = true;
      rodRetractBtn.enabled = true;
    }
    else {
      rodInsertBtn.enabled = false;
      rodRetractBtn.enabled = false;
    }
   
    insertionLabel.setLabelText(String.format("%d%%", entity.getControlRodInsertion()));
    this.setNameBtn.enabled = !entity.getName().equals(this.rodName.getText());
    insertionBar.setInsertion((float)entity.getControlRodInsertion() / 100f);
  }
 
  @Override
  protected void actionPerformed(GuiButton button) {
    switch(button.id) {
    case 2:
            CommonPacketHandler.INSTANCE.sendToServer(new ControlRodChangeNameMessage(entity.xCoord, entity.yCoord, entity.zCoord, this.rodName.getText()));
      this.rodName.setFocused(false);
      break;
    case 0:
    case 1:
    default:
      int change = 10;
      if(isShiftKeyDown()) {
        if(isAltKeyDown()) {
          change = 1;
        }
        else {
          change = 100;
        }
      }
      else if(isAltKeyDown()) {
        change = 5;
      }
      if(button.id == 1) { change = -change; }
          CommonPacketHandler.INSTANCE.sendToServer(new ControlRodChangeInsertionMessage(entity.xCoord, entity.yCoord, entity.zCoord, change, isCtrlKeyDown()));
    }
    }
 
  @Override
  protected void keyTyped(char inputChar, int keyCode) {
        if (keyCode == Keyboard.KEY_ESCAPE ||
            (!this.rodName.isFocused() && keyCode == this.mc.gameSettings.keyBindInventory.getKeyCode())) {
            this.mc.thePlayer.closeScreen();
        }

    this.rodName.textboxKeyTyped(inputChar, keyCode);
   
    if(keyCode == Keyboard.KEY_TAB) {
      // Tab
      if(this.rodName.isFocused()) {
        this.rodName.setFocused(false);
      }
      else {
        this.rodName.setFocused(true);
      }
    }
   
    if(keyCode == Keyboard.KEY_RETURN) {
      // Return/enter
      this.actionPerformed((GuiButton)this.buttonList.get(2));
    }
  }
 
}
TOP

Related Classes of erogenousbeef.bigreactors.client.gui.GuiReactorControlRod

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.