diff options
author | olim <bobq4582@gmail.com> | 2024-02-13 14:30:22 +0000 |
---|---|---|
committer | olim <bobq4582@gmail.com> | 2024-02-15 11:10:24 +0000 |
commit | 2a9fae47611cec59776e96826db8a6305978e0b1 (patch) | |
tree | 6a8bcd7c7a50da35ecb87874707b83f34b4de3ad /src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRuleConfigScreen.java | |
parent | 41d02daf5f53a761043ae76f5be484f94ceb0128 (diff) | |
download | Skyblocker-2a9fae47611cec59776e96826db8a6305978e0b1.tar.gz Skyblocker-2a9fae47611cec59776e96826db8a6305978e0b1.tar.bz2 Skyblocker-2a9fae47611cec59776e96826db8a6305978e0b1.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.java | 214 |
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); + } + } +} |