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; | ... | ... |