From 5747c9f90410b3d59422c756dd32a158b71bddcd Mon Sep 17 00:00:00 2001 From: "Aidan C. Brady" Date: Wed, 4 Mar 2015 09:19:09 -0500 Subject: [PATCH] Finished Matrix Statistics interface, need to figure out why induction cells aren't loading from NBT --- .../mekanism/client/gui/GuiMatrixStats.java | 33 +++++-- .../java/mekanism/client/gui/GuiPowerBar.java | 5 +- .../java/mekanism/client/gui/GuiRateBar.java | 81 ++++++++++++++++++ .../tile/TileEntityInductionCasing.java | 17 ++++ .../mekanism/common/util/MekanismUtils.java | 7 ++ .../assets/mekanism/gui/GuiMatrixStats.png | Bin 2377 -> 2840 bytes .../mekanism/gui/elements/GuiRateBar.png | Bin 0 -> 2676 bytes .../resources/assets/mekanism/lang/en_US.lang | 6 ++ 8 files changed, 140 insertions(+), 9 deletions(-) create mode 100644 src/main/java/mekanism/client/gui/GuiRateBar.java create mode 100644 src/main/resources/assets/mekanism/gui/elements/GuiRateBar.png diff --git a/src/main/java/mekanism/client/gui/GuiMatrixStats.java b/src/main/java/mekanism/client/gui/GuiMatrixStats.java index 7fc97c66b..d73507d53 100644 --- a/src/main/java/mekanism/client/gui/GuiMatrixStats.java +++ b/src/main/java/mekanism/client/gui/GuiMatrixStats.java @@ -3,6 +3,7 @@ package mekanism.client.gui; import mekanism.api.energy.IStrictEnergyStorage; import mekanism.client.gui.GuiEnergyGauge.IEnergyInfoHandler; import mekanism.client.gui.GuiMatrixTab.MatrixTab; +import mekanism.client.gui.GuiRateBar.IRateInfoHandler; import mekanism.common.inventory.container.ContainerNull; import mekanism.common.tile.TileEntityInductionCasing; import mekanism.common.util.MekanismUtils; @@ -32,6 +33,20 @@ public class GuiMatrixStats extends GuiMekanism return tileEntity; } }, GuiEnergyGauge.Type.STANDARD, this, MekanismUtils.getResource(ResourceType.GUI, "GuiMatrixStats.png"), 6, 13)); + guiElements.add(new GuiRateBar(this, new IRateInfoHandler() + { + @Override + public String getTooltip() + { + return MekanismUtils.localize("gui.outputting") + ": " + MekanismUtils.getEnergyDisplay(tileEntity.structure.lastOutput) + "/t"; + } + + @Override + public double getLevel() + { + return tileEntity.structure.lastOutput/tileEntity.structure.outputCap; + } + }, MekanismUtils.getResource(ResourceType.GUI, "GuiMatrixStats.png"), 30, 13)); } @Override @@ -41,10 +56,16 @@ public class GuiMatrixStats extends GuiMekanism int yAxis = (mouseY - (height - ySize) / 2); fontRendererObj.drawString(MekanismUtils.localize("gui.matrixStats"), 45, 6, 0x404040); - fontRendererObj.drawString(MekanismUtils.localize("gui.energy") + ":", 53, 26, 0x00CD00); - fontRendererObj.drawString(MekanismUtils.getEnergyDisplay(tileEntity.getEnergy()) + "/" + MekanismUtils.getEnergyDisplay(tileEntity.getMaxEnergy()), 53, 35, 0x00CD00); - fontRendererObj.drawString(MekanismUtils.localize("gui.output") + ":", 53, 44, 0x00CD00); - fontRendererObj.drawString(MekanismUtils.getEnergyDisplay(tileEntity.structure.lastOutput) + "/" + MekanismUtils.getEnergyDisplay(tileEntity.structure.outputCap), 53, 53, 0x00CD00); + fontRendererObj.drawString(MekanismUtils.localize("gui.energy") + ":", 53, 26, 0x797979); + fontRendererObj.drawString(MekanismUtils.getEnergyDisplay(tileEntity.getEnergy()) + "/" + MekanismUtils.getEnergyDisplay(tileEntity.getMaxEnergy()), 59, 35, 0x404040); + fontRendererObj.drawString(MekanismUtils.localize("gui.output") + ":", 53, 46, 0x797979); + fontRendererObj.drawString(MekanismUtils.getEnergyDisplay(tileEntity.structure.lastOutput) + "/" + MekanismUtils.getEnergyDisplay(tileEntity.structure.outputCap), 59, 55, 0x404040); + + fontRendererObj.drawString(MekanismUtils.localize("gui.dimensions") + ":", 8, 82, 0x797979); + fontRendererObj.drawString(tileEntity.structure.volWidth + " x " + tileEntity.structure.volHeight + " x " + tileEntity.structure.volLength, 14, 91, 0x404040); + fontRendererObj.drawString(MekanismUtils.localize("gui.constituents") + ":", 8, 102, 0x797979); + fontRendererObj.drawString(tileEntity.clientCells + " " + MekanismUtils.localize("gui.cells"), 14, 111, 0x404040); + fontRendererObj.drawString(tileEntity.clientProviders + " " + MekanismUtils.localize("gui.providers"), 14, 120, 0x404040); super.drawGuiContainerForegroundLayer(mouseX, mouseY); } @@ -52,12 +73,12 @@ public class GuiMatrixStats extends GuiMekanism @Override protected void drawGuiContainerBackgroundLayer(float partialTick, int mouseX, int mouseY) { - super.drawGuiContainerBackgroundLayer(partialTick, mouseX, mouseY); - mc.renderEngine.bindTexture(MekanismUtils.getResource(ResourceType.GUI, "GuiMatrixStats.png")); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); int guiWidth = (width - xSize) / 2; int guiHeight = (height - ySize) / 2; drawTexturedModalRect(guiWidth, guiHeight, 0, 0, xSize, ySize); + + super.drawGuiContainerBackgroundLayer(partialTick, mouseX, mouseY); } } diff --git a/src/main/java/mekanism/client/gui/GuiPowerBar.java b/src/main/java/mekanism/client/gui/GuiPowerBar.java index 3a9917bf7..d541f60ce 100644 --- a/src/main/java/mekanism/client/gui/GuiPowerBar.java +++ b/src/main/java/mekanism/client/gui/GuiPowerBar.java @@ -3,13 +3,11 @@ package mekanism.client.gui; import mekanism.common.tile.TileEntityElectricBlock; import mekanism.common.util.MekanismUtils; import mekanism.common.util.MekanismUtils.ResourceType; - import net.minecraft.util.ResourceLocation; +import codechicken.lib.vec.Rectangle4i; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import codechicken.lib.vec.Rectangle4i; - @SideOnly(Side.CLIENT) public class GuiPowerBar extends GuiElement { @@ -52,6 +50,7 @@ public class GuiPowerBar extends GuiElement super(MekanismUtils.getResource(ResourceType.GUI_ELEMENT, "GuiPowerBar.png"), gui, def); handler = h; + xLocation = x; yLocation = y; } diff --git a/src/main/java/mekanism/client/gui/GuiRateBar.java b/src/main/java/mekanism/client/gui/GuiRateBar.java new file mode 100644 index 000000000..888901c71 --- /dev/null +++ b/src/main/java/mekanism/client/gui/GuiRateBar.java @@ -0,0 +1,81 @@ +package mekanism.client.gui; + +import mekanism.common.util.MekanismUtils; +import mekanism.common.util.MekanismUtils.ResourceType; +import net.minecraft.util.ResourceLocation; +import codechicken.lib.vec.Rectangle4i; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +@SideOnly(Side.CLIENT) +public class GuiRateBar extends GuiElement +{ + private int xLocation; + private int yLocation; + + private int width = 8; + private int height = 60; + + private IRateInfoHandler handler; + + public GuiRateBar(IGuiWrapper gui, IRateInfoHandler h, ResourceLocation def, int x, int y) + { + super(MekanismUtils.getResource(ResourceType.GUI_ELEMENT, "GuiRateBar.png"), gui, def); + + handler = h; + + xLocation = x; + yLocation = y; + } + + @Override + public Rectangle4i getBounds(int guiWidth, int guiHeight) + { + return new Rectangle4i(guiWidth + xLocation, guiHeight + yLocation, width, height); + } + + public static abstract class IRateInfoHandler + { + public String getTooltip() + { + return null; + } + + public abstract double getLevel(); + } + + @Override + public void renderBackground(int xAxis, int yAxis, int guiWidth, int guiHeight) + { + mc.renderEngine.bindTexture(RESOURCE); + + guiObj.drawTexturedRect(guiWidth + xLocation, guiHeight + yLocation, 0, 0, width, height); + + if(handler.getLevel() > 0) + { + int displayInt = (int)(handler.getLevel()*58); + guiObj.drawTexturedRect(guiWidth + xLocation+1, guiHeight + yLocation + height-1 - displayInt, 8, height-2 - displayInt, width-2, displayInt); + } + + mc.renderEngine.bindTexture(defaultLocation); + } + + @Override + public void renderForeground(int xAxis, int yAxis) + { + mc.renderEngine.bindTexture(RESOURCE); + + if(handler.getTooltip() != null && xAxis >= xLocation+1 && xAxis <= xLocation + width-1 && yAxis >= yLocation+1 && yAxis <= yLocation + height-1) + { + displayTooltip(handler.getTooltip(), xAxis, yAxis); + } + + mc.renderEngine.bindTexture(defaultLocation); + } + + @Override + public void preMouseClicked(int xAxis, int yAxis, int button) {} + + @Override + public void mouseClicked(int xAxis, int yAxis, int button) {} +} diff --git a/src/main/java/mekanism/common/tile/TileEntityInductionCasing.java b/src/main/java/mekanism/common/tile/TileEntityInductionCasing.java index 488f17a83..33323ec26 100644 --- a/src/main/java/mekanism/common/tile/TileEntityInductionCasing.java +++ b/src/main/java/mekanism/common/tile/TileEntityInductionCasing.java @@ -15,6 +15,9 @@ import net.minecraft.item.ItemStack; public class TileEntityInductionCasing extends TileEntityMultiblock implements IStrictEnergyStorage { + public int clientCells; + public int clientProviders; + public TileEntityInductionCasing() { this("InductionCasing"); @@ -55,6 +58,13 @@ public class TileEntityInductionCasing extends TileEntityMultiblockPINIAtiX+7V0FWfwTAcy_ z$ToxkqKNH5rWW}E0Bp|R($bM=X^D2E2K)M7_5lEFagBqui1@!)`B2rJp4{T*0g^-Q26#*5R%k?q^dj6nY|1RmH=T<&qdTy=>()i^YZg) z$O|ILLZMfy(Cq2}-Y;YMW=TjXhg9d$Qk}+O9vu(G&3-V#x1PxnvWO}a!GeboJM9je zm3_=bL#)GM?-Ks;BZhq~Sr@9?5@XZXbWY=yz*uBpa*KA&rT8&S>ptP~8M7N|^Zrqp z#m7pe(E{t$x&6ZygY%}Ns=7MyuIK65!e5#UQ0mfH(!@Tm?8L(U$^)a?%^L=XRxe8| zqHb1dI$$P{weP~6u21Kj?{ckmaNO!J3O;gnK79WB!dIO;qjh(BJwsc2WSFG^HN<8; z&Bm{wiVjm@zM+MzolMumFWk*x6#lvT)>v_pG>aA_R9^yPiX9vM+B0>k1F2!}aV4>N z0ky`zncY&79WLo6q>XFhvwUe!&&4w)lgm4~`ZE~2uV*6_C;!l%u?ZROZfT2W$S}VR zOu#$bTp#&*j%~&qOgSe-lj*}$oc@AKuxiL}!O!$RZmGr`9T93!-4A;hq{tIC)4dTD z@il3SL6*;M=k3nPZKIig!Brl3(9u&`lI_!=Y89cJqHUN@X_A;RaV>)!E=rA)XjBbx zBEevGnT|cDGL;h^pO^BP4jYSVy3)*&eA<84$lAZ-v+T@mRPI%|n5our^!{|q3#_Cl zJAqbkT9Z~{mn=1;y9$-q;WhMWX%T1Gc~Gc&>s`%#>vQt6PZ?dE9OlxBV!(P@p8r8M zU4+*p^@0VPU*qU*lpS0sC+OBQDkdj(*_jq|i}}TW_lVCtDXxr9TQjSS(yvpw0CQIBeNr6K{vrLXWc^9tH z8HT?RK5$WKx@bD@O7f>#y;)Lb|CnK9NfEhh=~bkg!O5eJVb4#PP3U$`pvz{_+yeEY zS1XwE#c-{~VFY$bN#JI@=hIc#NPu+ydZle&T5g~7XD7gVw=({RE#{vLCNVKvzO@~bPIR%}9 zDBu3zHRyJxHQUd1H$jfu)mVjmgYraqQyXZJCn)q5uUlqElkZQ4P5Pc4!Dp zCI(M&-~m%ZWN+y9cALzAA}F(8k#e>?z)C~rqntj#Fz#pJp$N2iH1B>CPEUwafcIZidX=Q)CFAFAIMtuBilG#gu3TMJ)tPvZ&2^E$@)Z9`0^`ihS_ z*xm^BR0BO4kkO22&hXH>d4`w_8XpBfpm5Qj;6EV(FGKtX#096l)25p?u-$k8;&FSc IQUc}XKhR?^NB{r; literal 2377 zcmcIldpOgJ8~^TDE>kket&vNoWUl8RN=8f*A>~%Ykz2XUrG~TEq{!sbK?%tvM7hLF z*_r9MH@D^5m}{AiX2-_dnjQUj{`~#X?|q;5c|Xtlyw7`kp7(uIoE*;XgD61&0N7`X zvUUal&@Kc4;-b6CGx9|M0Enz!x3Y4wwX#xmibMxo5Ag?p7)Dz509w{xp$kFg^}muZ z5xWRVeV2m3XPzPXWQtlwlW8O;TEK+wL~bto>jd-l(8rahAGsQ*Bj|@-;P3>PS#HcP z@4TV9t(GDZmR2Dsdz0)94Qmt_wizcYp_k<{9X%x1`+IR! zHg|NR{dvw?%e+8$s}sRhm>Jgl&uaK84%sYnSzr&DVeoS}Lf)&&p4Oz{0~QT(;|-Z7 zMVo`SwZQXob*!MpKPV-&)uTIvCEWA)`RrBd`yOR8Q`f4!rd;Qq>2GKYDR)XaPbujFp-0A2T%{kffy#x)~W}U%F=@A06SSc;I;}bE; zN56AmJ1ka{d$hmG)nB{Qv%1Rn_#6~xht^&gJ~3Q%&#F~wa6RgX3-W^>BqgmYPFpLx z``T=2&@X9;b`mMc*0awG{X_!~dMc(6=A}x~+pj_IB~lgkqqMbPYPe={V`FKwGlf0w=D>_CYTmpb z`1b2DQ_xQVjBa+%j$R+Gskkk|s{p&iVA%0s@sqdLu56XWdr`}#2jx$S3*6!?y$8{m zZ5?IlesU>^$wyEoD1JETai*3ob(U^FqvBM+cZiM-`wFjE?p{yg?2D?e$m-kqL+~s1 z^!9ar2!B1f{Li^;Vg|96$Z4!?L=z9cCh{12*kbGwei=V>uG)1vgFlgFcN4ziTF}^T z#9Of8?P>5a4{Y(1y0y`}7Eo*I6J{W}(8(wNy!Hph#D0cU(OmC(_fT8gtfmao;-GxS z{C+mhQ^z>vs=>zK=rR&3QwOvCLJ&iq^;d0B%&UDR2!Tp@5 zb6*cbs`J><>P7jurZW&!HTgr&J#=de)q>3EIZv8N1xBfpJ)!KR3Pe&Anf)j)Rk&F> z>?m!|VJOB`_a(+hUH`Hi(0yBc9pQd?i`Dz#gJ8ho3ZA!2^#CGbMlNYZ?4AKpU%Ru` zfbcsPQ7W=_EfV1JDhAnBSJ3ju$*pE0n-@44nDMU=YaBoPOjC zy;Ll!wx?e9bA)p2!#-u9paU(svHujlpU)>%{zEl>V(%Los)NB`n&EB}qzfu13}Bz3 z&=uZ(@Ake^OU!;B6K&s<)#?LLBHx+-_ix%I*zp(LWZNtKg>6j_%Iqm z;gf+vjO3sWK)LkjR<=KrEm||(EDwdAAF?T|$aQ$xUH{1x4-B5jIE*{IjnxZ~Y)NUZ zQqPZ@VQnl9D5UFc0-3;|+qAv85qJOqP64_F+v^G3OA$W-4bN`9EaEHrcgG;Z;I~ z6QneOK=5`Ri^WD!y~!Azq_*PklRUxUN>Hn+%tY!$ifUb5T^DM$+-k3~TfRlb#3&4X zF-%WS-}_z)KlQY`0lxkB-#4N|!WXDQZ5^GCAj3#WRbbT!sAvMg;c!-%B%x$cMQ%F(kpi=5r@1{O=1Os0v6iM}{!Mx8M}t`7#y+~FQJpGwSEmj*1p zKU*;HqX4*7{0B#r{$aKKr^o-m|Fv9v)A^$ZtTyn3`>5k(nBZVq`0O3q!1%DS(NX)m z_v#uNc>GNoR&;lrjAZ0iC->|gr2h-yRW>Bkmv_$BKYG9PJ%KIK!Mf&*&z*k(2!Zr8 diff --git a/src/main/resources/assets/mekanism/gui/elements/GuiRateBar.png b/src/main/resources/assets/mekanism/gui/elements/GuiRateBar.png new file mode 100644 index 0000000000000000000000000000000000000000..1bd5c511f30e079e7bac6249d5f7021630e33216 GIT binary patch literal 2676 zcmeHJ`8(7L7yr(8#xBM%w$NZK*Osd=2wz5+h{+%mF(M_)Sdy`nA?s@w?g*LgC0kjO zElZK=N+wHlkv%E<_GZexdguNT?{EEd&U2p6d7jVbbIy65lSXu~IU*=42mrtlf~}Pk z0Km8@4B+SG29K~RKLCJl`Q!0K0v?YchEe_e11|#rE;G|*nmXkyVV*|yD3>&6HfD*S z)9YPG?(Iiq9}Vyl?o@oSlx-jSOQZaCM6fK0ZSZ6?$ffKnNEPP5=}mkJIW$XI;r_2p z>#)ZJk_CDkTW)%N61sZlYeG#(T|KGu;y_z&eVoy9q}k>>edy)+yNe8h3}t5LqJCL! zb{V74#8pvX*g|a&s(cXR(BYv2>I@{=yzlc;d^TgqH@W&FJi@iQ5{|uR8F=3Groy&A zJ-^zdP82g^{cY=)S&I+brxxUOR8!r&X@!egeJA9OiQ-5r>X!=B%h@d&3o8BpocQ%y zpzy9-LW{Da_KIxBo9J^l*6(_cxOF%Ze+=tW4K8d)Z-3eOq?*0ZnLX|q`Em>yR~OJu z=s&L9{fQ%^8i(HQ8t_obq#cKLitfggKmYdHP;!;DiJ3`jyT(bXCU##P%2#a*3X6Jc zR+C&3&|&x=)7w&Fvo)iZxy#B>fnWGTuhf{;%tls^?uNGgrwg|vSN~AiunCzR9T-fF zLB@TaTtN(z-5&UPE*&OmW_gK(Bj0N`JAX7wv+80FKpX7Jfi`WUxkbe=cfE@zvLq}I z^L%)lQ`>WQgYl0NOOD=M%@A@}<)%y+tmsM=jC&Li-s<9Rw z@z*S)@%8qJJZ8YRzt`*h)1bN2XsPowrg?P*Wq+!=r+TXTzhiLxZc@LPm*p$ z#$)$r!k=f3+t%B@cvUv0eT3jMqA<2LbE=j0l%~yF(%UsY{*B%5BR}>`M$%p_2C$X zu|e&dXhl{ObTfMLiqv}5dP!*JM91+>Qa*d>`Yg5SSy%@ zO-#@4$Eu#~Yd7vjV|QnHaeGoTWJ9Hi>+rb%QRYF5?faC-h2}Dt2aaj@A!+NaBlZ?- z>)OHocHBjor^Uhg#iCo?D;xx6anWzLY{@Tt(QdDYH{|u-Qe+^MhH9Bl1^`}jf|Z3c z4Yoej7(50cdFS+%oKR^xzcUl^20K6OdN_uDp{Xf=RXYd?30p=Tux->Y=e%C3r6e`^{uLJ}A5y^`H?$GAg!P@@84z*3L z(?ytmPEtys97Q|oViJ4LZQEy|V-Ue#E=Ifaz$poZ(d~p7z@O{=+22vUYeNl+@fAE+ zdc_OVYzPmAg0xv;%Na$8;tCU>xH=Szy;4D{(&ts#@y>Si-d!$o*_}*an#AkE@ zj4$F@Ky1Brrxy(c*)U~b0?Z;;^~ByCE`v6=Zgod2MBx@GGFKcGS>;^5A~WF03EXKh z1|9+#_;(73Ji$bPx#7xkHIe}gyiZ3UQDlhe1%oqZXN+ayiM;@SnihstPlvIn)Y1${ zodP6UNg_X=?*%@$wmMj2By<5wB_aMjO$x9#<*ufT6qE)Ob9oTo(fo1ZTPxI_lt?`= zK#D8uP=4<3T1kHK-oB-pn{xLcHi&}Q>k&AxlIJ;Mt69!rb54gl2d*`bACYkJzX@@P zu?Ne%`9Op$ItP#q%4p)(Qsf$wqEfRZ3?e*FLm&-(LsW&8%oWxhBgC?2z351!)CKwCDw@=-2E(GD4WHRqCV`F9`BNJkIW@S4tGX z_e;L9fHP7T&|psHL6R^y#;$UVz)XNRt-yZY=Kbg4K?FJ^1a?kugshBOW?sWUbN~h- o_>n)8pC