mirror of
https://gitlab.com/2009scape/rt4-client.git
synced 2025-12-10 10:20:44 -07:00
Remove KondoKit dependency on XPGlobes
This commit is contained in:
parent
a81b9b46b4
commit
6ec395bbcf
11 changed files with 173 additions and 90 deletions
66
plugin-playground/src/main/kotlin/KondoKit/XPTable.kt
Normal file
66
plugin-playground/src/main/kotlin/KondoKit/XPTable.kt
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
package KondoKit
|
||||
|
||||
import plugin.api.API
|
||||
import rt4.IntNode
|
||||
import rt4.Node
|
||||
|
||||
object XPTable {
|
||||
|
||||
const val MAX_LEVEL = 99
|
||||
const val INVALID_LEVEL = -1
|
||||
const val SKILLS_XP_TABLE = 716
|
||||
|
||||
private var xpTable: MutableList<Int> = mutableListOf()
|
||||
|
||||
// Lazily load the XP table from the API if it's empty
|
||||
private fun loadXpTable() {
|
||||
if (xpTable.isEmpty()) {
|
||||
// Add the initial entry for key 1 = 0
|
||||
xpTable.add(0)
|
||||
|
||||
// Fetch XP table from the API
|
||||
API.GetDataMap(SKILLS_XP_TABLE).table.nodes.forEach { bucket ->
|
||||
var currentNode: Node = bucket.nextNode
|
||||
while (currentNode !== bucket) {
|
||||
if (currentNode is IntNode) {
|
||||
xpTable.add(currentNode.value)
|
||||
}
|
||||
currentNode = currentNode.nextNode
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun getXpRequiredForLevel(level: Int): Int {
|
||||
loadXpTable()
|
||||
if (level in 1..xpTable.size) {
|
||||
return xpTable[level - 1]
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
fun getLevelForXp(xp: Int): Pair<Int, Int> {
|
||||
loadXpTable()
|
||||
var lowIndex = 0
|
||||
var highIndex = xpTable.size - 1
|
||||
|
||||
if (xp >= xpTable[highIndex]) {
|
||||
return Pair(MAX_LEVEL, xp - xpTable[highIndex]) // Level is max or above, return the highest level
|
||||
}
|
||||
|
||||
while (lowIndex <= highIndex) {
|
||||
val midIndex = (lowIndex + highIndex) / 2
|
||||
when {
|
||||
xp < xpTable[midIndex] -> highIndex = midIndex - 1
|
||||
xp >= xpTable[midIndex + 1] -> lowIndex = midIndex + 1
|
||||
else -> {
|
||||
val currentLevel = midIndex + 1
|
||||
val xpGained = xp - xpTable[midIndex]
|
||||
return Pair(currentLevel, xpGained)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return Pair(INVALID_LEVEL, 0) // If xp is below all defined levels
|
||||
}
|
||||
}
|
||||
|
|
@ -14,7 +14,6 @@ import KondoKit.plugin.Companion.kondoExposed_playerXPMultiplier
|
|||
import KondoKit.plugin.Companion.primaryColor
|
||||
import KondoKit.plugin.Companion.secondaryColor
|
||||
import KondoKit.plugin.StateManager.totalXPWidget
|
||||
import XPGlobesPlugin.XPTable
|
||||
import plugin.api.API
|
||||
import java.awt.*
|
||||
import java.io.BufferedReader
|
||||
|
|
|
|||
|
|
@ -22,7 +22,6 @@ import KondoKit.plugin.StateManager.initialXP
|
|||
import KondoKit.plugin.StateManager.totalXPWidget
|
||||
import KondoKit.plugin.StateManager.xpWidgets
|
||||
import plugin.Plugin
|
||||
import plugin.annotations.PluginMeta
|
||||
import plugin.api.*
|
||||
import plugin.api.API.*
|
||||
import plugin.api.FontColor.fromColor
|
||||
|
|
@ -39,6 +38,7 @@ import java.awt.event.MouseAdapter
|
|||
import java.awt.event.MouseEvent
|
||||
import javax.swing.*
|
||||
|
||||
|
||||
class plugin : Plugin() {
|
||||
companion object {
|
||||
val WIDGET_SIZE = Dimension(270, 55)
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
AUTHOR='downthecrop'
|
||||
DESCRIPTION='A plugin that adds a right-side panel with custom widgets and navigation.'
|
||||
VERSION=1.0
|
||||
VERSION=1.1
|
||||
Loading…
Add table
Add a link
Reference in a new issue