chore: tidied up client configuration reading
This commit is contained in:
		@@ -22,19 +22,7 @@ logger = new LoggerWrapper(logger, new ConsoleLogger());
 | 
				
			|||||||
universe.InstantiateUniverseObject().SetUniverseObject("Logger").BehaviourController.AddBehaviour<LoggerContainer>().Logger = logger;
 | 
					universe.InstantiateUniverseObject().SetUniverseObject("Logger").BehaviourController.AddBehaviour<LoggerContainer>().Logger = logger;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
string settingsPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "settings.yaml");
 | 
					string settingsPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "settings.yaml");
 | 
				
			||||||
ClientConfiguration clientConfiguration;
 | 
					ClientConfiguration clientConfiguration = GetOrCreateConfiguration(serializer, logger, settingsPath);
 | 
				
			||||||
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));
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
if (clientConfiguration.Host)
 | 
					if (clientConfiguration.Host)
 | 
				
			||||||
    Pong.PongUniverse.ApplyPongServer(universe, clientConfiguration.HostPort);
 | 
					    Pong.PongUniverse.ApplyPongServer(universe, clientConfiguration.HostPort);
 | 
				
			||||||
@@ -57,3 +45,30 @@ universe.FindBehaviour<Syntriax.Engine.Network.INetworkCommunicatorClient>()?
 | 
				
			|||||||
    );
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
monoGameWindow.Run();
 | 
					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;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user