mirror of
https://gitlab.com/2009scape/09launcher.git
synced 2025-12-09 16:45:54 -07:00
154 lines
7.2 KiB
Kotlin
154 lines
7.2 KiB
Kotlin
package settingseditor
|
|
|
|
import org.json.simple.JSONObject
|
|
import org.json.simple.parser.JSONParser
|
|
import java.io.File
|
|
import java.io.FileReader
|
|
import java.io.FileWriter
|
|
|
|
object Json {
|
|
|
|
val HOME = System.getProperty("user.home")
|
|
val CONF = HOME + File.separator + "config.json"
|
|
var data: JSONObject = JSONObject()
|
|
|
|
fun save(){
|
|
val customization = data["customization"] as JSONObject
|
|
val xpDrops = customization["xpdrops"] as JSONObject
|
|
val slayer = customization["slayer"] as JSONObject
|
|
val rcm = customization["right_click_menu"] as JSONObject
|
|
val styles = rcm["styles"] as JSONObject
|
|
val launcher = customization.getOrPut("launcher") { JSONObject() } as JSONObject
|
|
|
|
val background = rcm["background"] as JSONObject
|
|
val title_bar = rcm["title_bar"] as JSONObject
|
|
val border = rcm["border"] as JSONObject
|
|
val debug = data["debug"] as JSONObject
|
|
|
|
background["color"] = SettingsWindow.bgColorField.text
|
|
background["opacity"] = SettingsWindow.bgOpacityField.text
|
|
title_bar["color"] = SettingsWindow.titleColorField.text
|
|
title_bar["opacity"] = SettingsWindow.titleOpacityField.text
|
|
title_bar["font_color"] = SettingsWindow.titleFontColor.text
|
|
border["color"] = SettingsWindow.borderColor.text
|
|
border["opacity"] = SettingsWindow.borderOpacity.text
|
|
styles["rs3border"] = SettingsWindow.rs3Border.isToggled
|
|
debug["item_debug"] = SettingsWindow.itemDebugCheckbox.isToggled
|
|
debug["object_debug"] = SettingsWindow.objectDebugCheckbox.isToggled
|
|
debug["npc_debug"] = SettingsWindow.npcDebugCheckbox.isToggled
|
|
xpDrops["enabled"] = SettingsWindow.xpDropsEnabled.isToggled
|
|
xpDrops["drop_mode"] = SettingsWindow.xpDropMode.selectedIndex
|
|
xpDrops["track_mode"] = SettingsWindow.xpTrackMode.selectedIndex
|
|
slayer["enabled"] = SettingsWindow.slayerEnabled.isToggled
|
|
slayer["color"] = SettingsWindow.slayerColor.text
|
|
slayer["opacity"] = SettingsWindow.slayerOpacity.text
|
|
customization["login_theme"] = SettingsWindow.loginTheme.text
|
|
customization["december_snow"] = SettingsWindow.enableSnowDecember.isToggled
|
|
rcm["left_click_attack"] = SettingsWindow.enableLeftClickAttack.isToggled
|
|
launcher["closeOnClientLaunch"] = SettingsWindow.closeLauncherOnLaunch.isToggled
|
|
launcher["notifyUpdates"] = Settings.CHECK_FOR_UPDATES
|
|
customization["minimap_filter"] = SettingsWindow.minimapFilter.isToggled
|
|
customization["aa_samples"] = when(SettingsWindow.aaSamples.selectedIndex)
|
|
{
|
|
0 -> 0
|
|
1 -> 8
|
|
else -> 16
|
|
}
|
|
|
|
val ip = when(SettingsWindow.profileMode.selectedIndex)
|
|
{
|
|
0 -> "play.2009scape.org"
|
|
1 -> "test.2009scape.org"
|
|
else -> "localhost"
|
|
}
|
|
|
|
data["ip_management"] = ip
|
|
data["ip_address"] = ip
|
|
|
|
FileWriter(CONF).use { writer ->
|
|
writer.write(data.toJSONString())
|
|
writer.flush()
|
|
}
|
|
}
|
|
|
|
fun parse(){
|
|
try {
|
|
if(!File(CONF).exists()){
|
|
val reader = javaClass.getResourceAsStream("/config.json")!!
|
|
val writer = File(CONF).outputStream()
|
|
reader.copyTo(writer, 1024)
|
|
writer.flush()
|
|
writer.close()
|
|
}
|
|
data = FileReader(CONF).use { reader ->
|
|
val parser = JSONParser()
|
|
parser.parse(reader) as JSONObject
|
|
}
|
|
|
|
val customization = data["customization"] as JSONObject
|
|
val launcher = customization.getOrPut("launcher") {JSONObject()} as JSONObject
|
|
val xpDrops = customization["xpdrops"] as JSONObject
|
|
val slayer = customization["slayer"] as JSONObject
|
|
val rcm = customization["right_click_menu"] as JSONObject
|
|
val styles = rcm["styles"] as JSONObject
|
|
|
|
val background = rcm["background"] as JSONObject
|
|
val title_bar = rcm["title_bar"] as JSONObject
|
|
val border = rcm["border"] as JSONObject
|
|
val debug = data["debug"] as JSONObject
|
|
|
|
SettingsWindow.itemDebugCheckbox.isToggled = debug["item_debug"] as Boolean
|
|
SettingsWindow.objectDebugCheckbox.isToggled = debug["object_debug"] as Boolean
|
|
SettingsWindow.npcDebugCheckbox.isToggled = debug["npc_debug"] as Boolean
|
|
|
|
SettingsWindow.rs3Border.isToggled = styles["rs3border"] as Boolean
|
|
SettingsWindow.bgColorField.text = background["color"].toString()
|
|
SettingsWindow.bgOpacityField.text = background["opacity"].toString()
|
|
SettingsWindow.titleColorField.text = title_bar["color"].toString()
|
|
SettingsWindow.titleOpacityField.text = title_bar["opacity"].toString()
|
|
SettingsWindow.titleFontColor.text = title_bar["font_color"].toString()
|
|
SettingsWindow.borderColor.text = border["color"].toString()
|
|
SettingsWindow.borderOpacity.text = border["opacity"].toString()
|
|
|
|
SettingsWindow.xpDropsEnabled.isToggled = xpDrops.getOrDefault("enabled",true) as Boolean
|
|
SettingsWindow.xpDropMode.selectedIndex = xpDrops.getOrDefault("drop_mode",0).toString().toInt()
|
|
SettingsWindow.xpTrackMode.selectedIndex = xpDrops.getOrDefault("track_mode",0).toString().toInt()
|
|
|
|
SettingsWindow.slayerEnabled.isToggled = slayer.getOrDefault("enabled",true) as Boolean
|
|
SettingsWindow.slayerColor.text = slayer.getOrDefault("color", "#635a38").toString()
|
|
SettingsWindow.slayerOpacity.text = slayer.getOrDefault("opacity","180").toString()
|
|
SettingsWindow.loginTheme.text = customization.getOrDefault("login_theme","scape main").toString()
|
|
SettingsWindow.enableSnowDecember.isToggled = customization.getOrDefault("december_snow", true) as Boolean
|
|
SettingsWindow.enableLeftClickAttack.isToggled = rcm.getOrDefault("left_click_attack", false) as Boolean
|
|
SettingsWindow.minimapFilter.isToggled = customization.getOrDefault("minimap_filter",true) as Boolean
|
|
SettingsWindow.aaSamples.selectedIndex = when(customization.getOrDefault("aa_samples",0).toString().toInt())
|
|
{
|
|
0 -> 0
|
|
8 -> 1
|
|
16 -> 2
|
|
else -> 0
|
|
}
|
|
|
|
SettingsWindow.closeLauncherOnLaunch.isToggled = launcher.getOrDefault("closeOnClientLaunch", true) as Boolean
|
|
Settings.CHECK_FOR_UPDATES = launcher.getOrDefault("notifyUpdates", true) as Boolean
|
|
|
|
SettingsWindow.profileMode.selectedIndex = when(data["ip_management"])
|
|
{
|
|
"play.2009scape.org" -> 0
|
|
"test.2009scape.org" -> 1
|
|
else -> 2
|
|
}
|
|
} catch (e: Exception) {
|
|
println("error parsing settings, replacing with defaults...")
|
|
e.printStackTrace()
|
|
File(CONF).delete()
|
|
FileReader(javaClass.getResource("/config.json")!!.file).use { reader ->
|
|
val writer = FileWriter(CONF)
|
|
reader.copyTo(writer, 1024)
|
|
writer.flush()
|
|
writer.close()
|
|
}
|
|
parse()
|
|
}
|
|
}
|
|
}
|