From 5e01624dcc315a2bf7665fc808b1113fa4c9e0d8 Mon Sep 17 00:00:00 2001 From: hannibal2 <24389977+hannibal002@users.noreply.github.com> Date: Fri, 13 Sep 2024 20:23:57 +0200 Subject: Feature: Graphs Pathfinding (#2468) Co-authored-by: hannibal2 <24389977+hannibal00212@users.noreply.github.com> --- .../java/at/hannibal2/skyhanni/data/model/Graph.kt | 28 ++++++++++++---------- 1 file changed, 16 insertions(+), 12 deletions(-) (limited to 'src/main/java/at/hannibal2/skyhanni/data/model') diff --git a/src/main/java/at/hannibal2/skyhanni/data/model/Graph.kt b/src/main/java/at/hannibal2/skyhanni/data/model/Graph.kt index 21440197d..8c63be891 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/model/Graph.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/model/Graph.kt @@ -12,29 +12,29 @@ import java.util.PriorityQueue @JvmInline value class Graph( - @Expose val graph: List, + @Expose val nodes: List, ) : List { override val size - get() = graph.size + get() = nodes.size - override fun contains(element: GraphNode) = graph.contains(element) + override fun contains(element: GraphNode) = nodes.contains(element) - override fun containsAll(elements: Collection) = graph.containsAll(elements) + override fun containsAll(elements: Collection) = nodes.containsAll(elements) - override fun get(index: Int) = graph.get(index) + override fun get(index: Int) = nodes.get(index) - override fun isEmpty() = graph.isEmpty() + override fun isEmpty() = nodes.isEmpty() - override fun indexOf(element: GraphNode) = graph.indexOf(element) + override fun indexOf(element: GraphNode) = nodes.indexOf(element) - override fun iterator(): Iterator = graph.iterator() - override fun listIterator() = graph.listIterator() + override fun iterator(): Iterator = nodes.iterator() + override fun listIterator() = nodes.listIterator() - override fun listIterator(index: Int) = graph.listIterator(index) + override fun listIterator(index: Int) = nodes.listIterator(index) - override fun subList(fromIndex: Int, toIndex: Int) = graph.subList(fromIndex, toIndex) + override fun subList(fromIndex: Int, toIndex: Int) = nodes.subList(fromIndex, toIndex) - override fun lastIndexOf(element: GraphNode) = graph.lastIndexOf(element) + override fun lastIndexOf(element: GraphNode) = nodes.lastIndexOf(element) companion object { val gson = GsonBuilder().setPrettyPrinting().registerTypeAdapter( @@ -142,6 +142,10 @@ value class Graph( // The node object that gets parsed from/to json class GraphNode(val id: Int, val position: LorenzVec, val name: String? = null, val tagNames: List? = null) { + val tags: List by lazy { + tagNames?.mapNotNull { GraphNodeTag.byId(it) } ?: emptyList() + } + /** Keys are the neighbours and value the edge weight (e.g. Distance) */ lateinit var neighbours: Map -- cgit