diff options
author | Detrav <witalyezep@gmail.com> | 2016-03-21 17:55:27 +0300 |
---|---|---|
committer | Detrav <witalyezep@gmail.com> | 2016-03-21 17:55:27 +0300 |
commit | 59b52ae2912ede30a0ee86c6358130905b5a0cf5 (patch) | |
tree | 1a5e4356cc92a6c1337c05a7ea43d39e15e846a9 /src | |
parent | a9b3c6fe4f335bb4349f297fdf090c202e8105fa (diff) | |
download | GT5-Unofficial-59b52ae2912ede30a0ee86c6358130905b5a0cf5.tar.gz GT5-Unofficial-59b52ae2912ede30a0ee86c6358130905b5a0cf5.tar.bz2 GT5-Unofficial-59b52ae2912ede30a0ee86c6358130905b5a0cf5.zip |
Complete sample gui
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/com/detrav/gui/DetravGuiProPick.java | 89 | ||||
-rw-r--r-- | src/main/java/com/detrav/gui/DetravMapTexture.java | 4 | ||||
-rw-r--r-- | src/main/java/com/detrav/net/DetravProPickPacket01.java | 35 |
3 files changed, 119 insertions, 9 deletions
diff --git a/src/main/java/com/detrav/gui/DetravGuiProPick.java b/src/main/java/com/detrav/gui/DetravGuiProPick.java index ebb098f6a3..0abc3ada57 100644 --- a/src/main/java/com/detrav/gui/DetravGuiProPick.java +++ b/src/main/java/com/detrav/gui/DetravGuiProPick.java @@ -1,7 +1,18 @@ package com.detrav.gui; +import cpw.mods.fml.client.GuiScrollingList; +import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.AbstractClientPlayer; +import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.texture.TextureUtil; +import net.minecraft.util.ResourceLocation; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; /** * Created by wital_000 on 21.03.2016. @@ -9,6 +20,8 @@ import net.minecraft.client.renderer.texture.TextureUtil; public class DetravGuiProPick extends GuiScreen { public static final int GUI_ID = 20; private static DetravMapTexture map = null; + ListOres ores = null; + public DetravGuiProPick() { @@ -21,8 +34,11 @@ public class DetravGuiProPick extends GuiScreen { } map = aMap; map.loadTexture(null); + //ores = new ListOres(Minecraft.getMinecraft(),) } + int prevW; + int prevH; @Override @@ -30,15 +46,76 @@ public class DetravGuiProPick extends GuiScreen { this.drawDefaultBackground(); if(map!=null) { - int aX = (this.width - map.width)/2; + List<String> keys = new ArrayList(map.ores.keySet()); + Collections.sort(keys); + int w = 0; + for(String item : keys) + { + w = Math.max(fontRendererObj.getStringWidth(item),w); + } + w+=10; + + int aX = (this.width - map.width-100)/2; int aY = (this.height - map.height)/2; + + if(ores == null) + { + ores = new ListOres(this,100,map.height,aY,aY+map.height,aX+map.width,10,map.ores); + prevW = width; + prevH = height; + } + if(prevW!=width || prevH !=height) + { + ores = new ListOres(this,100,map.height,aY,aY+map.height,aX+map.width,10,map.ores); + prevW = width; + prevH = height; + } + map.glBindTexture(); map.draw(aX,aY); - //this.drawTexturedModalRect(aX,aY,0,0,map.width,map.height); + ores.drawScreen(0,0,f); + } + } + + class ListOres extends GuiScrollingList + { + HashMap<String,Integer> ores = null; + List<String> keys = null; + + public ListOres(GuiScreen parent, int width, int height, int top, int bottom, int left, int entryHeight,HashMap<String,Integer> aOres) { + super(parent.mc, width, height, top, bottom, left, entryHeight); + ores = aOres; + keys = new ArrayList(map.ores.keySet()); + Collections.sort(keys); + } + + @Override + protected int getSize() { + return ores.size(); + } + + @Override + protected void elementClicked(int index, boolean doubleClick) { + + } + + @Override + protected boolean isSelected(int index) { + return false; + } + + @Override + protected void drawBackground() { + //drawRect(this.left,this.top,this.listWidth,this.listHeight,0xFFFFFFFF); + } + + @Override + protected void drawSlot(int slotIdx, int entryRight, int slotTop, int slotBuffer, Tessellator tess) { + //drawString(fontRendererObj,); + //fontRendererObj.drawString(fontRendererObj.trimStringToWidth()) + + fontRendererObj.drawString(fontRendererObj.trimStringToWidth(keys.get(slotIdx), listWidth - 10), this.left + 3 , slotTop + 2, ores.get(keys.get(slotIdx))); + } - //TextureUtil.glGenTextures() - //this.mc.renderEngine.bindTexture(); - //this.drawTexturedModelRectFromIcon(); - //this.drawTexturedModalRect(); } } diff --git a/src/main/java/com/detrav/gui/DetravMapTexture.java b/src/main/java/com/detrav/gui/DetravMapTexture.java index 38977db6e5..ab58128ee2 100644 --- a/src/main/java/com/detrav/gui/DetravMapTexture.java +++ b/src/main/java/com/detrav/gui/DetravMapTexture.java @@ -9,6 +9,8 @@ import org.lwjgl.opengl.GL11; import java.awt.image.BufferedImage; import java.io.IOException; +import java.util.HashMap; +import java.util.List; /** * Created by wital_000 on 21.03.2016. @@ -24,6 +26,7 @@ public class DetravMapTexture extends AbstractTexture { public int width = -1; public int height = -1; + public HashMap<String,Integer> ores = null; @Override public void loadTexture(IResourceManager p_110551_1_){ @@ -36,6 +39,7 @@ public class DetravMapTexture extends AbstractTexture { TextureUtil.uploadTextureImageAllocate(this.getGlTextureId(), bufferedimage, false, false); width = packet.getSize(); height = packet.getSize(); + ores = packet.getOres(); } //GL11.glDrawPixels(); } diff --git a/src/main/java/com/detrav/net/DetravProPickPacket01.java b/src/main/java/com/detrav/net/DetravProPickPacket01.java index 120f63fcc4..f691231b22 100644 --- a/src/main/java/com/detrav/net/DetravProPickPacket01.java +++ b/src/main/java/com/detrav/net/DetravProPickPacket01.java @@ -8,6 +8,7 @@ import com.google.common.io.ByteArrayDataOutput; import com.google.common.io.ByteStreams; import gregtech.api.GregTech_API; import gregtech.api.enums.Materials; +import gregtech.api.util.GT_LanguageManager; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.ChatComponentText; @@ -18,6 +19,7 @@ import java.awt.image.ColorModel; import java.awt.image.WritableRaster; import java.io.File; import java.util.HashMap; +import java.util.List; /** * Created by wital_000 on 20.03.2016. @@ -106,12 +108,20 @@ public class DetravProPickPacket01 extends DetravPacket { //String key = String.format(("x_y")) } + private HashMap<String,Integer> ores = null; + public BufferedImage getImage() { int wh = (size*2+1)*16; //int aWh = 1024; //while (aWh<wh) aWh*=2; - BufferedImage image = new BufferedImage(wh,wh,BufferedImage.TYPE_3BYTE_BGR ); + BufferedImage image = new BufferedImage(wh,wh,BufferedImage.TYPE_INT_ARGB ); WritableRaster raster = image.getRaster(); + + int playerI = (int)Minecraft.getMinecraft().thePlayer.posX - (chunkX-size)*16; + int playerJ = (int)Minecraft.getMinecraft().thePlayer.posZ - (chunkZ-size)*16; + + if(ores == null) ores = new HashMap<String, Integer>(); + for(int i =0; i<wh; i++) for(int j =0; j<wh; j++) { if (map[i][j] == null) @@ -119,6 +129,7 @@ public class DetravProPickPacket01 extends DetravPacket { raster.setSample(i,j,0,255); raster.setSample(i,j,1,255); raster.setSample(i,j,2,255); + raster.setSample(i,j,3,255); } else { @@ -126,11 +137,22 @@ public class DetravProPickPacket01 extends DetravPacket { //Пока только по одному буду Materials tMaterial = GregTech_API.sGeneratedMaterials[meta% 1000]; short[] rgba = tMaterial.getRGBA(); - raster.setSample(i,j,0,rgba[2]); + raster.setSample(i,j,0,rgba[0]); raster.setSample(i,j,1,rgba[1]); - raster.setSample(i,j,2,rgba[0]); + raster.setSample(i,j,2,rgba[2]); + raster.setSample(i,j,3,255); + //ores.put(GT_Ore) + String name = GT_LanguageManager.getTranslation("gt.blockores." + meta + ".name"); + if(!ores.containsKey(name)) + ores.put(name,(0xFF << 24) + ((rgba[0]&0xFF)<<16)+((rgba[1]&0xFF)<<8)+((rgba[2]&0xFF))); } } + if(playerI == i || playerJ == j) + { + raster.setSample(i,j,0,(raster.getSample(i,j,0)+255)/2); + raster.setSample(i,j,1,raster.getSample(i,j,1)/2); + raster.setSample(i,j,2,raster.getSample(i,j,2)/2); + } if((i-15)%16 == 0 || (j-15)%16 == 0) { raster.setSample(i,j,0,raster.getSample(i,j,0)/2); @@ -151,6 +173,13 @@ public class DetravProPickPacket01 extends DetravPacket { //return null; } + public HashMap<String,Integer> getOres() + { + if(ores == null) return new HashMap<String, Integer>(); + return ores; + } + + public int getSize() { return (size*2+1)*16; } |