diff --git a/src/main/java/org/saturnclient/modules/ModDimensions.java b/src/main/java/org/saturnclient/modules/ModDimensions.java index 2db4d34..b0bdb4f 100644 --- a/src/main/java/org/saturnclient/modules/ModDimensions.java +++ b/src/main/java/org/saturnclient/modules/ModDimensions.java @@ -13,6 +13,7 @@ public class ModDimensions { public Property fgColor = Property.color(0xFFffffff); public Property radius = Property.integer(0); public Property font = Property.font(0); + public boolean renderBackground = true; public int width = 0; public int height = 0; @@ -29,6 +30,8 @@ public class ModDimensions { )).named("In-Game Display"); } + public ModDimensions() {} + public ModDimensions(int width, int height) { this.width = width; this.height = height; diff --git a/src/main/java/org/saturnclient/modules/ModManager.java b/src/main/java/org/saturnclient/modules/ModManager.java index 6ac6e2a..c1fd76a 100644 --- a/src/main/java/org/saturnclient/modules/ModManager.java +++ b/src/main/java/org/saturnclient/modules/ModManager.java @@ -19,7 +19,8 @@ public class ModManager { new Fps(), new PotionDisplay(), new Coordinates(), - new Freelook() + new Freelook(), + new Keystrokes() }; public static void init() { @@ -49,7 +50,9 @@ public class ModManager { renderScope.matrices.scale(dim.scale.value, dim.scale.value, 1.0f); - renderScope.drawRoundedRectangle(0, 0, dim.width, dim.height, dim.radius.value, dim.bgColor.value); + if (dim.renderBackground) { + renderScope.drawRoundedRectangle(0, 0, dim.width, dim.height, dim.radius.value, dim.bgColor.value); + } renderScope.setRenderLayer(RenderLayer::getGuiTextured); diff --git a/src/main/java/org/saturnclient/modules/mods/Keystrokes.java b/src/main/java/org/saturnclient/modules/mods/Keystrokes.java new file mode 100644 index 0000000..a344ff2 --- /dev/null +++ b/src/main/java/org/saturnclient/modules/mods/Keystrokes.java @@ -0,0 +1,77 @@ +package org.saturnclient.modules.mods; + +import org.saturnclient.modules.Module; +import org.saturnclient.modules.HudMod; +import org.saturnclient.modules.ModDimensions; +import org.saturnclient.saturnclient.SaturnClient; +import org.saturnclient.saturnclient.config.Property; +import org.saturnclient.ui2.RenderScope; +import org.saturnclient.modules.ModuleDetails; + +public class Keystrokes extends Module implements HudMod { + public static Property enabled = Property.bool(false); + public static ModDimensions dimensions = new ModDimensions(78, 52); + private boolean w = false; + private boolean a = false; + private boolean s = false; + private boolean d = false; + + private static Property clickBg = Property.color(0xFFCCCCCC); + private static Property clickFg = Property.color(0xFFFFFFFF); + + public Keystrokes() { + super(new ModuleDetails("Keystrokes", "keystrokes") + .description("Displays the keystrokes for movement") + .version("v0.1.0") + .tags("Utility"), + + enabled.named("Enabled"), + dimensions.prop()); + + dimensions.renderBackground = false; + } + + @Override + public void tick() { + w = SaturnClient.client.options.forwardKey.isPressed(); + a = SaturnClient.client.options.leftKey.isPressed(); + s = SaturnClient.client.options.backKey.isPressed(); + d = SaturnClient.client.options.rightKey.isPressed(); + } + + @Override + public void renderHud(RenderScope scope) { + renderKey(scope, w, 'W', (dimensions.width - 24) / 2, 0); + renderKey(scope, a, 'A', 0, dimensions.height - 24); + renderKey(scope, s, 'S', (dimensions.width - 24) / 2, dimensions.height - 24); + renderKey(scope, d, 'D', dimensions.width - 24, dimensions.height - 24); + } + + @Override + public void renderDummy(RenderScope scope) { + renderKey(scope, false, 'W', (dimensions.width - 24) / 2, 0); + renderKey(scope, false, 'A', 0, dimensions.height - 24); + renderKey(scope, false, 'S', (dimensions.width - 24) / 2, dimensions.height - 24); + renderKey(scope, false, 'D', dimensions.width - 24, dimensions.height - 24); + } + + private void renderKey(RenderScope scope, boolean isPressed, char c, int x, int y) { + scope.drawRoundedRectangle(x, y, 24, 24, dimensions.radius.value, isPressed ? clickBg.value : dimensions.bgColor.value); + scope.drawText(0.6f, String.valueOf(c), x + 9, y + 7, dimensions.font.value, isPressed ? clickFg.value : dimensions.fgColor.value); + } + + @Override + public boolean isEnabled() { + return enabled.value; + } + + @Override + public ModDimensions getDimensions() { + return dimensions; + } + + @Override + public void setEnabled(boolean e) { + enabled.value = e; + } +} \ No newline at end of file diff --git a/src/main/java/org/saturnclient/modules/mods/PotionDisplay.java b/src/main/java/org/saturnclient/modules/mods/PotionDisplay.java index 28a1b93..0097a2d 100644 --- a/src/main/java/org/saturnclient/modules/mods/PotionDisplay.java +++ b/src/main/java/org/saturnclient/modules/mods/PotionDisplay.java @@ -50,7 +50,7 @@ public class PotionDisplay extends Module implements HudMod { RegistryEntry registryEntry = effect.getEffectType(); Sprite sprite = statusEffectSpriteManager.getSprite(registryEntry); scope.drawSpriteStretched(sprite, 0, 18 * row, 16, 16); - scope.drawText(0.5f, getDurationAsString(effect), 20, 18 * row + 3, dimensions.font.value, -1); + scope.drawText(0.5f, getDurationAsString(effect), 18, 18 * row + 3, dimensions.font.value, -1); row++; } } diff --git a/src/main/resources/assets/saturnclient/textures/gui/mod/keystrokes.png b/src/main/resources/assets/saturnclient/textures/gui/mod/keystrokes.png new file mode 100644 index 0000000..da20fcd Binary files /dev/null and b/src/main/resources/assets/saturnclient/textures/gui/mod/keystrokes.png differ