Should be able to recognize Raspberry Pi and not try and load the Discord RPC (which crashes the game)

This commit is contained in:
Yair Morgenstern 2020-01-07 20:32:59 +02:00
parent f554d8c2c4
commit ffb562c0aa
2 changed files with 64 additions and 1 deletions

View file

@ -29,7 +29,8 @@ internal object DesktopLauncher {
val game = UncivGame("Desktop")
tryActivateDiscord(game)
if(!RaspberryPiDetector.isRaspberryPi()) // No discord RPC for Raspberry Pi, see https://github.com/yairm210/Unciv/issues/1624
tryActivateDiscord(game)
LwjglApplication(game, config)
}
@ -67,6 +68,7 @@ internal object DesktopLauncher {
}
private fun tryActivateDiscord(game: UncivGame) {
try {
val handlers = DiscordEventHandlers()
DiscordRPC.INSTANCE.Discord_Initialize("647066573147996161", handlers, true, null)

View file

@ -0,0 +1,61 @@
package com.unciv.app.desktop
import java.io.BufferedReader
import java.io.File
import java.io.FileInputStream
import java.io.InputStreamReader
/**
* Raspberry PI helper class
* https://stackoverflow.com/questions/37053271/the-ideal-way-to-detect-a-raspberry-pi-from-java-jar
* @author wf
*/
object RaspberryPiDetector {
var debug = false
/**
* check if this java vm runs on a raspberry PI
*
* @return true if this is running on a Raspbian Linux
*/
fun isRaspberryPi(): Boolean {
val osRelease = osRelease()
return osRelease != null && osRelease.contains("Raspbian")
}
/**
* read the first line from the given file
*
* @param file
* @return the first line
*/
private fun readFirstLine(file: File): String? {
var firstLine: String? = null
try {
if (file.canRead()) {
val fis = FileInputStream(file)
val bufferedReader = BufferedReader(
InputStreamReader(fis))
firstLine = bufferedReader.readLine()
fis.close()
}
} catch (th: Throwable) {
if (debug) th.printStackTrace()
}
return firstLine
}
/**
* get the operating System release
*
* @return the first line from /etc/os-release or null
*/
private fun osRelease(): String? {
val os = System.getProperty("os.name")
if (os.startsWith("Linux")) {
val osRelease = File("/etc", "os-release")
return readFirstLine(osRelease)
}
return null
}
}