Converted clue scroll rewards to JSON weighted tables

This commit is contained in:
Ceikry
2022-07-09 08:13:48 +00:00
committed by Ryan
parent 670d59cce3
commit 14e3e6723b
5 changed files with 2347 additions and 578 deletions
@@ -0,0 +1,53 @@
package rs09.game.system.config
import org.json.simple.JSONArray
import org.json.simple.JSONObject
import org.json.simple.parser.JSONParser
import rs09.ServerConstants
import rs09.game.content.global.WeightBasedTable
import rs09.game.content.global.WeightedItem
import java.io.FileReader
class ClueRewardParser {
companion object {
@JvmStatic var easyTable = WeightBasedTable()
@JvmStatic var medTable = WeightBasedTable()
@JvmStatic var hardTable = WeightBasedTable()
@JvmStatic var rareTable = WeightBasedTable()
}
val parser = JSONParser()
var reader: FileReader? = null
fun load() {
reader = FileReader(ServerConstants.CONFIG_PATH + "clue_rewards.json")
val rawData = parser.parse(reader) as JSONObject
easyTable = parseClueTable(rawData["easy"] as JSONArray)
medTable = parseClueTable(rawData["medium"] as JSONArray)
hardTable = parseClueTable(rawData["hard"] as JSONArray)
rareTable = parseClueTable(rawData["rare"] as JSONArray)
}
private fun parseClueTable(data: JSONArray) : WeightBasedTable {
val table = WeightBasedTable()
for (element in data) {
val itemData = element as JSONObject
table.add(WeightedItem(
itemData["id"].toString().toInt(),
itemData["minAmount"].toString().toInt(),
itemData["maxAmount"].toString().toInt(),
itemData["weight"].toString().toDouble(),
false
))
}
return table
}
}
@@ -27,6 +27,7 @@ class ConfigParser : Commands {
MusicConfigLoader().load()
RangedConfigLoader().load()
CustomVarbitParser().load()
ClueRewardParser().load()
}
fun reloadConfigs(callback: () -> Unit) {