Move the gui stuff to a common sourceset so I can use it in HDSkins

This commit is contained in:
Sollace 2018-07-27 14:27:32 +02:00
parent 05bd9b0ac3
commit 2de216842f
11 changed files with 80 additions and 27 deletions

View file

@ -38,12 +38,17 @@ minecraft {
sourceSets { sourceSets {
hdskins { hdskins {
compileClasspath += main.compileClasspath compileClasspath += main.compileClasspath
compileClasspath += common.compileClasspath
ext.refMap = 'hdskins.mixin.refmap.json' ext.refMap = 'hdskins.mixin.refmap.json'
} }
main { main {
compileClasspath += hdskins.output compileClasspath += hdskins.output
compileClasspath += common.output
ext.refMap = 'minelp.mixin.refmap.json' ext.refMap = 'minelp.mixin.refmap.json'
} }
common {
}
} }
dependencies { dependencies {

View file

@ -0,0 +1,19 @@
package com.minelittlepony.gui;
import net.minecraft.client.gui.GuiButton;
public class Button extends GuiButton implements IActionable {
private IGUIAction<Button> action;
public Button(int x, int y, int width, int height, String label, IGUIAction<Button> callback) {
super(0, x, y, width, height, GameGui.translate(label));
action = callback;
}
@Override
public void perform() {
action.perform(this);
}
}

View file

@ -4,6 +4,12 @@ import com.mumfrey.liteloader.client.gui.GuiCheckbox;
import net.minecraft.client.resources.I18n; import net.minecraft.client.resources.I18n;
/**
* Checkbox that supports a gui action when it changes.
*
* @author Sollace
*
*/
public class Checkbox extends GuiCheckbox implements IActionable { public class Checkbox extends GuiCheckbox implements IActionable {
private final IGUIAction<Boolean> action; private final IGUIAction<Boolean> action;

View file

@ -0,0 +1,21 @@
package com.minelittlepony.gui;
import java.io.IOException;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.resources.I18n;
public abstract class GameGui extends GuiScreen {
@Override
protected void actionPerformed(GuiButton button) throws IOException {
if (button instanceof IActionable) {
((IActionable)button).perform();
}
}
protected static String translate(String string) {
return I18n.format(string);
}
}

View file

@ -4,6 +4,12 @@ import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.resources.I18n; import net.minecraft.client.resources.I18n;
/**
* A simple label for drawing text to a gui screen.
*
* @author Sollace
*
*/
public class Label extends GuiButton { public class Label extends GuiButton {
private boolean center; private boolean center;

View file

@ -7,18 +7,20 @@ import com.mumfrey.liteloader.modconfig.ConfigPanelHost;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.resources.I18n;
/** /**
* Boilerplate because LiteLoader has to be such a 'special flower' -_- * A GuiScreen that doubles as a liteloader panel. What is this madness!?
*/ */
public class PonySettingsPanel extends GuiPonySettings implements ConfigPanel { public abstract class SettingsPanel extends GameGui implements ConfigPanel {
private boolean isInPanel = false;
private int contentHeight; private int contentHeight;
@Override @Override
public String getPanelTitle() { public String getPanelTitle() {
return I18n.format(getTitle()); return translate(getTitle());
} }
@Override @Override
@ -40,6 +42,7 @@ public class PonySettingsPanel extends GuiPonySettings implements ConfigPanel {
width = host.getWidth(); width = host.getWidth();
buttonList.clear(); buttonList.clear();
initGui(); initGui();
isInPanel = true;
} }
@Override @Override
@ -51,6 +54,7 @@ public class PonySettingsPanel extends GuiPonySettings implements ConfigPanel {
@Override @Override
public void onPanelHidden() { public void onPanelHidden() {
isInPanel = false;
onGuiClosed(); onGuiClosed();
} }
@ -94,11 +98,14 @@ public class PonySettingsPanel extends GuiPonySettings implements ConfigPanel {
@Override @Override
public void drawWorldBackground(int tint) { public void drawWorldBackground(int tint) {
if (!isInPanel) {
super.drawWorldBackground(tint);
}
} }
protected boolean mustScroll() { protected boolean mustScroll() {
return true; return isInPanel;
} }
protected abstract String getTitle();
} }

View file

@ -3,6 +3,12 @@ package com.minelittlepony.gui;
import net.minecraft.client.gui.GuiSlider; import net.minecraft.client.gui.GuiSlider;
import net.minecraft.client.gui.GuiPageButtonList.GuiResponder; import net.minecraft.client.gui.GuiPageButtonList.GuiResponder;
/**
* A slider for sliding.
*
* @author Sollace
*
*/
public class Slider extends GuiSlider { public class Slider extends GuiSlider {
private static Responder callback; private static Responder callback;

View file

@ -1,6 +1,6 @@
package com.minelittlepony; package com.minelittlepony;
import com.minelittlepony.gui.PonySettingsPanel; import com.minelittlepony.gui.GuiPonySettings;
import com.mumfrey.liteloader.Configurable; import com.mumfrey.liteloader.Configurable;
import com.mumfrey.liteloader.InitCompleteListener; import com.mumfrey.liteloader.InitCompleteListener;
import com.mumfrey.liteloader.Tickable; import com.mumfrey.liteloader.Tickable;
@ -46,6 +46,6 @@ public class LiteModMineLittlePony implements InitCompleteListener, Tickable, Co
@Override @Override
public Class<? extends ConfigPanel> getConfigPanelClass() { public Class<? extends ConfigPanel> getConfigPanelClass() {
return PonySettingsPanel.class; return GuiPonySettings.class;
} }
} }

View file

@ -1,7 +1,5 @@
package com.minelittlepony.gui; package com.minelittlepony.gui;
import java.io.IOException;
import com.minelittlepony.MineLittlePony; import com.minelittlepony.MineLittlePony;
import com.minelittlepony.PonyConfig; import com.minelittlepony.PonyConfig;
import com.minelittlepony.PonyConfig.PonySettings; import com.minelittlepony.PonyConfig.PonySettings;
@ -9,15 +7,11 @@ import com.minelittlepony.pony.data.PonyLevel;
import com.minelittlepony.render.ponies.MobRenderers; import com.minelittlepony.render.ponies.MobRenderers;
import com.mumfrey.liteloader.core.LiteLoader; import com.mumfrey.liteloader.core.LiteLoader;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.resources.I18n;
/** /**
* In-Game options menu. * In-Game options menu.
* *
*/ */
public class GuiPonySettings extends GuiScreen { public class GuiPonySettings extends SettingsPanel {
private static final String OPTIONS_PREFIX = "minelp.options."; private static final String OPTIONS_PREFIX = "minelp.options.";
@ -44,7 +38,7 @@ public class GuiPonySettings extends GuiScreen {
addButton(new Label(LEFT, row += 15, PONY_LEVEL, -1)); addButton(new Label(LEFT, row += 15, PONY_LEVEL, -1));
addButton(new Slider(LEFT, row += 15, 0, 2, config.getPonyLevel().ordinal(), (int id, String name, float value) -> { addButton(new Slider(LEFT, row += 15, 0, 2, config.getPonyLevel().ordinal(), (int id, String name, float value) -> {
return I18n.format(PONY_LEVEL + "." + PonyLevel.valueFor(value).name().toLowerCase()); return translate(PONY_LEVEL + "." + PonyLevel.valueFor(value).name().toLowerCase());
}, v -> { }, v -> {
PonyLevel level = PonyLevel.valueFor(v); PonyLevel level = PonyLevel.valueFor(v);
config.setPonyLevel(level); config.setPonyLevel(level);
@ -69,13 +63,6 @@ public class GuiPonySettings extends GuiScreen {
} }
} }
@Override
protected void actionPerformed(GuiButton button) throws IOException {
if (button instanceof IActionable) {
((IActionable)button).perform();
}
}
@Override @Override
public void drawScreen(int mouseX, int mouseY, float partialTicks) { public void drawScreen(int mouseX, int mouseY, float partialTicks) {
drawDefaultBackground(); drawDefaultBackground();
@ -90,8 +77,4 @@ public class GuiPonySettings extends GuiScreen {
protected String getTitle() { protected String getTitle() {
return OPTIONS_PREFIX + "title"; return OPTIONS_PREFIX + "title";
} }
protected boolean mustScroll() {
return false;
}
} }