diff options
author | Sychic <47618543+Sychic@users.noreply.github.com> | 2021-10-11 13:06:00 -0400 |
---|---|---|
committer | Sychic <47618543+Sychic@users.noreply.github.com> | 2021-10-11 13:06:00 -0400 |
commit | 97ac2f94a2587a9a391b2206913db577b31e3054 (patch) | |
tree | e41a813998b0df884b9bda9236f7a73380017931 | |
parent | a813d82fc3bd476ac547e47febbecae6ad4b159e (diff) | |
download | SkytilsMod-97ac2f94a2587a9a391b2206913db577b31e3054.tar.gz SkytilsMod-97ac2f94a2587a9a391b2206913db577b31e3054.tar.bz2 SkytilsMod-97ac2f94a2587a9a391b2206913db577b31e3054.zip |
Add waypoint colors
3 files changed, 42 insertions, 14 deletions
diff --git a/src/main/kotlin/skytils/skytilsmod/features/impl/handlers/Waypoints.kt b/src/main/kotlin/skytils/skytilsmod/features/impl/handlers/Waypoints.kt index b2ebe2fd..ad4ac90a 100644 --- a/src/main/kotlin/skytils/skytilsmod/features/impl/handlers/Waypoints.kt +++ b/src/main/kotlin/skytils/skytilsmod/features/impl/handlers/Waypoints.kt @@ -61,7 +61,8 @@ class Waypoints : PersistentSave(File(Skytils.modDir, "waypoints.json")) { SkyblockIsland.values().find { it.mode == e["island"].asString } ?: return@mapNotNullTo null, - e["enabled"].asBoolean + e["enabled"].asBoolean, + e["color"]?.let { Color(it.asInt) } ?: Color.RED ) } } @@ -76,6 +77,7 @@ class Waypoints : PersistentSave(File(Skytils.modDir, "waypoints.json")) { addProperty("z", it.pos.z) addProperty("island", it.island.mode) addProperty("enabled", it.enabled) + addProperty("color", it.color.rgb) }) } gson.toJson(arr, writer) @@ -91,7 +93,13 @@ class Waypoints : PersistentSave(File(Skytils.modDir, "waypoints.json")) { } } -data class Waypoint(var name: String, var pos: BlockPos, var island: SkyblockIsland, var enabled: Boolean) { +data class Waypoint( + var name: String, + var pos: BlockPos, + var island: SkyblockIsland, + var enabled: Boolean, + val color: Color +) { fun draw(partialTicks: Float) { val (viewerX, viewerY, viewerZ) = RenderUtil.getViewerPos(partialTicks) val x = pos.x - viewerX @@ -99,7 +107,7 @@ data class Waypoint(var name: String, var pos: BlockPos, var island: SkyblockIsl val z = pos.z - viewerZ RenderUtil.drawFilledBoundingBox( AxisAlignedBB(x, y, z, x + 1, y + 1, z + 1), - Color.RED, + color, 0.5f ) GlStateManager.disableDepth() diff --git a/src/main/kotlin/skytils/skytilsmod/gui/WaypointShareGui.kt b/src/main/kotlin/skytils/skytilsmod/gui/WaypointShareGui.kt index 9aac12e5..944f0de8 100644 --- a/src/main/kotlin/skytils/skytilsmod/gui/WaypointShareGui.kt +++ b/src/main/kotlin/skytils/skytilsmod/gui/WaypointShareGui.kt @@ -154,7 +154,8 @@ class WaypointShareGui : WindowScreen(newGuiScale = 2) { SkyblockIsland.values().find { it.mode == e["island"].asString } ?: return@mapNotNull null, - e["enabled"].asBoolean + e["enabled"].asBoolean, + e["color"]?.let{Color(it.asInt)} ?: Color.RED ) }.onFailure { it.printStackTrace() @@ -187,6 +188,7 @@ class WaypointShareGui : WindowScreen(newGuiScale = 2) { addProperty("z", it.z.getText().toInt()) addProperty("island", island.mode) addProperty("enabled", true) + addProperty("color", Color.RED.rgb) }) }.onFailure { it.printStackTrace() diff --git a/src/main/kotlin/skytils/skytilsmod/gui/WaypointsGui.kt b/src/main/kotlin/skytils/skytilsmod/gui/WaypointsGui.kt index 121fba3b..d0b1acd3 100644 --- a/src/main/kotlin/skytils/skytilsmod/gui/WaypointsGui.kt +++ b/src/main/kotlin/skytils/skytilsmod/gui/WaypointsGui.kt @@ -23,13 +23,11 @@ import gg.essential.elementa.components.ScrollComponent import gg.essential.elementa.components.UIContainer import gg.essential.elementa.components.UIText import gg.essential.elementa.components.input.UITextInput -import gg.essential.elementa.constraints.CenterConstraint -import gg.essential.elementa.constraints.ChildBasedSizeConstraint -import gg.essential.elementa.constraints.RelativeConstraint -import gg.essential.elementa.constraints.SiblingConstraint +import gg.essential.elementa.constraints.* import gg.essential.elementa.dsl.* import gg.essential.elementa.effects.OutlineEffect import gg.essential.vigilance.gui.settings.CheckboxComponent +import gg.essential.vigilance.gui.settings.ColorComponent import gg.essential.vigilance.gui.settings.DropDown import gg.essential.vigilance.utils.onLeftClick import net.minecraft.util.BlockPos @@ -133,7 +131,8 @@ class WaypointsGui : WindowScreen(newGuiScale = 2), ReopenableGUI { entry.z.getText().toInt() ), current, - entry.enabled.checked + entry.enabled.checked, + entry.color ) ) }.onFailure { @@ -149,17 +148,22 @@ class WaypointsGui : WindowScreen(newGuiScale = 2), ReopenableGUI { Waypoints.waypoints.filter { it.island == island }.sortedBy { "${it.name} ${it.pos} ${it.enabled}" }.forEach { - addNewWaypoint(it.name, it.pos, it.enabled) + addNewWaypoint(it.name, it.pos, it.enabled, it.color) } } } - private fun addNewWaypoint(name: String = "", pos: BlockPos = mc.thePlayer.position, enabled: Boolean = true) { + private fun addNewWaypoint( + name: String = "", + pos: BlockPos = mc.thePlayer.position, + enabled: Boolean = true, + color: Color = Color.RED + ) { val container = UIContainer().childOf(scrollComponent).constrain { x = CenterConstraint() y = SiblingConstraint(5f) width = 80.percent() - height = 9.5.percent() + height = 30.percent() }.effect(OutlineEffect(Color(0, 243, 255), 1f)) val enabled = CheckboxComponent(enabled).childOf(container).constrain { @@ -216,6 +220,14 @@ class WaypointsGui : WindowScreen(newGuiScale = 2), ReopenableGUI { } } + val colorComponent = ColorComponent(color, false).childOf(container).constrain { + x = SiblingConstraint(5f) + y = CenterConstraint() + width = AspectConstraint() + }.also { + it.setColor(color) + } + SimpleButton("Remove").childOf(container).constrain { x = 85.percent() y = CenterConstraint() @@ -225,7 +237,12 @@ class WaypointsGui : WindowScreen(newGuiScale = 2), ReopenableGUI { entries.remove(container) } - entries[container] = Entry(enabled, nameComponent, xComponent, yComponent, zComponent) + entries[container] = + Entry(enabled, nameComponent, xComponent, yComponent, zComponent, colorComponent.getColor()).also { entry -> + colorComponent.onValueChange { newColor -> + entry.color = newColor as Color + } + } } override fun onScreenClose() { @@ -238,6 +255,7 @@ class WaypointsGui : WindowScreen(newGuiScale = 2), ReopenableGUI { val name: UITextInput, val x: UITextInput, val y: UITextInput, - val z: UITextInput + val z: UITextInput, + var color: Color ) }
\ No newline at end of file |