From 20c2682e6188b5f4e5b644476ca2fa03f8c4dcf9 Mon Sep 17 00:00:00 2001 From: Syntriax Date: Mon, 21 Jul 2025 08:45:25 +0300 Subject: [PATCH] chore: tidied up client configuration reading --- Platforms/Desktop/Program.cs | 41 ++++++++++++++++++++++++------------ 1 file changed, 28 insertions(+), 13 deletions(-) diff --git a/Platforms/Desktop/Program.cs b/Platforms/Desktop/Program.cs index b47e210..8986156 100644 --- a/Platforms/Desktop/Program.cs +++ b/Platforms/Desktop/Program.cs @@ -22,19 +22,7 @@ logger = new LoggerWrapper(logger, new ConsoleLogger()); universe.InstantiateUniverseObject().SetUniverseObject("Logger").BehaviourController.AddBehaviour().Logger = logger; string settingsPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "settings.yaml"); -ClientConfiguration clientConfiguration; -try -{ - clientConfiguration = serializer.Deserialize(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()? ); monoGameWindow.Run(); + +static ClientConfiguration GetOrCreateConfiguration(ISerializer serializer, ILogger logger, string settingsPath) +{ + ClientConfiguration clientConfiguration; + + try + { + clientConfiguration = serializer.Deserialize(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; +}