66
77package dan200 .computercraft .client .gui ;
88
9- import dan200 .computercraft .ComputerCraft ;
109import dan200 .computercraft .core .terminal .TextBuffer ;
1110import dan200 .computercraft .shared .media .inventory .ContainerHeldItem ;
1211import dan200 .computercraft .shared .media .items .ItemPrintout ;
13- import dan200 .computercraft .shared .util .Palette ;
1412import net .minecraft .client .gui .inventory .GuiContainer ;
1513import net .minecraft .client .renderer .GlStateManager ;
16- import net .minecraft .util .ResourceLocation ;
1714import org .lwjgl .input .Mouse ;
1815
1916import java .io .IOException ;
2017
18+ import static dan200 .computercraft .client .render .PrintoutRenderer .*;
19+
2120public class GuiPrintout extends GuiContainer
2221{
23- public static final ResourceLocation BACKGROUND = new ResourceLocation ( "computercraft" , "textures/gui/printout.png" );
24- public static final int X_SIZE = 172 ;
25- public static final int Y_SIZE = 209 ;
26-
2722 private final boolean m_book ;
2823 private final int m_pages ;
2924 private final TextBuffer [] m_text ;
@@ -33,23 +28,18 @@ public class GuiPrintout extends GuiContainer
3328 public GuiPrintout ( ContainerHeldItem container )
3429 {
3530 super ( container );
36- m_book = (ItemPrintout .getType ( container .getStack () ) == ItemPrintout .Type .Book );
3731
3832 String [] text = ItemPrintout .getText ( container .getStack () );
3933 m_text = new TextBuffer [ text .length ];
40- for ( int i =0 ; i <m_text .length ; ++i )
41- {
42- m_text [i ] = new TextBuffer ( text [i ] );
43- }
34+ for ( int i = 0 ; i < m_text .length ; ++i ) m_text [ i ] = new TextBuffer ( text [ i ] );
35+
4436 String [] colours = ItemPrintout .getColours ( container .getStack () );
4537 m_colours = new TextBuffer [ colours .length ];
46- for ( int i =0 ; i <m_colours .length ; ++i )
47- {
48- m_colours [i ] = new TextBuffer ( colours [i ] );
49- }
38+ for ( int i = 0 ; i < m_colours .length ; ++i ) m_colours [ i ] = new TextBuffer ( colours [ i ] );
5039
51- m_pages = Math .max ( m_text .length / ItemPrintout .LINES_PER_PAGE , 1 );
5240 m_page = 0 ;
41+ m_pages = Math .max ( m_text .length / ItemPrintout .LINES_PER_PAGE , 1 );
42+ m_book = ItemPrintout .getType ( container .getStack () ) == ItemPrintout .Type .Book ;
5343 }
5444
5545 @ Override
@@ -77,25 +67,19 @@ public void updateScreen()
7767 }
7868
7969 @ Override
80- protected void keyTyped (char c , int k ) throws IOException
70+ protected void keyTyped ( char c , int k ) throws IOException
8171 {
8272 super .keyTyped ( c , k );
8373
8474 if ( k == 205 )
8575 {
8676 // Right
87- if ( m_page < m_pages - 1 )
88- {
89- m_page = m_page + 1 ;
90- }
77+ if ( m_page < m_pages - 1 ) m_page ++;
9178 }
9279 else if ( k == 203 )
9380 {
94- // Left
95- if ( m_page > 0 )
96- {
97- m_page = m_page - 1 ;
98- }
81+ // Left
82+ if ( m_page > 0 ) m_page --;
9983 }
10084 }
10185
@@ -105,21 +89,15 @@ public void handleMouseInput() throws IOException
10589 super .handleMouseInput ();
10690
10791 int mouseWheelChange = Mouse .getEventDWheel ();
108- if ( mouseWheelChange < 0 )
92+ if ( mouseWheelChange < 0 )
10993 {
11094 // Up
111- if ( m_page < m_pages - 1 )
112- {
113- m_page = m_page + 1 ;
114- }
95+ if ( m_page < m_pages - 1 ) m_page ++;
11596 }
116- else if ( mouseWheelChange > 0 )
97+ else if ( mouseWheelChange > 0 )
11798 {
11899 // Down
119- if ( m_page > 0 )
120- {
121- m_page = m_page - 1 ;
122- }
100+ if ( m_page > 0 ) m_page --;
123101 }
124102 }
125103
@@ -134,78 +112,20 @@ protected void drawGuiContainerBackgroundLayer( float var1, int var2, int var3 )
134112 }
135113
136114 @ Override
137- public void drawScreen (int mouseX , int mouseY , float f )
115+ public void drawScreen ( int mouseX , int mouseY , float f )
138116 {
139117 // Draw background
118+ zLevel = zLevel - 1 ;
140119 drawDefaultBackground ();
141-
120+ zLevel = zLevel + 1 ;
121+
142122 // Draw the printout
143123 GlStateManager .color ( 1.0f , 1.0f , 1.0f , 1.0f );
144- this .mc .getTextureManager ().bindTexture ( BACKGROUND );
145-
124+
146125 int startY = (height - Y_SIZE ) / 2 ;
147- //int startX = (width - X_SIZE) / 2 - (m_page * 8);
148- int startX = (width - (X_SIZE + (m_pages - 1 )*8 )) / 2 ;
149-
150- if ( m_book )
151- {
152- // Border
153- drawTexturedModalRect ( startX - 8 , startY - 8 , X_SIZE + 48 , 0 , 12 , Y_SIZE + 24 );
154- drawTexturedModalRect ( startX + X_SIZE + (m_pages - 1 )*8 - 4 , startY - 8 , X_SIZE + 48 + 12 , 0 , 12 , Y_SIZE + 24 );
155-
156- drawTexturedModalRect ( startX , startY - 8 , 0 , Y_SIZE , X_SIZE , 12 );
157- drawTexturedModalRect ( startX , startY + Y_SIZE - 4 , 0 , Y_SIZE + 12 , X_SIZE , 12 );
158- for ( int n =1 ; n <m_pages ; ++n )
159- {
160- drawTexturedModalRect ( startX + X_SIZE + (n -1 )*8 , startY - 8 , 0 , Y_SIZE , 8 , 12 );
161- drawTexturedModalRect ( startX + X_SIZE + (n -1 )*8 , startY + Y_SIZE - 4 , 0 , Y_SIZE + 12 , 8 , 12 );
162- }
163- }
164-
165- // Left half
166- if ( m_page == 0 )
167- {
168- drawTexturedModalRect ( startX , startY , 24 , 0 , X_SIZE / 2 , Y_SIZE );
169- drawTexturedModalRect ( startX , startY , 0 , 0 , 12 , Y_SIZE );
170- }
171- else
172- {
173- drawTexturedModalRect ( startX , startY , 0 , 0 , 12 , Y_SIZE );
174- for ( int n =1 ; n <m_page ; ++n )
175- {
176- drawTexturedModalRect ( startX + n *8 , startY , 12 , 0 , 12 , Y_SIZE );
177- }
178- drawTexturedModalRect ( startX + m_page *8 , startY , 24 , 0 , X_SIZE / 2 , Y_SIZE );
179- }
180-
181- // Right half
182- if ( m_page == (m_pages - 1 ) )
183- {
184- drawTexturedModalRect ( startX + m_page *8 + X_SIZE /2 , startY , 24 + X_SIZE / 2 , 0 , X_SIZE / 2 , Y_SIZE );
185- drawTexturedModalRect ( startX + m_page *8 + (X_SIZE - 12 ), startY , 24 + X_SIZE + 12 , 0 , 12 , Y_SIZE );
186- }
187- else
188- {
189- drawTexturedModalRect ( startX + (m_pages - 1 )*8 + (X_SIZE - 12 ), startY , 24 + X_SIZE + 12 , 0 , 12 , Y_SIZE );
190- for ( int n =m_pages -2 ; n >=m_page ; --n )
191- {
192- drawTexturedModalRect ( startX + n *8 + (X_SIZE - 12 ), startY , 24 + X_SIZE , 0 , 12 , Y_SIZE );
193- }
194- drawTexturedModalRect ( startX + m_page *8 + X_SIZE /2 , startY , 24 + X_SIZE / 2 , 0 , X_SIZE / 2 , Y_SIZE );
195- }
126+ int startX = (width - X_SIZE ) / 2 ;
196127
197- // Draw the text
198- FixedWidthFontRenderer fontRenderer = (FixedWidthFontRenderer )ComputerCraft .getFixedWidthFontRenderer ();
199- int x = startX + m_page * 8 + 13 ;
200- int y = startY + 11 ;
201- for ( int line =0 ; line <ItemPrintout .LINES_PER_PAGE ; ++line )
202- {
203- int lineIdx = ItemPrintout .LINES_PER_PAGE * m_page + line ;
204- if ( lineIdx >= 0 && lineIdx < m_text .length )
205- {
206- fontRenderer .drawString ( m_text [lineIdx ], x , y , m_colours [lineIdx ], null , 0 , 0 , false , Palette .DEFAULT );
207- }
208- y = y + FixedWidthFontRenderer .FONT_HEIGHT ;
209- }
128+ drawBorder ( startX , startY , zLevel , m_page , m_pages , m_book );
129+ drawText ( startX + X_TEXT_MARGIN , startY + Y_TEXT_MARGIN , ItemPrintout .LINES_PER_PAGE * m_page , m_text , m_colours );
210130 }
211131}
0 commit comments