package shedar.mods.ic2.nuclearcontrol.gui;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import org.lwjgl.opengl.GL11;
import shedar.mods.ic2.nuclearcontrol.InventoryItem;
import shedar.mods.ic2.nuclearcontrol.api.CardState;
import shedar.mods.ic2.nuclearcontrol.api.IPanelDataSource;
import shedar.mods.ic2.nuclearcontrol.api.PanelString;
import shedar.mods.ic2.nuclearcontrol.containers.ContainerRemoteMonitor;
import shedar.mods.ic2.nuclearcontrol.items.ItemCardText;
import shedar.mods.ic2.nuclearcontrol.items.ItemTimeCard;
import shedar.mods.ic2.nuclearcontrol.network.ChannelHandler;
import shedar.mods.ic2.nuclearcontrol.network.message.PacketServerUpdate;
import shedar.mods.ic2.nuclearcontrol.panel.CardWrapperImpl;
import shedar.mods.ic2.nuclearcontrol.utils.LangHelper;
import shedar.mods.ic2.nuclearcontrol.utils.NCLog;
import shedar.mods.ic2.nuclearcontrol.utils.StringUtils;
import java.util.LinkedList;
import java.util.List;
public class GuiRemoteMonitor extends GuiContainer{
public static final int REMOTEMONITOR_GUI = 17;
private InventoryItem inv;
private EntityPlayer e;
public GuiRemoteMonitor(InventoryPlayer inv, ItemStack stack, InventoryItem inventoryItem, EntityPlayer player){
super(new ContainerRemoteMonitor(inv, stack, inventoryItem));
this.inv = inventoryItem;
this.e = player;
}
@Override
public void initGui(){
super.initGui();
this.xSize += 50;
this.mc.thePlayer.openContainer = this.inventorySlots;
this.guiLeft = (this.width - this.xSize) / 2;
this.guiTop = (this.height - this.ySize) / 2;
}
@Override
protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3){
GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
this.mc.renderEngine.bindTexture(new ResourceLocation("nuclearcontrol", "textures/gui/GUIRemoteMonitor.png"));
int x = (width - xSize) / 2;
int y = (height - ySize) / 2;
this.drawTexturedModalRect(x, y, 0, 0, 204, ySize);
}
@Override
protected void drawGuiContainerForegroundLayer(int par1, int par2) {
List<PanelString> joinedData = new LinkedList<PanelString>();
boolean anyCardFound = true;
InventoryItem itemInv = new InventoryItem(e.getHeldItem());
if (inv.getStackInSlot(0) != null && itemInv.getStackInSlot(0) != null && inv.getStackInSlot(0).getItem() instanceof IPanelDataSource) {
IPanelDataSource card = (IPanelDataSource) inv.getStackInSlot(0).getItem();
CardWrapperImpl helper = new CardWrapperImpl(itemInv.getStackInSlot(0), 0);
joinedData.clear();
ChannelHandler.network.sendToServer(new PacketServerUpdate(inv.getStackInSlot(0)));
if(helper.getState() != CardState.OK)
if(helper.getState().equals(CardState.CUSTOM_ERROR))
if(card instanceof ItemCardText || card instanceof ItemTimeCard)
joinedData = card.getStringData(Integer.MAX_VALUE, helper, true);
else
joinedData = this.getRemoteCustomMSG();
else
joinedData = StringUtils.getStateMessage(helper.getState());
else
joinedData = card.getStringData(Integer.MAX_VALUE, helper, true);
}
drawCardStuff(anyCardFound, joinedData);
}
private List<PanelString> getRemoteCustomMSG(){
PanelString line = new PanelString();
List<PanelString> result = new LinkedList<PanelString>();
line.textCenter = LangHelper.translate("nc.msg.notValid");
result.add(line);
line = new PanelString();
line.textCenter = LangHelper.translate("nc.msg.notValid2");
result.add(line);
line = new PanelString();
line.textCenter = "";
result.add(line);
line = new PanelString();
line.textCenter = LangHelper.translate("nc.msg.notValid3");
result.add(line);
return result;
}
private void drawCardStuff(Boolean anyCardFound, List<PanelString> joinedData){
if (!anyCardFound){
NCLog.fatal("This should never happen. If you see this report immediately to NC2 repo. Include GuiRemoteMonitorError-123 in the report!");
return;
}
int row = 0;
for (PanelString panelString : joinedData) {
if (panelString.textLeft != null)
fontRendererObj.drawString(panelString.textLeft, 9, (row * 10) + 20, 0x06aee4);
if (panelString.textCenter != null)
fontRendererObj.drawString(panelString.textCenter,(168 - fontRendererObj.getStringWidth(panelString.textCenter)) /2,(row * 10) + 20, 0x06aee4);
if (panelString.textRight != null)
this.fontRendererObj.drawString(panelString.textRight, 168 - fontRendererObj.getStringWidth(panelString.textRight), ((row-1) * 10) + 20, 0x06aee4);
row++;
}
}
public void updateScreen() {
super.updateScreen();
if(this.e.getHeldItem() == null)
this.mc.thePlayer.closeScreen();
}
}