2019-03-23 20:49:34 +01:00
|
|
|
package com.minelittlepony.client.gui;
|
2018-05-13 18:43:49 +02:00
|
|
|
|
2019-05-27 17:59:15 +02:00
|
|
|
import net.minecraft.client.gui.Screen;
|
|
|
|
import net.minecraft.client.resource.language.I18n;
|
2019-03-24 00:04:54 +01:00
|
|
|
|
2019-03-23 20:58:50 +01:00
|
|
|
import com.minelittlepony.MineLittlePony;
|
2019-03-23 20:49:34 +01:00
|
|
|
import com.minelittlepony.client.render.entities.MobRenderers;
|
2019-03-24 00:04:54 +01:00
|
|
|
import com.minelittlepony.common.client.gui.GuiHost;
|
|
|
|
import com.minelittlepony.common.client.gui.IGuiGuest;
|
2019-04-14 13:32:01 +02:00
|
|
|
import com.minelittlepony.common.client.gui.element.Label;
|
|
|
|
import com.minelittlepony.common.client.gui.element.Slider;
|
|
|
|
import com.minelittlepony.common.client.gui.element.Toggle;
|
2019-03-23 20:58:50 +01:00
|
|
|
import com.minelittlepony.settings.PonyConfig;
|
|
|
|
import com.minelittlepony.settings.PonyLevel;
|
2019-05-28 10:26:26 +02:00
|
|
|
import com.minelittlepony.settings.PonySettings;
|
2018-05-13 18:43:49 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* In-Game options menu.
|
|
|
|
*
|
|
|
|
*/
|
2019-03-24 00:04:54 +01:00
|
|
|
public class GuiPonySettings implements IGuiGuest {
|
2018-05-13 18:43:49 +02:00
|
|
|
|
|
|
|
private static final String OPTIONS_PREFIX = "minelp.options.";
|
|
|
|
|
|
|
|
private static final String PONY_LEVEL = OPTIONS_PREFIX + "ponylevel";
|
|
|
|
|
|
|
|
private static final String MOB_PREFIX = "minelp.mobs.";
|
|
|
|
|
|
|
|
private PonyConfig config;
|
|
|
|
|
|
|
|
public GuiPonySettings() {
|
2019-03-23 19:17:46 +01:00
|
|
|
config = MineLittlePony.getInstance().getConfig();
|
2018-05-13 18:43:49 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2019-03-24 00:04:54 +01:00
|
|
|
public void initGui(GuiHost host) {
|
|
|
|
final int LEFT = host.width / 10;
|
|
|
|
final int RIGHT = host.mustScroll() ? LEFT : host.width - host.width / 3 - 16;
|
2018-05-13 18:43:49 +02:00
|
|
|
|
2019-03-24 00:04:54 +01:00
|
|
|
int row = host.mustScroll() ? 0 : 32;
|
2018-05-13 18:43:49 +02:00
|
|
|
|
2019-03-24 00:04:54 +01:00
|
|
|
if (!host.mustScroll()) {
|
2019-04-14 13:32:01 +02:00
|
|
|
host.addButton(new Label(host.width / 2, 12).setCentered()).getStyle().setText(getTitle());
|
2018-05-13 18:43:49 +02:00
|
|
|
}
|
|
|
|
|
2019-04-14 13:32:01 +02:00
|
|
|
host.addButton(new Label(LEFT, row += 15)).getStyle().setText(PONY_LEVEL);
|
|
|
|
host.addButton(new Slider(LEFT, row += 15, 0, 2, config.getPonyLevel().ordinal())
|
|
|
|
.onChange(v -> {
|
|
|
|
PonyLevel level = PonyLevel.valueFor(v);
|
|
|
|
config.setPonyLevel(level);
|
|
|
|
return (float)level.ordinal();
|
|
|
|
})
|
2019-05-27 17:59:15 +02:00
|
|
|
.setFormatter(value -> I18n.translate(PONY_LEVEL + "." + PonyLevel.valueFor(value).name().toLowerCase())));
|
2018-05-13 18:43:49 +02:00
|
|
|
|
2019-05-27 17:59:15 +02:00
|
|
|
if (Screen.hasControlDown() && Screen.hasShiftDown()) {
|
2019-04-14 13:32:01 +02:00
|
|
|
host.addButton(new Label(LEFT, row += 30)).getStyle().setText("minelp.debug.scale");
|
|
|
|
host.addButton(new Slider(LEFT, row += 15, 0.1F, 3, config.getGlobalScaleFactor())
|
|
|
|
.onChange(v -> {
|
|
|
|
config.setGlobalScaleFactor(v);
|
|
|
|
return config.getGlobalScaleFactor();
|
|
|
|
})
|
2019-05-27 17:59:15 +02:00
|
|
|
.setFormatter(value -> I18n.translate("minelp.debug.scale.value", I18n.translate(describeCurrentScale(value)))));
|
2018-10-21 17:19:00 +02:00
|
|
|
}
|
|
|
|
|
2018-05-13 18:43:49 +02:00
|
|
|
row += 15;
|
2019-04-14 13:32:01 +02:00
|
|
|
host.addButton(new Label(LEFT, row += 15)).getStyle().setText(OPTIONS_PREFIX + "options");
|
2018-05-15 16:26:52 +02:00
|
|
|
for (PonySettings i : PonySettings.values()) {
|
2019-04-14 13:32:01 +02:00
|
|
|
host.addButton(new Toggle(LEFT, row += 20, i.get()))
|
|
|
|
.onChange(i)
|
|
|
|
.getStyle().setText(OPTIONS_PREFIX + i.name().toLowerCase());
|
2018-05-15 16:26:52 +02:00
|
|
|
}
|
2018-05-13 18:43:49 +02:00
|
|
|
|
2019-03-24 00:04:54 +01:00
|
|
|
if (host.mustScroll()) {
|
2018-05-13 18:43:49 +02:00
|
|
|
row += 15;
|
|
|
|
} else {
|
|
|
|
row = 32;
|
|
|
|
}
|
|
|
|
|
2019-04-14 13:32:01 +02:00
|
|
|
host.addButton(new Label(RIGHT, row += 15)).getStyle().setText(MOB_PREFIX + "title");
|
2019-05-28 10:26:26 +02:00
|
|
|
for (MobRenderers i : MobRenderers.registry) {
|
2019-04-14 13:32:01 +02:00
|
|
|
host.addButton(new Toggle(RIGHT, row += 20, i.get()))
|
|
|
|
.onChange(i)
|
|
|
|
.getStyle().setText(MOB_PREFIX + i.name().toLowerCase());
|
2018-05-15 16:26:52 +02:00
|
|
|
}
|
2018-05-13 18:43:49 +02:00
|
|
|
}
|
|
|
|
|
2018-10-23 09:59:29 +02:00
|
|
|
public String describeCurrentScale(float value) {
|
|
|
|
if (value >= 3) {
|
2019-05-27 17:59:15 +02:00
|
|
|
return I18n.translate("minelp.debug.scale.meg");
|
2018-10-23 09:59:29 +02:00
|
|
|
}
|
|
|
|
if (value == 2) {
|
2019-05-27 17:59:15 +02:00
|
|
|
return I18n.translate("minelp.debug.scale.max");
|
2018-10-23 09:59:29 +02:00
|
|
|
}
|
|
|
|
if (value == 1) {
|
2019-05-27 17:59:15 +02:00
|
|
|
return I18n.translate("minelp.debug.scale.mid");
|
2018-10-23 09:59:29 +02:00
|
|
|
}
|
|
|
|
if (value == 0.9F) {
|
2019-05-27 17:59:15 +02:00
|
|
|
return I18n.translate("minelp.debug.scale.sa");
|
2018-10-23 09:59:29 +02:00
|
|
|
}
|
|
|
|
if (value <= 0.1F) {
|
2019-05-27 17:59:15 +02:00
|
|
|
return I18n.translate("minelp.debug.scale.min");
|
2018-10-23 09:59:29 +02:00
|
|
|
}
|
|
|
|
return String.format("%f", value);
|
|
|
|
}
|
|
|
|
|
2018-05-13 18:43:49 +02:00
|
|
|
@Override
|
2019-04-26 13:04:31 +02:00
|
|
|
public boolean render(GuiHost host, int mouseX, int mouseY, float partialTicks) {
|
2019-05-27 17:59:15 +02:00
|
|
|
host.renderBackground();
|
2019-03-24 00:04:54 +01:00
|
|
|
return true;
|
2018-05-13 18:43:49 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2019-03-24 00:04:54 +01:00
|
|
|
public void onGuiClosed(GuiHost host) {
|
2019-03-23 18:48:20 +01:00
|
|
|
config.save();
|
2018-05-13 18:43:49 +02:00
|
|
|
}
|
|
|
|
|
2018-09-07 21:16:07 +02:00
|
|
|
@Override
|
2019-03-24 00:04:54 +01:00
|
|
|
public String getTitle() {
|
2018-05-13 18:43:49 +02:00
|
|
|
return OPTIONS_PREFIX + "title";
|
|
|
|
}
|
|
|
|
}
|