@@ -12,6 +12,7 @@ import java.util.concurrent.*
12
12
*/
13
13
@Service
14
14
class PlsDataProvider {
15
+ val OS : String = System .getProperty(" os.name" , " Windows" )
15
16
fun init () {
16
17
// preload cached values
17
18
initForPaths()
@@ -57,6 +58,7 @@ class PlsDataProvider {
57
58
}
58
59
59
60
private fun doGetSteamPath (): String {
61
+ if (! OS .contains(" Windows" )) return " "
60
62
val command = """ Get-ItemProperty -Path 'HKLM:\SOFTWARE\Wow6432Node\Valve\Steam' | Select-Object InstallPath | Format-Table -HideTableHeaders"""
61
63
return runCatchingCancelable { executeCommand(command, CommandType .POWER_SHELL ) }.getOrDefault(" " )
62
64
}
@@ -72,14 +74,17 @@ class PlsDataProvider {
72
74
}
73
75
74
76
private fun doGetSteamGamePath (steamId : String ): String {
77
+ if (! OS .contains(" Windows" )) return " " ;
75
78
val command = """ Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Steam App ${steamId} ' | Select-Object InstallLocation | Format-Table -HideTableHeaders"""
76
79
return runCatchingCancelable { executeCommand(command, CommandType .POWER_SHELL ) }.getOrDefault(" " )
77
80
}
78
81
79
82
private fun doGetFallbackSteamGamePath (gameName : String ): String? {
80
83
// 不准确,可以放在不同库目录下
81
84
val steamPath = getSteamPath() ? : return null
82
- return """ $steamPath \steamapps\common\$gameName """
85
+ var path = """ $steamPath \steamapps\common\$gameName """
86
+ if (! OS .contains(" Windows" )) path = path.replace(" \\ " , " /" );
87
+ return path
83
88
}
84
89
85
90
/* *
@@ -88,7 +93,9 @@ class PlsDataProvider {
88
93
fun getSteamWorkshopPath (steamId : String ): String? {
89
94
// 不准确,可以放在不同库目录下
90
95
val steamPath = getSteamPath() ? : return null
91
- return """ $steamPath \steamapps\workshop\content\$steamId """
96
+ var path = """ $steamPath \steamapps\workshop\content\$steamId """
97
+ if (! OS .contains(" Windows" )) path = path.replace(" \\ " , " /" );
98
+ return path
92
99
}
93
100
94
101
/* *
@@ -97,7 +104,10 @@ class PlsDataProvider {
97
104
fun getGameDataPath (gameName : String ): String? {
98
105
// 实际上应当基于launcher-settings.json中的gameDataPath
99
106
val userHome = System .getProperty(" user.home" ) ? : return null
100
- return """ $userHome \Documents\Paradox Interactive\$gameName """
107
+ // Note: needs to be symlinked to install path.
108
+ var path = """ $userHome \Documents\Paradox Interactive\$gameName """
109
+ if (! OS .contains(" Windows" )) path = path.replace(" \\ " , " /" );
110
+ return path
101
111
}
102
112
103
113
// endregion
0 commit comments