aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/utils/waypoint
diff options
context:
space:
mode:
authorKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2023-10-23 14:51:57 -0400
committerKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2023-10-28 00:51:23 -0400
commite00501cda9bec3da79896f098279c2f2a0f1a926 (patch)
treea141ae051f92203d60607c903806f1560d3fd82e /src/main/java/de/hysky/skyblocker/utils/waypoint
parent9edc4849a387aef3ac53d43573cfe53f5e06a5eb (diff)
downloadSkyblocker-e00501cda9bec3da79896f098279c2f2a0f1a926.tar.gz
Skyblocker-e00501cda9bec3da79896f098279c2f2a0f1a926.tar.bz2
Skyblocker-e00501cda9bec3da79896f098279c2f2a0f1a926.zip
Abstract Waypoint
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/utils/waypoint')
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/waypoint/Waypoint.java95
1 files changed, 95 insertions, 0 deletions
diff --git a/src/main/java/de/hysky/skyblocker/utils/waypoint/Waypoint.java b/src/main/java/de/hysky/skyblocker/utils/waypoint/Waypoint.java
new file mode 100644
index 00000000..2cb37e6b
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/utils/waypoint/Waypoint.java
@@ -0,0 +1,95 @@
+package de.hysky.skyblocker.utils.waypoint;
+
+import de.hysky.skyblocker.utils.render.RenderHelper;
+import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.util.math.Box;
+
+import java.util.function.Supplier;
+
+public class Waypoint {
+ protected static final float DEFAULT_HIGHLIGHT_ALPHA = 0.5f;
+ protected static final float DEFAULT_LINE_WIDTH = 5f;
+ protected final BlockPos pos;
+ protected final Box box;
+ protected final Supplier<Type> typeSupplier;
+ protected final float[] colorComponents;
+ protected final float alpha;
+ protected final float lineWidth;
+ protected final boolean throughWalls;
+ protected boolean shouldRender;
+
+ protected Waypoint(BlockPos pos, Supplier<Type> typeSupplier, float[] colorComponents) {
+ this(pos, typeSupplier, colorComponents, DEFAULT_HIGHLIGHT_ALPHA);
+ }
+
+ protected Waypoint(BlockPos pos, Supplier<Type> typeSupplier, float[] colorComponents, float alpha) {
+ this(pos, typeSupplier, colorComponents, alpha, DEFAULT_LINE_WIDTH);
+ }
+
+ protected Waypoint(BlockPos pos, Supplier<Type> typeSupplier, float[] colorComponents, float alpha, float lineWidth) {
+ this(pos, typeSupplier, colorComponents, alpha, lineWidth, true);
+ }
+
+ protected Waypoint(BlockPos pos, Supplier<Type> typeSupplier, float[] colorComponents, float alpha, float lineWidth, boolean throughWalls) {
+ this(pos, typeSupplier, colorComponents, alpha, lineWidth, throughWalls, true);
+ }
+
+ protected Waypoint(BlockPos pos, Supplier<Type> typeSupplier, float[] colorComponents, float alpha, float lineWidth, boolean throughWalls, boolean shouldRender) {
+ this.pos = pos;
+ this.box = new Box(pos);
+ this.typeSupplier = typeSupplier;
+ this.colorComponents = colorComponents;
+ this.alpha = alpha;
+ this.lineWidth = lineWidth;
+ this.throughWalls = throughWalls;
+ this.shouldRender = shouldRender;
+ }
+
+ protected boolean shouldRender() {
+ return shouldRender;
+ }
+
+ public void setFound() {
+ this.shouldRender = false;
+ }
+
+ public void setMissing() {
+ this.shouldRender = true;
+ }
+
+ protected void render(WorldRenderContext context) {
+ switch (typeSupplier.get()) {
+ case WAYPOINT -> RenderHelper.renderFilledThroughWallsWithBeaconBeam(context, pos, colorComponents, alpha);
+ case OUTLINED_WAYPOINT -> {
+ RenderHelper.renderFilledThroughWallsWithBeaconBeam(context, pos, colorComponents, alpha);
+ RenderHelper.renderOutline(context, box, colorComponents, lineWidth, throughWalls);
+ }
+ case HIGHLIGHT -> RenderHelper.renderFilledThroughWalls(context, pos, colorComponents, alpha);
+ case OUTLINED_HIGHLIGHT -> {
+ RenderHelper.renderFilledThroughWalls(context, pos, colorComponents, alpha);
+ RenderHelper.renderOutline(context, box, colorComponents, lineWidth, throughWalls);
+ }
+ case OUTLINE -> RenderHelper.renderOutline(context, box, colorComponents, lineWidth, throughWalls);
+ }
+ }
+
+ public enum Type {
+ WAYPOINT,
+ OUTLINED_WAYPOINT,
+ HIGHLIGHT,
+ OUTLINED_HIGHLIGHT,
+ OUTLINE;
+
+ @Override
+ public String toString() {
+ return switch (this) {
+ case WAYPOINT -> "Waypoint";
+ case OUTLINED_WAYPOINT -> "Outlined Waypoint";
+ case HIGHLIGHT -> "Highlight";
+ case OUTLINED_HIGHLIGHT -> "Outlined Highlight";
+ case OUTLINE -> "Outline";
+ };
+ }
+ }
+}