static void Main(string[] args) { CgTimeStampSource.SupplyAlternateProvider(HpTimeStampProvider.CreateInstance()); TimeStampSource.Calibrate(); var gameFactories = new ClortonGameFactorySource(); (bool gotFileOk, string errorGettingFile, FileInfo outputFile, int numGames, VaultType varietyOfVault) = GetOutputFile(args); GameFactory = varietyOfVault == VaultType.Basic ? gameFactories.BasicVaultGameFactory : gameFactories.CustomVaultGameFactory; if (numGames == 1) { Console.WriteLine("Type of vault selected: [" + varietyOfVault + "]."); } Debug.Assert(gotFileOk == (outputFile != null)); if (gotFileOk) { if (numGames > 1) { try { PlayMultipleClortonGames(numGames, outputFile); } catch (Exception ex) { Console.Error.WriteLine(ex.ToString()); Console.Error.WriteLine("Unexpected error initializing game. Terminating."); Environment.Exit(-1); } } else { try { PlayClortonGame(outputFile); } catch (Exception ex) { Console.Error.WriteLine(ex.ToString()); Console.Error.WriteLine("Unexpected error initializing game. Terminating."); Environment.Exit(-1); } } } else { Console.Error.WriteLine("There was a problem with the output file. Additional info: [" + errorGettingFile + "]."); } }
static IClortonGameFactory GetGameFactory(int idx, VaultType evenVaultType) { IClortonGameFactory ret; var factory = new ClortonGameFactorySource(); bool isEven = idx % 2 == 0; if (isEven) { ret = evenVaultType == VaultType.Basic ? factory.BasicVaultGameFactory : factory.CustomVaultGameFactory; } else { ret = evenVaultType == VaultType.Basic ? factory.CustomVaultGameFactory : factory.BasicVaultGameFactory; } return(ret); }