package net.taehui.twilight.system import com.fasterxml.jackson.core.type.TypeReference import com.fasterxml.jackson.databind.ObjectMapper import net.taehui.twilight.Logger import java.io.IOException import java.nio.file.Paths import java.util.concurrent.ConcurrentHashMap object PlatformIDSystem : Logger { private var platformIDAvatarIDMap = ConcurrentHashMap<String, String>() private var avatarIDPlatformIDMap = ConcurrentHashMap<String, String>() fun savePlatformID() { ObjectMapper().writerWithDefaultPrettyPrinter() .writeValue(Paths.get("Platform ID.json").toFile().absoluteFile, platformIDAvatarIDMap) logInfo("Saved Platform ID") } fun loadPlatformID() { try { platformIDAvatarIDMap.putAll( ObjectMapper().readValue(Paths.get("Platform ID.json").toFile().absoluteFile, object : TypeReference<ConcurrentHashMap<String, String>>() {}) ) platformIDAvatarIDMap.forEach { (platformID, avatarID) -> avatarIDPlatformIDMap[avatarID] = platformID } logInfo("Loaded Platform ID") } catch (e: IOException) { logFault(e) } } fun putPlatformID(rawPlatformID: String, avatarID: String) { val platformID = if (rawPlatformID.startsWith("$")) rawPlatformID else "$$rawPlatformID" platformIDAvatarIDMap[platformID] = avatarID avatarIDPlatformIDMap[avatarID] = platformID } fun wipePlatformID(rawPlatformID: String) { val platformID = if (rawPlatformID.startsWith("$")) rawPlatformID else "$$rawPlatformID" val avatarID = platformIDAvatarIDMap.remove(platformID) if (avatarID != null) { avatarIDPlatformIDMap.remove(avatarID) } } fun getAvatarID(rawPlatformID: String): String? { val platformID = if (rawPlatformID.startsWith("$")) rawPlatformID else "$$rawPlatformID" return platformIDAvatarIDMap[platformID] } fun getPlatformID(avatarID: String): String? { return avatarIDPlatformIDMap[avatarID] } fun hasPlatformID(rawPlatformID: String): Boolean { val platformID = if (rawPlatformID.startsWith("$")) rawPlatformID else "$$rawPlatformID" return platformIDAvatarIDMap.containsKey(platformID) } }