chore: tidied up client configuration reading

This commit is contained in:
Syntriax 2025-07-21 08:45:25 +03:00
parent 64ee9a0789
commit 20c2682e61

View File

@ -22,19 +22,7 @@ logger = new LoggerWrapper(logger, new ConsoleLogger());
universe.InstantiateUniverseObject().SetUniverseObject("Logger").BehaviourController.AddBehaviour<LoggerContainer>().Logger = logger;
string settingsPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "settings.yaml");
ClientConfiguration clientConfiguration;
try
{
clientConfiguration = serializer.Deserialize<ClientConfiguration>(File.ReadAllText(settingsPath));
logger.Log(clientConfiguration, $"{settingsPath} read");
}
catch (Exception exception)
{
clientConfiguration = new();
logger.LogError(serializer, $"Error loading {settingsPath}. Creating new settings file");
logger.LogException(serializer, exception);
File.WriteAllText(settingsPath, serializer.Serialize(clientConfiguration));
}
ClientConfiguration clientConfiguration = GetOrCreateConfiguration(serializer, logger, settingsPath);
if (clientConfiguration.Host)
Pong.PongUniverse.ApplyPongServer(universe, clientConfiguration.HostPort);
@ -57,3 +45,30 @@ universe.FindBehaviour<Syntriax.Engine.Network.INetworkCommunicatorClient>()?
);
monoGameWindow.Run();
static ClientConfiguration GetOrCreateConfiguration(ISerializer serializer, ILogger logger, string settingsPath)
{
ClientConfiguration clientConfiguration;
try
{
clientConfiguration = serializer.Deserialize<ClientConfiguration>(File.ReadAllText(settingsPath));
logger.Log(clientConfiguration, $"Configuration is successfully read");
}
catch (FileNotFoundException _)
{
clientConfiguration = new();
logger.Log(clientConfiguration, $"Configuration does not exist");
File.WriteAllText(settingsPath, serializer.Serialize(clientConfiguration));
}
catch (Exception exception)
{
clientConfiguration = new();
logger.LogError(clientConfiguration, $"Error loading configuration");
logger.LogException(clientConfiguration, exception);
File.WriteAllText(settingsPath, serializer.Serialize(clientConfiguration));
}
logger.Log(clientConfiguration, $"Creating new configuration file at {settingsPath}");
return clientConfiguration;
}