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

163 lines
5.5 KiB
Java
Raw Normal View History

2019-11-23 22:19:13 +01:00
package com.minelittlepony.client;
2019-06-01 21:40:06 +02:00
import net.minecraft.client.gui.screen.Screen;
2019-05-27 17:59:15 +02:00
import net.minecraft.client.resource.language.I18n;
2019-06-27 19:28:21 +02:00
import net.minecraft.text.LiteralText;
2019-11-30 12:12:46 +01:00
import com.minelittlepony.client.render.MobRenderers;
import com.minelittlepony.client.settings.ClientPonyConfig;
import com.minelittlepony.common.client.gui.GameGui;
import com.minelittlepony.common.client.gui.ScrollContainer;
import com.minelittlepony.common.client.gui.element.Button;
import com.minelittlepony.common.client.gui.element.EnumSlider;
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.common.util.settings.Setting;
import com.minelittlepony.settings.PonyLevel;
import javax.annotation.Nullable;
/**
* In-Game options menu.
*
*/
2019-11-23 22:19:13 +01:00
class GuiPonySettings extends GameGui {
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 ClientPonyConfig config;
private final ScrollContainer content = new ScrollContainer();
private final boolean hiddenOptions;
public GuiPonySettings(@Nullable Screen parent) {
super(new LiteralText(OPTIONS_PREFIX + "title"), parent);
config = (ClientPonyConfig)MineLittlePony.getInstance().getConfig();
content.margin.top = 30;
content.margin.bottom = 30;
content.padding.top = 10;
content.padding.right = 10;
content.padding.bottom = 20;
hiddenOptions = Screen.hasControlDown() && Screen.hasShiftDown();
}
@Override
protected void init() {
2019-06-29 20:10:18 +02:00
content.init(this::rebuildContent);
}
@SuppressWarnings("unchecked")
2019-06-29 20:10:18 +02:00
private void rebuildContent() {
2019-06-01 20:48:09 +02:00
content.padding.left = 10;
int LEFT = content.width / 2 - 210;
int RIGHT = content.width / 2 + 10;
if (LEFT < 0) {
LEFT = content.width / 2 - 100;
RIGHT = LEFT;
}
int row = 0;
children().add(content);
2019-06-01 20:48:09 +02:00
addButton(new Label(width / 2, 5).setCentered()).getStyle().setText(getTitle().getString());
addButton(new Button(width / 2 - 100, height - 25))
2019-07-22 09:54:54 +02:00
.onClick(sender -> finish())
.getStyle()
.setText("gui.done");
2019-06-01 20:48:09 +02:00
content.addButton(new Label(LEFT, row)).getStyle().setText(PONY_LEVEL);
2019-07-11 19:20:13 +02:00
content.addButton(new Slider(LEFT, row += 20, 0, 2, config.ponyLevel.get().ordinal())
2019-04-14 13:32:01 +02:00
.onChange(v -> {
PonyLevel level = PonyLevel.valueFor(v);
2019-07-11 19:20:13 +02:00
config.ponyLevel.set(level);
2019-04-14 13:32:01 +02:00
return (float)level.ordinal();
})
2019-05-27 17:59:15 +02:00
.setFormatter(value -> I18n.translate(PONY_LEVEL + "." + PonyLevel.valueFor(value).name().toLowerCase())));
if (hiddenOptions) {
content.addButton(new Label(LEFT, row += 30)).getStyle().setText("minelp.debug.scale");
content.addButton(new Slider(LEFT, row += 15, 0.1F, 3, config.getGlobalScaleFactor())
.onChange(config::setGlobalScaleFactor)
.setFormatter(value -> describeCurrentScale(value)));
content.addButton(new Label(LEFT, row += 30)).getStyle().setText("minelp.debug.size");
2019-07-11 19:20:13 +02:00
content.addButton(new EnumSlider<>(LEFT, row += 15, config.sizeOverride.get())
.onChange(config.sizeOverride::set));
2018-10-21 17:19:00 +02:00
}
2019-06-01 20:48:09 +02:00
row += 20;
content.addButton(new Label(LEFT, row)).getStyle().setText(OPTIONS_PREFIX + "options");
for (Setting<?> i : MineLittlePony.getInstance().getConfig().getByCategory("settings")) {
content.addButton(new Toggle(LEFT, row += 20, ((Setting<Boolean>)i).get()))
.onChange((Setting<Boolean>)i)
2019-04-14 13:32:01 +02:00
.getStyle().setText(OPTIONS_PREFIX + i.name().toLowerCase());
}
content.addButton(new Label(LEFT, row += 20)).getStyle().setText(OPTIONS_PREFIX + "button");
2019-07-11 19:20:13 +02:00
content.addButton(new EnumSlider<>(LEFT, row += 20, config.horseButton.get())
.onChange(config.horseButton::set));
if (RIGHT != LEFT) {
row = 0;
} else {
row += 15;
}
2019-06-01 20:48:09 +02:00
content.addButton(new Label(RIGHT, row)).getStyle().setText(MOB_PREFIX + "title");
2019-11-30 12:12:46 +01:00
for (MobRenderers i : MobRenderers.REGISTRY.values()) {
content.addButton(new Toggle(RIGHT, row += 20, i.get()))
.onChange(i::set)
2019-11-30 12:12:46 +01:00
.getStyle().setText(MOB_PREFIX + i.name);
}
}
2018-10-23 09:59:29 +02:00
public String describeCurrentScale(float value) {
if (value >= 3) {
return "minelp.debug.scale.meg";
2018-10-23 09:59:29 +02:00
}
if (value == 2) {
return "minelp.debug.scale.max";
2018-10-23 09:59:29 +02:00
}
if (value == 1) {
return "minelp.debug.scale.mid";
2018-10-23 09:59:29 +02:00
}
if (value == 0.9F) {
return "minelp.debug.scale.sa";
2018-10-23 09:59:29 +02:00
}
if (value <= 0.1F) {
return "minelp.debug.scale.min";
2018-10-23 09:59:29 +02:00
}
value *= 100F;
value = Math.round(value);
value /= 100F;
return I18n.translate("minelp.debug.scale.value", value);
2018-10-23 09:59:29 +02:00
}
@Override
public void render(int mouseX, int mouseY, float partialTicks) {
renderBackground();
super.render(mouseX, mouseY, partialTicks);
content.render(mouseX, mouseY, partialTicks);
}
@Override
public void removed() {
config.save();
}
}