Commit 239a6eb03a4db2ce3083c6543c6675851f79adda
1 parent
0188a6ba
LiteLoader 1.6.4_02 - experimental - remove parent gui reference from config panel container
Showing
2 changed files
with
57 additions
and
35 deletions
java/com/mumfrey/liteloader/gui/GuiConfigPanelContainer.java
... | ... | @@ -28,11 +28,6 @@ public class GuiConfigPanelContainer extends Gui implements ConfigPanelHost |
28 | 28 | private static final int MARGIN = 12; |
29 | 29 | |
30 | 30 | /** |
31 | - * Parent screen | |
32 | - */ | |
33 | - private GuiScreenModInfo parent; | |
34 | - | |
35 | - /** | |
36 | 31 | * Minecraft |
37 | 32 | */ |
38 | 33 | private Minecraft mc; |
... | ... | @@ -88,17 +83,21 @@ public class GuiConfigPanelContainer extends Gui implements ConfigPanelHost |
88 | 83 | private int panelTop = TOP; |
89 | 84 | |
90 | 85 | /** |
86 | + * True if the client wants to close the panel | |
87 | + */ | |
88 | + private boolean closeRequested; | |
89 | + | |
90 | + /** | |
91 | 91 | * @param parent |
92 | 92 | * @param minecraft |
93 | 93 | * @param panel |
94 | 94 | * @param mod |
95 | 95 | */ |
96 | - GuiConfigPanelContainer(GuiScreenModInfo parent, Minecraft minecraft, ConfigPanel panel, LiteMod mod) | |
96 | + GuiConfigPanelContainer(ConfigPanel panel, LiteMod mod) | |
97 | 97 | { |
98 | - this.parent = parent; | |
99 | - this.mc = minecraft; | |
100 | - this.panel = panel; | |
101 | - this.mod = mod; | |
98 | + this.mc = Minecraft.getMinecraft(); | |
99 | + this.panel = panel; | |
100 | + this.mod = mod; | |
102 | 101 | } |
103 | 102 | |
104 | 103 | /** |
... | ... | @@ -137,14 +136,22 @@ public class GuiConfigPanelContainer extends Gui implements ConfigPanelHost |
137 | 136 | { |
138 | 137 | return this.panelHeight; |
139 | 138 | } |
140 | - | |
139 | + | |
141 | 140 | /* (non-Javadoc) |
142 | 141 | * @see com.mumfrey.liteloader.modconfig.ConfigPanelHost#close() |
143 | 142 | */ |
144 | 143 | @Override |
145 | 144 | public void close() |
146 | 145 | { |
147 | - this.parent.closeConfigPanel(this); | |
146 | + this.closeRequested = true; | |
147 | + } | |
148 | + | |
149 | + /** | |
150 | + * Get whether the client wants to close the panel | |
151 | + */ | |
152 | + boolean isCloseRequested() | |
153 | + { | |
154 | + return this.closeRequested; | |
148 | 155 | } |
149 | 156 | |
150 | 157 | /** | ... | ... |
java/com/mumfrey/liteloader/gui/GuiScreenModInfo.java
... | ... | @@ -353,24 +353,7 @@ public class GuiScreenModInfo extends GuiScreen |
353 | 353 | } |
354 | 354 | else |
355 | 355 | { |
356 | - // Draw the header pieces | |
357 | - glDrawTexturedRect(LEFT_EDGE + MARGIN, 12, 128, 40, 0, 0, 256, 80, 1.0F); // liteloader logo | |
358 | - glDrawTexturedRect(this.width - 32 - MARGIN, 12, 32, 45, 0, 80, 64, 170, 1.0F); // chicken | |
359 | - | |
360 | - // Draw header text | |
361 | - this.fontRenderer.drawString("Version " + LiteLoader.getVersion(), LEFT_EDGE + MARGIN + 38, 50, 0xFFFFFFFF); | |
362 | - this.fontRenderer.drawString(this.activeModText, LEFT_EDGE + MARGIN + 38, 60, 0xFFAAAAAA); | |
363 | - | |
364 | - // Draw top and bottom horizontal rules | |
365 | - drawRect(LEFT_EDGE + MARGIN, 80, this.width - MARGIN, 81, 0xFF999999); | |
366 | - drawRect(LEFT_EDGE + MARGIN, this.height - PANEL_BOTTOM + 2, this.width - MARGIN, this.height - PANEL_BOTTOM + 3, 0xFF999999); | |
367 | - | |
368 | - int innerWidth = this.width - LEFT_EDGE - MARGIN - MARGIN - 4; | |
369 | - int panelWidth = innerWidth / 2; | |
370 | - int panelHeight = this.height - PANEL_BOTTOM - PANEL_TOP; | |
371 | - | |
372 | - this.drawModsList(mouseX, mouseY, partialTicks, panelWidth, panelHeight); | |
373 | - this.drawSelectedMod(mouseX, mouseY, partialTicks, panelWidth, panelHeight); | |
356 | + this.drawInfoPanel(mouseX, mouseY, partialTicks); | |
374 | 357 | |
375 | 358 | // Draw other controls inside the transform so that they slide properly |
376 | 359 | super.drawScreen(mouseX, mouseY, partialTicks); |
... | ... | @@ -378,9 +361,8 @@ public class GuiScreenModInfo extends GuiScreen |
378 | 361 | } |
379 | 362 | else if (this.configPanel != null) |
380 | 363 | { |
381 | - this.closeConfigPanel(this.configPanel); | |
364 | + this.closeConfigPanel(); | |
382 | 365 | } |
383 | - | |
384 | 366 | |
385 | 367 | glPopMatrix(); |
386 | 368 | } |
... | ... | @@ -392,6 +374,12 @@ public class GuiScreenModInfo extends GuiScreen |
392 | 374 | */ |
393 | 375 | public void drawConfigPanel(int mouseX, int mouseY, float partialTicks) |
394 | 376 | { |
377 | + if (this.configPanel.isCloseRequested()) | |
378 | + { | |
379 | + this.closeConfigPanel(); | |
380 | + return; | |
381 | + } | |
382 | + | |
395 | 383 | glPushMatrix(); |
396 | 384 | glTranslatef(LEFT_EDGE, 0, 0); |
397 | 385 | |
... | ... | @@ -404,6 +392,33 @@ public class GuiScreenModInfo extends GuiScreen |
404 | 392 | * @param mouseX |
405 | 393 | * @param mouseY |
406 | 394 | * @param partialTicks |
395 | + */ | |
396 | + public void drawInfoPanel(int mouseX, int mouseY, float partialTicks) | |
397 | + { | |
398 | + // Draw the header pieces | |
399 | + glDrawTexturedRect(LEFT_EDGE + MARGIN, 12, 128, 40, 0, 0, 256, 80, 1.0F); // liteloader logo | |
400 | + glDrawTexturedRect(this.width - 32 - MARGIN, 12, 32, 45, 0, 80, 64, 170, 1.0F); // chicken | |
401 | + | |
402 | + // Draw header text | |
403 | + this.fontRenderer.drawString("Version " + LiteLoader.getVersion(), LEFT_EDGE + MARGIN + 38, 50, 0xFFFFFFFF); | |
404 | + this.fontRenderer.drawString(this.activeModText, LEFT_EDGE + MARGIN + 38, 60, 0xFFAAAAAA); | |
405 | + | |
406 | + // Draw top and bottom horizontal rules | |
407 | + drawRect(LEFT_EDGE + MARGIN, 80, this.width - MARGIN, 81, 0xFF999999); | |
408 | + drawRect(LEFT_EDGE + MARGIN, this.height - PANEL_BOTTOM + 2, this.width - MARGIN, this.height - PANEL_BOTTOM + 3, 0xFF999999); | |
409 | + | |
410 | + int innerWidth = this.width - LEFT_EDGE - MARGIN - MARGIN - 4; | |
411 | + int panelWidth = innerWidth / 2; | |
412 | + int panelHeight = this.height - PANEL_BOTTOM - PANEL_TOP; | |
413 | + | |
414 | + this.drawModsList(mouseX, mouseY, partialTicks, panelWidth, panelHeight); | |
415 | + this.drawSelectedMod(mouseX, mouseY, partialTicks, panelWidth, panelHeight); | |
416 | + } | |
417 | + | |
418 | + /** | |
419 | + * @param mouseX | |
420 | + * @param mouseY | |
421 | + * @param partialTicks | |
407 | 422 | * @param width |
408 | 423 | * @param height |
409 | 424 | */ |
... | ... | @@ -672,7 +687,7 @@ public class GuiScreenModInfo extends GuiScreen |
672 | 687 | this.configPanel.onHidden(); |
673 | 688 | } |
674 | 689 | |
675 | - this.configPanel = new GuiConfigPanelContainer(this, this.mc, panel, this.selectedMod.getModInstance()); | |
690 | + this.configPanel = new GuiConfigPanelContainer(panel, this.selectedMod.getModInstance()); | |
676 | 691 | this.configPanel.setSize(this.width - LEFT_EDGE, this.height); |
677 | 692 | this.configPanel.onShown(); |
678 | 693 | } |
... | ... | @@ -682,9 +697,9 @@ public class GuiScreenModInfo extends GuiScreen |
682 | 697 | /* (non-Javadoc) |
683 | 698 | * @see com.mumfrey.liteloader.modconfig.ConfigPanelHost#close() |
684 | 699 | */ |
685 | - void closeConfigPanel(GuiConfigPanelContainer container) | |
700 | + private void closeConfigPanel() | |
686 | 701 | { |
687 | - if (this.configPanel != null && (container == null || this.configPanel == container)) | |
702 | + if (this.configPanel != null) | |
688 | 703 | { |
689 | 704 | this.configPanel.onHidden(); |
690 | 705 | this.configPanel = null; | ... | ... |