Since the functionality for fixed width tooltips was unused, switched to utilizing standard tooltip rendering. This fixes issues with the screen overlay being miscolored and other item tooltips being broken.

This commit is contained in:
Sebastian Hartte 2016-09-29 22:54:54 +02:00
parent dde6e9b9d4
commit 928f623f7e
5 changed files with 35 additions and 94 deletions

View File

@ -22,6 +22,7 @@ package appeng.client.gui;
import java.io.IOException;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
@ -32,6 +33,7 @@ import java.util.concurrent.TimeUnit;
import com.google.common.base.Joiner;
import com.google.common.base.Stopwatch;
import com.google.common.collect.Lists;
import org.lwjgl.input.Keyboard;
import org.lwjgl.input.Mouse;
@ -188,7 +190,7 @@ public abstract class AEBaseGui extends GuiContainer
final String msg = tooltip.getMessage();
if( msg != null )
{
this.drawTooltip( x + 11, y + 4, 0, msg );
this.drawTooltip( x + 11, y + 4, msg );
}
}
}
@ -196,93 +198,32 @@ public abstract class AEBaseGui extends GuiContainer
}
}
public void drawTooltip( final int par2, final int par3, final int forceWidth, final String message )
protected void drawTooltip( int x, int y, String message )
{
GL11.glPushAttrib( GL11.GL_ALL_ATTRIB_BITS );
GL11.glDisable( GL12.GL_RESCALE_NORMAL );
RenderHelper.disableStandardItemLighting();
GL11.glDisable( GL11.GL_LIGHTING );
GL11.glDisable( GL11.GL_DEPTH_TEST );
final String[] var4 = message.split( "\n" );
String[] lines = message.split( "\n" );
this.drawTooltip( x, y, Arrays.asList( lines ) );
}
if( var4.length > 0 )
protected void drawTooltip( int x, int y, List<String> lines )
{
if( lines.isEmpty() )
{
int var5 = 0;
int var6;
int var7;
for( var6 = 0; var6 < var4.length; ++var6 )
{
var7 = this.fontRendererObj.getStringWidth( var4[var6] );
if( var7 > var5 )
{
var5 = var7;
}
}
var6 = par2 + 12;
var7 = par3 - 12;
int var9 = 8;
if( var4.length > 1 )
{
var9 += 2 + ( var4.length - 1 ) * 10;
}
if( this.guiTop + var7 + var9 + 6 > this.height )
{
var7 = this.height - var9 - this.guiTop - 6;
}
if( forceWidth > 0 )
{
var5 = forceWidth;
}
this.zLevel = 300.0F;
this.itemRender.zLevel = 300.0F;
final int var10 = -267386864;
this.drawGradientRect( var6 - 3, var7 - 4, var6 + var5 + 3, var7 - 3, var10, var10 );
this.drawGradientRect( var6 - 3, var7 + var9 + 3, var6 + var5 + 3, var7 + var9 + 4, var10, var10 );
this.drawGradientRect( var6 - 3, var7 - 3, var6 + var5 + 3, var7 + var9 + 3, var10, var10 );
this.drawGradientRect( var6 - 4, var7 - 3, var6 - 3, var7 + var9 + 3, var10, var10 );
this.drawGradientRect( var6 + var5 + 3, var7 - 3, var6 + var5 + 4, var7 + var9 + 3, var10, var10 );
final int var11 = 1347420415;
final int var12 = ( var11 & 16711422 ) >> 1 | var11 & -16777216;
this.drawGradientRect( var6 - 3, var7 - 3 + 1, var6 - 3 + 1, var7 + var9 + 3 - 1, var11, var12 );
this.drawGradientRect( var6 + var5 + 2, var7 - 3 + 1, var6 + var5 + 3, var7 + var9 + 3 - 1, var11, var12 );
this.drawGradientRect( var6 - 3, var7 - 3, var6 + var5 + 3, var7 - 3 + 1, var11, var11 );
this.drawGradientRect( var6 - 3, var7 + var9 + 2, var6 + var5 + 3, var7 + var9 + 3, var12, var12 );
for( int var13 = 0; var13 < var4.length; ++var13 )
{
String var14 = var4[var13];
if( var13 == 0 )
{
var14 = '\u00a7' + Integer.toHexString( 15 ) + var14;
}
else
{
var14 = "\u00a77" + var14;
}
this.fontRendererObj.drawStringWithShadow( var14, var6, var7, -1 );
if( var13 == 0 )
{
var7 += 2;
}
var7 += 10;
}
this.zLevel = 0.0F;
this.itemRender.zLevel = 0.0F;
return;
}
RenderHelper.enableStandardItemLighting();
GL11.glPopAttrib();
// For an explanation of the formatting codes, see http://minecraft.gamepedia.com/Formatting_codes
lines = Lists.newArrayList( lines ); // Make a copy
// Make the first line white
lines.set( 0, "\u00a7f" + lines.get( 0 ) );
// All lines after the first are colored gray
for( int i = 1; i < lines.size(); i++ )
{
lines.set(i, "\u00a77" + lines.get(i));
}
this.drawHoveringText( lines, x, y, fontRendererObj );
}
@Override

View File

@ -130,13 +130,13 @@ public abstract class AEBaseMEGui extends AEBaseGui
currentToolTip.add( "Items Requestable: " + NumberFormat.getNumberInstance( Locale.US ).format( myStack.getCountRequestable() ) );
}
this.drawTooltip( x, y, 0, join( currentToolTip, "\n" ) );
this.drawTooltip( x, y, currentToolTip );
}
else if( stack.stackSize > BigNumber )
{
final List var4 = stack.getTooltip( this.mc.thePlayer, this.mc.gameSettings.advancedItemTooltips );
List<String> var4 = stack.getTooltip( this.mc.thePlayer, this.mc.gameSettings.advancedItemTooltips );
var4.add( "Items Stored: " + NumberFormat.getNumberInstance( Locale.US ).format( stack.stackSize ) );
this.drawTooltip( x, y, 0, join( var4, "\n" ) );
this.drawTooltip( x, y, var4 );
return;
}
}

View File

@ -381,10 +381,10 @@ public class GuiCraftConfirm extends AEBaseGui
}
}
if( this.tooltip >= 0 && dspToolTip.length() > 0 )
if( this.tooltip >= 0 && !dspToolTip.isEmpty() )
{
GL11.glPushAttrib( GL11.GL_ALL_ATTRIB_BITS );
this.drawTooltip( toolPosX, toolPosY + 10, 0, dspToolTip );
this.drawTooltip( toolPosX, toolPosY + 10, dspToolTip );
GL11.glPopAttrib();
}
}

View File

@ -332,10 +332,10 @@ public class GuiCraftingCPU extends AEBaseGui implements ISortSource
}
}
if( this.tooltip >= 0 && dspToolTip.length() > 0 )
if( this.tooltip >= 0 && !dspToolTip.isEmpty() )
{
GL11.glPushAttrib( GL11.GL_ALL_ATTRIB_BITS );
this.drawTooltip( toolPosX, toolPosY + 10, 0, dspToolTip );
this.drawTooltip( toolPosX, toolPosY + 10, dspToolTip );
GL11.glPopAttrib();
}
}

View File

@ -204,7 +204,7 @@ public class GuiNetworkStatus extends AEBaseGui implements ISortSource
if( this.tooltip >= 0 && toolTip.length() > 0 )
{
GL11.glPushAttrib( GL11.GL_ALL_ATTRIB_BITS );
this.drawTooltip( toolPosX, toolPosY + 10, 0, toolTip );
this.drawTooltip( toolPosX, toolPosY + 10, toolTip );
GL11.glPopAttrib();
}
}
@ -286,7 +286,7 @@ public class GuiNetworkStatus extends AEBaseGui implements ISortSource
if( myStack != null )
{
final List currentToolTip = stack.getTooltip( this.mc.thePlayer, this.mc.gameSettings.advancedItemTooltips );
List<String> currentToolTip = stack.getTooltip( this.mc.thePlayer, this.mc.gameSettings.advancedItemTooltips );
while( currentToolTip.size() > 1 )
{
@ -296,7 +296,7 @@ public class GuiNetworkStatus extends AEBaseGui implements ISortSource
currentToolTip.add( GuiText.Installed.getLocal() + ": " + ( myStack.getStackSize() ) );
currentToolTip.add( GuiText.EnergyDrain.getLocal() + ": " + Platform.formatPowerLong( myStack.getCountRequestable(), true ) );
this.drawTooltip( x, y, 0, join( currentToolTip, "\n" ) );
this.drawTooltip( x, y, currentToolTip );
}
}
// super.drawItemStackTooltip( stack, x, y );