Skip to content

Commit 0797c94

Browse files
committed
ModAPI.Common: use switch instead of array index in GameVersion.cs
1 parent ff96f89 commit 0797c94

File tree

1 file changed

+45
-39
lines changed

1 file changed

+45
-39
lines changed

ModAPI.Common/GameVersion.cs

Lines changed: 45 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)