MineLittlePony/src/main/java/com/minelittlepony/client/gui/GuiPonySettings.java

122 lines
4.2 KiB
Java
Raw Normal View History

2019-03-23 20:49:34 +01:00
package com.minelittlepony.client.gui;
2019-05-27 17:59:15 +02:00
import net.minecraft.client.gui.Screen;
import net.minecraft.client.resource.language.I18n;
import com.minelittlepony.MineLittlePony;
2019-03-23 20:49:34 +01:00
import com.minelittlepony.client.render.entities.MobRenderers;
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;
import com.minelittlepony.settings.PonyConfig;
import com.minelittlepony.settings.PonyLevel;
2019-05-28 10:26:26 +02:00
import com.minelittlepony.settings.PonySettings;
/**
* In-Game options menu.
*
*/
public class GuiPonySettings implements IGuiGuest {
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();
}
@Override
public void initGui(GuiHost host) {
final int LEFT = host.width / 10;
final int RIGHT = host.mustScroll() ? LEFT : host.width - host.width / 3 - 16;
int row = host.mustScroll() ? 0 : 32;
if (!host.mustScroll()) {
2019-04-14 13:32:01 +02:00
host.addButton(new Label(host.width / 2, 12).setCentered()).getStyle().setText(getTitle());
}
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())));
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
}
row += 15;
2019-04-14 13:32:01 +02:00
host.addButton(new Label(LEFT, row += 15)).getStyle().setText(OPTIONS_PREFIX + "options");
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());
}
if (host.mustScroll()) {
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-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);
}
@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();
return true;
}
@Override
public void onGuiClosed(GuiHost host) {
config.save();
}
2018-09-07 21:16:07 +02:00
@Override
public String getTitle() {
return OPTIONS_PREFIX + "title";
}
}