-
Notifications
You must be signed in to change notification settings - Fork 0
/
Program.cs
61 lines (48 loc) · 1.46 KB
/
Program.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
using System.Text.Json;
using TohoLauncher;
Settings allSettings = new();
Directory.SetCurrentDirectory("D:\\Toho\\TohoLauncher");
try
{
ReadConfig();
var game = SelectGame();
var gameSettings = GetGameSettings(game);
var manager = new LaunchManager(
allSettings.GlobalSettings, gameSettings);
manager.Launch();
}
catch (Exception ex)
{
Console.WriteLine("ERROR");
Console.WriteLine(ex.ToString());
Console.ReadKey();
}
void ReadConfig()
{
Console.Write("Reading config... ");
var settingsFile = File.ReadAllText("TohoLauncherSettings.json");
allSettings = JsonSerializer.Deserialize<Settings>(settingsFile) ??
throw new Exception("Can't read config file");
Console.WriteLine("OK");
}
string SelectGame()
{
var gameNames = allSettings.GameSettings
.Where(x => x.GameName is not null)
.Select(x => x.GameName)
.ToArray();
if (!gameNames.Any()) throw new Exception("No games in config");
return Menu.Select(gameNames!);
}
GameSettings GetGameSettings(string gameName)
{
var globalSettings = allSettings.GlobalSettings;
var gameSettings = allSettings.GameSettings
.First(x => x.GameName == gameName);
gameSettings.UseVPatch ??= globalSettings?.UseVPatch ?? false;
gameSettings.UseThPrac ??= globalSettings?.UseThPrac ?? false;
gameSettings.UseThCrap ??= globalSettings?.UseThCrap ?? false;
gameSettings.ThCrapArg ??= globalSettings?.ThCrapArg;
gameSettings.SaveInGameFolder ??= globalSettings?.SaveInGameFolder ?? false;
return gameSettings;
}