aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRuleConfigScreen.java
diff options
context:
space:
mode:
authorolim <bobq4582@gmail.com>2024-02-13 14:30:22 +0000
committerolim <bobq4582@gmail.com>2024-02-15 21:06:59 +0000
commitfdcc70bcc3f07fa2c51e2d1ec714294a36495fcd (patch)
tree24603c04c8bcfada092ff7674ce8391ea9a2372c /src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRuleConfigScreen.java
parent177656cbbb6dc0f25125371e6f600e053d8ca1bc (diff)
downloadSkyblocker-fdcc70bcc3f07fa2c51e2d1ec714294a36495fcd.tar.gz
Skyblocker-fdcc70bcc3f07fa2c51e2d1ec714294a36495fcd.tar.bz2
Skyblocker-fdcc70bcc3f07fa2c51e2d1ec714294a36495fcd.zip
start of implimentation
has config ui that dose not save the rules and the basic building blocks for the rest of the feature
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRuleConfigScreen.java')
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRuleConfigScreen.java214
1 files changed, 214 insertions, 0 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRuleConfigScreen.java b/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRuleConfigScreen.java
new file mode 100644
index 00000000..ef0f6d92
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRuleConfigScreen.java
@@ -0,0 +1,214 @@
+package de.hysky.skyblocker.skyblock.chat;
+
+import it.unimi.dsi.fastutil.ints.IntIntPair;
+import net.minecraft.client.MinecraftClient;
+import net.minecraft.client.gui.DrawContext;
+import net.minecraft.client.gui.screen.Screen;
+import net.minecraft.client.gui.widget.ButtonWidget;
+import net.minecraft.client.gui.widget.TextFieldWidget;
+import net.minecraft.text.Text;
+
+
+import java.awt.*;
+
+public class ChatRuleConfigScreen extends Screen {
+
+ private static final int SPACER_X = 5;
+ private static final int SPACER_Y = 25;
+
+ private ChatRule chatRule;
+
+ //widgets
+ private ButtonWidget finishButton;
+
+ private TextFieldWidget nameInput;
+ private TextFieldWidget filterInput;
+ private ButtonWidget partialMatchToggle;
+ private ButtonWidget regexToggle;
+ //todo location dropdown or somthig
+ //todo item selection thing
+
+ private ButtonWidget hideMessageToggle;
+ private ButtonWidget actionBarToggle;
+ private ButtonWidget announcementToggle;
+ private TextFieldWidget replaceMessageInput;
+ //todo custom sound thing
+
+ //textLocations
+ private IntIntPair nameLabelTextPos;
+ private IntIntPair inputsLabelTextPos;
+
+ private IntIntPair filterLabelTextPos;
+ private IntIntPair partialMatchTextPos;
+ private IntIntPair regexTextPos;
+
+ private IntIntPair validLocationLabelTextPos;
+
+ private IntIntPair validItemLabelTextPos;
+
+ private IntIntPair outputsLabelTextPos;
+
+ private IntIntPair hideMessageTextPos;
+ private IntIntPair actionBarTextPos;
+ private IntIntPair announcementTextPos;
+
+ private IntIntPair replaceMessageLabelTextPos;
+
+ private IntIntPair customSoundLabelTextPos;
+
+
+ private final Screen parent;
+
+
+
+ public ChatRuleConfigScreen(Screen parent, ChatRule chatRule) {
+ super(Text.translatable("text.autoconfig.skyblocker.option.messages.chatRules.screen.ruleScreen"));
+ this.chatRule = chatRule;
+ this.parent = parent;
+ }
+
+ @Override
+ protected void init() {
+ super.init();
+ if (client == null) return;
+
+ IntIntPair currentPos = IntIntPair.of(5,15);
+ int lineXOffset = 0;
+
+ nameLabelTextPos = currentPos;
+ lineXOffset = client.textRenderer.getWidth(Text.translatable("text.autoconfig.skyblocker.option.messages.chatRules.screen.ruleScreen.name")) + SPACER_X;
+ nameInput = new TextFieldWidget(MinecraftClient.getInstance().textRenderer, currentPos.leftInt() + lineXOffset, currentPos.rightInt(), 100, 20, Text.of(""));
+ nameInput.setText(chatRule.getName());
+ currentPos = IntIntPair.of(currentPos.leftInt(),currentPos.rightInt() + SPACER_Y);
+
+ inputsLabelTextPos = currentPos;
+ currentPos = IntIntPair.of(currentPos.leftInt() + 10 ,currentPos.rightInt() + SPACER_Y);
+
+ filterLabelTextPos = currentPos;
+ lineXOffset = client.textRenderer.getWidth(Text.translatable("text.autoconfig.skyblocker.option.messages.chatRules.screen.ruleScreen.filter")) + SPACER_X;
+ filterInput = new TextFieldWidget(MinecraftClient.getInstance().textRenderer, currentPos.leftInt() + lineXOffset, currentPos.rightInt(), 200, 20, Text.of(""));
+ filterInput.setText(chatRule.getFilter());
+ currentPos = IntIntPair.of(currentPos.leftInt(),currentPos.rightInt() + SPACER_Y);
+ lineXOffset = 0;
+
+ partialMatchTextPos = IntIntPair.of(currentPos.leftInt() + lineXOffset,currentPos.rightInt());
+ lineXOffset += client.textRenderer.getWidth(Text.translatable("text.autoconfig.skyblocker.option.messages.chatRules.screen.ruleScreen.partialMatch")) + SPACER_X;
+ partialMatchToggle = ButtonWidget.builder(enabledButtonText(chatRule.getPartialMatch()), a -> {
+ chatRule.setPartialMatch(!chatRule.getPartialMatch());
+ partialMatchToggle.setMessage(enabledButtonText(chatRule.getPartialMatch()));
+ })
+ .position(currentPos.leftInt() + lineXOffset, currentPos.rightInt())
+ .size(75,20)
+ .build();
+ lineXOffset += 75 + SPACER_X;
+ regexTextPos = IntIntPair.of(currentPos.leftInt() + lineXOffset,currentPos.rightInt());
+ lineXOffset += client.textRenderer.getWidth(Text.translatable("text.autoconfig.skyblocker.option.messages.chatRules.screen.ruleScreen.regex")) + SPACER_X;
+ regexToggle = ButtonWidget.builder(enabledButtonText(chatRule.getRegex()), a -> {
+ chatRule.setRegex(!chatRule.getRegex());
+ regexToggle.setMessage(enabledButtonText(chatRule.getRegex()));
+ })
+ .position(currentPos.leftInt() + lineXOffset, currentPos.rightInt())
+ .size(75,20)
+ .build();
+ currentPos = IntIntPair.of(currentPos.leftInt(),currentPos.rightInt() + SPACER_Y);
+
+
+ outputsLabelTextPos = IntIntPair.of(currentPos.leftInt() - 10,currentPos.rightInt());
+ currentPos = IntIntPair.of(currentPos.leftInt(),currentPos.rightInt() + SPACER_Y);
+
+ hideMessageTextPos = currentPos;
+ lineXOffset = client.textRenderer.getWidth(Text.translatable("text.autoconfig.skyblocker.option.messages.chatRules.screen.ruleScreen.hideMessage")) + SPACER_X;
+ hideMessageToggle = ButtonWidget.builder(enabledButtonText(chatRule.getHideMessage()), a -> {
+ chatRule.setHideMessage(!chatRule.getHideMessage());
+ hideMessageToggle.setMessage(enabledButtonText(chatRule.getHideMessage()));
+ })
+ .position(currentPos.leftInt() + lineXOffset, currentPos.rightInt())
+ .size(75,20)
+ .build();
+ lineXOffset += 75 + SPACER_X;
+ actionBarTextPos = IntIntPair.of(currentPos.leftInt() + lineXOffset,currentPos.rightInt());
+ lineXOffset += client.textRenderer.getWidth(Text.translatable("text.autoconfig.skyblocker.option.messages.chatRules.screen.ruleScreen.actionBar")) + SPACER_X;
+ actionBarToggle = ButtonWidget.builder(enabledButtonText(chatRule.getShowActionBar()), a -> {
+ chatRule.setShowActionBar(!chatRule.getShowActionBar());
+ actionBarToggle.setMessage(enabledButtonText(chatRule.getShowActionBar()));
+ })
+ .position(currentPos.leftInt() + lineXOffset, currentPos.rightInt())
+ .size(75,20)
+ .build();
+ lineXOffset = 0;
+ currentPos = IntIntPair.of(currentPos.leftInt(),currentPos.rightInt() + SPACER_Y);
+
+ announcementTextPos = IntIntPair.of(currentPos.leftInt() + lineXOffset,currentPos.rightInt());
+ lineXOffset += client.textRenderer.getWidth(Text.translatable("text.autoconfig.skyblocker.option.messages.chatRules.screen.ruleScreen.announcement")) + SPACER_X;
+ announcementToggle = ButtonWidget.builder(enabledButtonText(chatRule.getShowAnnouncement()), a -> {
+ chatRule.setShowAnnouncement(!chatRule.getShowAnnouncement());
+ announcementToggle.setMessage(enabledButtonText(chatRule.getShowAnnouncement()));
+ })
+ .position(currentPos.leftInt() + lineXOffset, currentPos.rightInt())
+ .size(75,20)
+ .build();
+ currentPos = IntIntPair.of(currentPos.leftInt(),currentPos.rightInt() + SPACER_Y);
+ replaceMessageLabelTextPos = currentPos;
+ lineXOffset = client.textRenderer.getWidth(Text.translatable("text.autoconfig.skyblocker.option.messages.chatRules.screen.ruleScreen.replace")) + SPACER_X;
+ replaceMessageInput = new TextFieldWidget(MinecraftClient.getInstance().textRenderer, currentPos.leftInt() + lineXOffset, currentPos.rightInt(), 200, 20, Text.of(""));
+ replaceMessageInput.setText(chatRule.getReplaceMessage());
+
+ finishButton = ButtonWidget.builder(Text.translatable("text.autoconfig.skyblocker.option.messages.chatRules.screen.ruleScreen.finish"), a -> {
+ close();
+ })
+ .position((int) (this.width * 0.66), this.height - SPACER_Y)
+ .size(75,20)
+ .build();
+
+
+
+ addDrawableChild(nameInput);
+ addDrawableChild(filterInput);
+ addDrawableChild(partialMatchToggle);
+ addDrawableChild(regexToggle);
+ addDrawableChild(hideMessageToggle);
+ addDrawableChild(actionBarToggle);
+ addDrawableChild(announcementToggle);
+ addDrawableChild(replaceMessageInput);
+ addDrawableChild(finishButton);
+
+
+ }
+
+ private Text enabledButtonText(boolean enabled) {
+ if (enabled){
+ return Text.translatable("text.autoconfig.skyblocker.option.messages.chatRules.screen.ruleScreen.true").withColor(Color.green.getRGB());
+ }else {
+ return Text.translatable("text.autoconfig.skyblocker.option.messages.chatRules.screen.ruleScreen.false").withColor(Color.red.getRGB());
+ }
+ }
+
+ @Override
+ public void render(DrawContext context, int mouseX, int mouseY, float delta) {
+ super.render(context, mouseX, mouseY, delta);
+ context.drawCenteredTextWithShadow(this.textRenderer, this.title, this.width / 2, 16, 0xFFFFFF);
+
+ //draw labels ands text
+ int yOffset = (SPACER_Y - this.textRenderer.fontHeight) / 2;
+ context.drawTextWithShadow(this.textRenderer,Text.translatable("text.autoconfig.skyblocker.option.messages.chatRules.screen.ruleScreen.inputs"), inputsLabelTextPos.leftInt(), inputsLabelTextPos.rightInt() + yOffset, 0xFFFFFF);
+ context.drawTextWithShadow(this.textRenderer,Text.translatable("text.autoconfig.skyblocker.option.messages.chatRules.screen.ruleScreen.name"), nameLabelTextPos.leftInt(), nameLabelTextPos.rightInt()+ yOffset, 0xFFFFFF);
+ context.drawTextWithShadow(this.textRenderer,Text.translatable("text.autoconfig.skyblocker.option.messages.chatRules.screen.ruleScreen.filter"), filterLabelTextPos.leftInt(), filterLabelTextPos.rightInt()+ yOffset, 0xFFFFFF);
+ context.drawTextWithShadow(this.textRenderer,Text.translatable("text.autoconfig.skyblocker.option.messages.chatRules.screen.ruleScreen.partialMatch"), partialMatchTextPos.leftInt(), partialMatchTextPos.rightInt()+ yOffset, 0xFFFFFF);
+ context.drawTextWithShadow(this.textRenderer,Text.translatable("text.autoconfig.skyblocker.option.messages.chatRules.screen.ruleScreen.regex"), regexTextPos.leftInt(), regexTextPos.rightInt()+ yOffset, 0xFFFFFF);
+ //context.drawTextWithShadow(this.textRenderer,"valid", validItemLabelTextPos.leftInt(), validItemLabelTextPos.rightInt(), 0xFFFFFF);
+ context.drawTextWithShadow(this.textRenderer,Text.translatable("text.autoconfig.skyblocker.option.messages.chatRules.screen.ruleScreen.outputs"), outputsLabelTextPos.leftInt(), outputsLabelTextPos.rightInt()+ yOffset, 0xFFFFFF);
+ context.drawTextWithShadow(this.textRenderer,Text.translatable("text.autoconfig.skyblocker.option.messages.chatRules.screen.ruleScreen.hideMessage"), hideMessageTextPos.leftInt(), hideMessageTextPos.rightInt()+ yOffset, 0xFFFFFF);
+ context.drawTextWithShadow(this.textRenderer,Text.translatable("text.autoconfig.skyblocker.option.messages.chatRules.screen.ruleScreen.actionBar"), actionBarTextPos.leftInt(), actionBarTextPos.rightInt()+ yOffset, 0xFFFFFF);
+ context.drawTextWithShadow(this.textRenderer,Text.translatable("text.autoconfig.skyblocker.option.messages.chatRules.screen.ruleScreen.announcement"), announcementTextPos.leftInt(), announcementTextPos.rightInt()+ yOffset, 0xFFFFFF);
+ context.drawTextWithShadow(this.textRenderer,Text.translatable("text.autoconfig.skyblocker.option.messages.chatRules.screen.ruleScreen.replace"), replaceMessageLabelTextPos.leftInt(), replaceMessageLabelTextPos.rightInt()+ yOffset, 0xFFFFFF);
+ }
+
+ @Override
+ public void close() {
+ //todo add checks to see if valid rule e.g. has name
+ //and if valid save a
+ if (client != null ) {
+ client.setScreen(parent);
+ }
+ }
+}