@@ -22,8 +22,6 @@ public enum GameVersionType
2222
2323 public static class GameVersion
2424 {
25-
26-
2725 private static readonly int [ ] ExecutableSizes = {
2826 24909584 , // Disc
2927 24898224 , // Origin_March2017
@@ -33,27 +31,6 @@ public static class GameVersion
3331 25066744 // Steam_October2024
3432 } ;
3533
36- private static readonly string [ ] VersionNames = {
37- "disk" ,
38- "steam_patched" , // Origin_March2017 uses the steam_patched one
39- "steam_patched" , // EA_October2024 uses the steam_patched one
40- "steam_patched" ,
41- "steam_patched" , // in GoG executable, addresses did not change in October 2024 update
42- "steam_patched" , // addresses did not change in October 2024 update, but the executable was protected with SteamDRM
43- null
44- } ;
45-
46- // Origin users download an alternative executable, so it uses a different name
47- private static readonly string [ ] ExecutableNames = {
48- "SporeApp.exe" ,
49- "SporeApp_ModAPIFix.exe" , // Origin_March2017 uses a different one
50- "SporeApp_ModAPIFix.exe" , // EA_October2024 uses a different one
51- "SporeApp.exe" ,
52- "SporeApp.exe" ,
53- "SporeApp.exe" ,
54- null
55- } ;
56-
5734 public static bool RequiresModAPIFix ( GameVersionType versionType )
5835 {
5936 return versionType == GameVersionType . Origin_March2017 ||
@@ -80,31 +57,60 @@ public static GameVersionType DetectVersion(string path)
8057
8158 public static string GetVersionName ( GameVersionType type )
8259 {
83- return VersionNames [ ( int ) type ] ;
60+ switch ( type )
61+ {
62+ case GameVersionType . Disc :
63+ return "disk" ;
64+
65+ case GameVersionType . Origin_March2017 :
66+ case GameVersionType . EA_October2024 :
67+ case GameVersionType . Steam_March2017 :
68+ case GameVersionType . GOG_October2024 :
69+ case GameVersionType . Steam_October2024 :
70+ return "steam_patched" ;
71+
72+ default :
73+ return null ;
74+ }
8475 }
8576
8677 public static string GetExecutableFileName ( GameVersionType type )
8778 {
88- return ExecutableNames [ ( int ) type ] ;
79+ switch ( type )
80+ {
81+ case GameVersionType . Disc :
82+ case GameVersionType . Steam_March2017 :
83+ case GameVersionType . GOG_October2024 :
84+ case GameVersionType . Steam_October2024 :
85+ return "SporeApp.exe" ;
86+
87+ // Origin and EA App have extra DRM
88+ // which requires the ModAPIFix executable
89+ case GameVersionType . Origin_March2017 :
90+ case GameVersionType . EA_October2024 :
91+ return "SporeApp_ModAPIFix.exe" ;
92+
93+ default :
94+ return null ;
95+ }
8996 }
9097
9198 public static string GetNewDLLName ( GameVersionType type )
9299 {
93- if ( type == GameVersionType . Disc )
94- {
95- return "SporeModAPI.disk.dll" ;
96- }
97- else if ( ( type == GameVersionType . Origin_March2017 ) ||
98- ( type == GameVersionType . EA_October2024 ) ||
99- ( type == GameVersionType . Steam_March2017 ) ||
100- ( type == GameVersionType . GOG_October2024 ) ||
101- ( type == GameVersionType . Steam_October2024 ) )
102- {
103- return "SporeModAPI.march2017.dll" ;
104- }
105- else
100+ switch ( type )
106101 {
107- return null ;
102+ case GameVersionType . Disc :
103+ return "SporeModAPI.disk.dll" ;
104+
105+ case GameVersionType . Origin_March2017 :
106+ case GameVersionType . EA_October2024 :
107+ case GameVersionType . Steam_March2017 :
108+ case GameVersionType . GOG_October2024 :
109+ case GameVersionType . Steam_October2024 :
110+ return "SporeModAPI.march2017.dll" ;
111+
112+ default :
113+ return null ;
108114 }
109115 }
110116 }
0 commit comments