package zmaster587.advancedRocketry.item;
import java.util.List;
import org.lwjgl.opengl.GL11;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import zmaster587.advancedRocketry.atmosphere.AtmosphereHandler;
import zmaster587.advancedRocketry.atmosphere.AtmosphereType;
import zmaster587.advancedRocketry.dimension.DimensionManager;
import zmaster587.advancedRocketry.inventory.TextureResources;
import zmaster587.libVulpes.LibVulpes;
import zmaster587.libVulpes.api.IArmorComponent;
import zmaster587.libVulpes.client.ResourceIcon;
import zmaster587.libVulpes.render.RenderHelper;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.DamageSource;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.World;
import net.minecraftforge.client.event.RenderGameOverlayEvent;
public class ItemAtmosphereAnalzer extends Item implements IArmorComponent {
private static ResourceIcon icon;
private static ResourceLocation eyeCandySpinner = new ResourceLocation("advancedrocketry:textures/gui/eyeCandy/spinnyThing.png");
@Override
public void onTick(World world, EntityPlayer player, ItemStack armorStack,
IInventory modules, ItemStack componentStack) {
}
private String[] getAtmosphereReadout(ItemStack stack, AtmosphereType atm, World world) {
if(atm == null)
atm = AtmosphereType.AIR;
String str[] = new String[2];
str[0] = "Atmosphere Type: " + LibVulpes.proxy.getLocalizedString(atm.getUnlocalizedName()) + " @ " + (AtmosphereHandler.currentPressure == -1 ? (DimensionManager.getInstance().isDimensionCreated(world.provider.dimensionId) ? DimensionManager.getInstance().getDimensionProperties(world.provider.dimensionId).getAtmosphereDensity()/100f : 1) : AtmosphereHandler.currentPressure/100f) + " atm";
str[1] = "Breathable: " + (atm.isBreathable() ? "Yes" : "No");
return str;
}
@Override
public ItemStack onItemRightClick(ItemStack stack, World world,
EntityPlayer player) {
if(!world.isRemote) {
String str[] = getAtmosphereReadout(stack, (AtmosphereType) AtmosphereHandler.getOxygenHandler(world.provider.dimensionId).getAtmosphereType(player), world);
for(String str1 : str)
player.addChatMessage(new ChatComponentText(str1));
}
return super.onItemRightClick(stack, world, player);
}
@Override
public boolean onComponentAdded(World world, ItemStack armorStack) {
return true;
}
@Override
public void onComponentRemoved(World world, ItemStack armorStack) {
}
@Override
public void onArmorDamaged(EntityLivingBase entity, ItemStack armorStack,
ItemStack componentStack, DamageSource source, int damage) {
}
@Override
public boolean isAllowedInSlot(ItemStack componentStack, int targetSlot) {
return targetSlot == 0;
}
@Override
@SideOnly(Side.CLIENT)
public void renderScreen(ItemStack componentStack, List<ItemStack> modules,
RenderGameOverlayEvent event, Gui gui) {
FontRenderer fontRenderer = Minecraft.getMinecraft().fontRenderer;
int screenX = 8;
int screenY = event.resolution.getScaledHeight() - fontRenderer.FONT_HEIGHT*3;
String str[] = getAtmosphereReadout(componentStack, (AtmosphereType) AtmosphereHandler.currentAtm, Minecraft.getMinecraft().theWorld);
//Draw BG
gui.drawString(fontRenderer, str[0], screenX, screenY, 0xaaffff);
gui.drawString(fontRenderer, str[1], screenX, screenY + fontRenderer.FONT_HEIGHT*4/3, 0xaaffff);
//Render Eyecandy
GL11.glColor3f(1f, 1f, 1f);
GL11.glPushMatrix();
Minecraft.getMinecraft().renderEngine.bindTexture(eyeCandySpinner);
GL11.glTranslatef(20, screenY + 8, 0);
GL11.glRotatef(( System.currentTimeMillis() / 100 ) % 360, 0, 0, 1);
Tessellator.instance.startDrawingQuads();
RenderHelper.renderNorthFaceWithUV(Tessellator.instance, -1, -16, -16, 16, 16, 0, 1, 0, 1);
Tessellator.instance.draw();
GL11.glPopMatrix();
Minecraft.getMinecraft().renderEngine.bindTexture(TextureResources.frameHUDBG);
Tessellator.instance.startDrawingQuads();
RenderHelper.renderNorthFaceWithUV(Tessellator.instance, -1, 0, screenY - 12, 16, screenY + 26, 0, 0.25f, 0, 1);
RenderHelper.renderNorthFaceWithUV(Tessellator.instance, -1, 16, screenY - 12, 220, screenY + 26, 0.5f, 0.5f, 0, 1);
RenderHelper.renderNorthFaceWithUV(Tessellator.instance, -1, 220, screenY - 12, 236, screenY + 26, 0.75f, 1f, 0, 1);
Tessellator.instance.draw();
}
@Override
public ResourceIcon getComponentIcon(ItemStack armorStack) {
if(icon == null)
this.icon = new ResourceIcon(TextureMap.locationItemsTexture, this.getIcon(armorStack, 0));
return this.icon;
}
}