1
0
mirror of https://github.com/SquidDev-CC/CC-Tweaked synced 2025-10-30 13:13:00 +00:00

Cherry pick several improvements from 1.13

- Move container opening (and gui handling) into a separate class
 - Move turtle/computer placement code onto the block
 - GUIs now use gui{Left,Top} instead of calculating it manually.
 - IPeripheralTile is now exposed in the API.
This commit is contained in:
SquidDev
2019-03-27 18:59:02 +00:00
parent a600213b00
commit c4b371b124
48 changed files with 494 additions and 724 deletions

View File

@@ -144,7 +144,7 @@ public class GuiComputer extends GuiContainer
}
@Override
public void drawScreen( int mouseX, int mouseY, float f )
public void drawScreen( int mouseX, int mouseY, float partialTicks )
{
// Work out where to draw
int startX = (width - m_terminal.getWidth()) / 2;
@@ -156,7 +156,7 @@ public class GuiComputer extends GuiContainer
drawDefaultBackground();
// Draw terminal
m_terminal.draw( this.mc, startX, startY, mouseX, mouseY );
m_terminal.draw( mc, startX, startY, mouseX, mouseY );
// Draw a border around the terminal
GlStateManager.color( 1.0f, 1.0f, 1.0f, 1.0f );
@@ -164,20 +164,14 @@ public class GuiComputer extends GuiContainer
{
case Normal:
default:
{
this.mc.getTextureManager().bindTexture( BACKGROUND );
mc.getTextureManager().bindTexture( BACKGROUND );
break;
}
case Advanced:
{
this.mc.getTextureManager().bindTexture( BACKGROUND_ADVANCED );
mc.getTextureManager().bindTexture( BACKGROUND_ADVANCED );
break;
}
case Command:
{
this.mc.getTextureManager().bindTexture( BACKGROUND_COMMAND );
mc.getTextureManager().bindTexture( BACKGROUND_COMMAND );
break;
}
}
drawTexturedModalRect( startX - 12, startY - 12, 12, 28, 12, 12 );

View File

@@ -25,7 +25,7 @@ public class GuiDiskDrive extends GuiContainer
}
@Override
protected void drawGuiContainerForegroundLayer( int par1, int par2 )
protected void drawGuiContainerForegroundLayer( int mouseX, int mouseY )
{
String title = m_container.getDiskDrive().getDisplayName().getUnformattedText();
fontRenderer.drawString( title, (xSize - fontRenderer.getStringWidth( title )) / 2, 6, 0x404040 );
@@ -33,13 +33,11 @@ public class GuiDiskDrive extends GuiContainer
}
@Override
protected void drawGuiContainerBackgroundLayer( float f, int i, int j )
protected void drawGuiContainerBackgroundLayer( float partialTicks, int mouseX, int mouseY )
{
GlStateManager.color( 1.0F, 1.0F, 1.0F, 1.0F );
this.mc.getTextureManager().bindTexture( BACKGROUND );
int l = (width - xSize) / 2;
int i1 = (height - ySize) / 2;
drawTexturedModalRect( l, i1, 0, 0, xSize, ySize );
mc.getTextureManager().bindTexture( BACKGROUND );
drawTexturedModalRect( guiLeft, guiTop, 0, 0, xSize, ySize );
}
@Override

View File

@@ -16,36 +16,30 @@ public class GuiPrinter extends GuiContainer
{
private static final ResourceLocation BACKGROUND = new ResourceLocation( "computercraft", "textures/gui/printer.png" );
private final ContainerPrinter m_container;
private final ContainerPrinter container;
public GuiPrinter( ContainerPrinter container )
{
super( container );
m_container = container;
this.container = container;
}
@Override
protected void drawGuiContainerForegroundLayer( int par1, int par2 )
protected void drawGuiContainerForegroundLayer( int mouseX, int mouseY )
{
String title = m_container.getPrinter().getDisplayName().getUnformattedText();
String title = container.getPrinter().getDisplayName().getUnformattedText();
fontRenderer.drawString( title, (xSize - fontRenderer.getStringWidth( title )) / 2, 6, 0x404040 );
fontRenderer.drawString( I18n.format( "container.inventory" ), 8, (ySize - 96) + 2, 0x404040 );
}
@Override
protected void drawGuiContainerBackgroundLayer( float f, int i, int j )
protected void drawGuiContainerBackgroundLayer( float partialTicks, int mouseX, int mouseY )
{
GlStateManager.color( 1.0F, 1.0F, 1.0F, 1.0F );
this.mc.getTextureManager().bindTexture( BACKGROUND );
int startX = (width - xSize) / 2;
int startY = (height - ySize) / 2;
drawTexturedModalRect( startX, startY, 0, 0, xSize, ySize );
mc.getTextureManager().bindTexture( BACKGROUND );
drawTexturedModalRect( guiLeft, guiTop, 0, 0, xSize, ySize );
boolean printing = m_container.isPrinting();
if( printing )
{
drawTexturedModalRect( startX + 34, startY + 21, 176, 0, 25, 45 );
}
if( container.isPrinting() ) drawTexturedModalRect( guiLeft + 34, guiTop + 21, 176, 0, 25, 45 );
}
@Override

View File

@@ -29,6 +29,8 @@ public class GuiPrintout extends GuiContainer
{
super( container );
ySize = Y_SIZE;
String[] text = ItemPrintout.getText( container.getStack() );
m_text = new TextBuffer[text.length];
for( int i = 0; i < m_text.length; i++ ) m_text[i] = new TextBuffer( text[i] );
@@ -73,41 +75,35 @@ public class GuiPrintout extends GuiContainer
int mouseWheelChange = Mouse.getEventDWheel();
if( mouseWheelChange < 0 )
{
// Up
// Scroll up goes to the next page
if( m_page < m_pages - 1 ) m_page++;
}
else if( mouseWheelChange > 0 )
{
// Down
// Scroll down goes to the next page
if( m_page > 0 ) m_page--;
}
}
@Override
protected void drawGuiContainerForegroundLayer( int par1, int par2 )
protected void drawGuiContainerBackgroundLayer( float partialTicks, int mouseX, int mouseY )
{
// Draw the printout
GlStateManager.color( 1.0f, 1.0f, 1.0f, 1.0f );
drawBorder( guiLeft, guiTop, zLevel, m_page, m_pages, m_book );
drawText( guiLeft + X_TEXT_MARGIN, guiTop + Y_TEXT_MARGIN, ItemPrintout.LINES_PER_PAGE * m_page, m_text, m_colours );
}
@Override
protected void drawGuiContainerBackgroundLayer( float var1, int var2, int var3 )
public void drawScreen( int mouseX, int mouseY, float partialTicks )
{
}
@Override
public void drawScreen( int mouseX, int mouseY, float f )
{
// Draw background
// We must take the background further back in order to not overlap with our printed pages.
zLevel = zLevel - 1;
drawDefaultBackground();
zLevel = zLevel + 1;
// Draw the printout
GlStateManager.color( 1.0f, 1.0f, 1.0f, 1.0f );
int startY = (height - Y_SIZE) / 2;
int startX = (width - X_SIZE) / 2;
drawBorder( startX, startY, zLevel, m_page, m_pages, m_book );
drawText( startX + X_TEXT_MARGIN, startY + Y_TEXT_MARGIN, ItemPrintout.LINES_PER_PAGE * m_page, m_text, m_colours );
super.drawScreen( mouseX, mouseY, partialTicks );
renderHoveredToolTip( mouseX, mouseY );
}
}

View File

@@ -23,7 +23,7 @@ import java.io.IOException;
public class GuiTurtle extends GuiContainer
{
private static final ResourceLocation BACKGROUND = new ResourceLocation( "computercraft", "textures/gui/turtle.png" );
private static final ResourceLocation BACKGROUND_NORMAL = new ResourceLocation( "computercraft", "textures/gui/turtle.png" );
private static final ResourceLocation BACKGROUND_ADVANCED = new ResourceLocation( "computercraft", "textures/gui/turtle_advanced.png" );
private ContainerTurtle m_container;
@@ -50,8 +50,8 @@ public class GuiTurtle extends GuiContainer
super.initGui();
Keyboard.enableRepeatEvents( true );
m_terminalGui = new WidgetTerminal(
(width - xSize) / 2 + 8,
(height - ySize) / 2 + 8,
guiLeft + 8,
guiTop + 8,
ComputerCraft.terminalWidth_turtle,
ComputerCraft.terminalHeight_turtle,
() -> m_computer,
@@ -112,9 +112,6 @@ public class GuiTurtle extends GuiContainer
protected void drawSelectionSlot( boolean advanced )
{
int x = (width - xSize) / 2;
int y = (height - ySize) / 2;
// Draw selection slot
int slot = m_container.getSelectedSlot();
if( slot >= 0 )
@@ -122,13 +119,13 @@ public class GuiTurtle extends GuiContainer
GlStateManager.color( 1.0F, 1.0F, 1.0F, 1.0F );
int slotX = (slot % 4);
int slotY = (slot / 4);
this.mc.getTextureManager().bindTexture( advanced ? BACKGROUND_ADVANCED : BACKGROUND );
drawTexturedModalRect( x + m_container.m_turtleInvStartX - 2 + slotX * 18, y + m_container.m_playerInvStartY - 2 + slotY * 18, 0, 217, 24, 24 );
mc.getTextureManager().bindTexture( advanced ? BACKGROUND_ADVANCED : BACKGROUND_NORMAL );
drawTexturedModalRect( guiLeft + m_container.m_turtleInvStartX - 2 + slotX * 18, guiTop + m_container.m_playerInvStartY - 2 + slotY * 18, 0, 217, 24, 24 );
}
}
@Override
protected void drawGuiContainerBackgroundLayer( float f, int mouseX, int mouseY )
protected void drawGuiContainerBackgroundLayer( float partialTicks, int mouseX, int mouseY )
{
// Draw term
boolean advanced = (m_family == ComputerFamily.Advanced);
@@ -136,10 +133,8 @@ public class GuiTurtle extends GuiContainer
// Draw border/inventory
GlStateManager.color( 1.0F, 1.0F, 1.0F, 1.0F );
this.mc.getTextureManager().bindTexture( advanced ? BACKGROUND_ADVANCED : BACKGROUND );
int x = (width - xSize) / 2;
int y = (height - ySize) / 2;
drawTexturedModalRect( x, y, 0, 0, xSize, ySize );
mc.getTextureManager().bindTexture( advanced ? BACKGROUND_ADVANCED : BACKGROUND_NORMAL );
drawTexturedModalRect( guiLeft, guiTop, 0, 0, xSize, ySize );
drawSelectionSlot( advanced );
}