public static NewGameData GenerateNewGameData(IPersonService personService, ICompanyService companyService, int minNumberOfCompanies) { var skills = new Dictionary<byte, decimal>(); var mandatorySkillDefinitions = new List<SkillDefinition>(); var optionalSkillDefinitions = new List<SkillDefinition>(); try { SkillDefinition sd = null; byte skillDefinitionIndex = 1; while ((sd = personService.GetSkillDefinition(skillDefinitionIndex++)) != null) { if (sd.IsMandatory) { mandatorySkillDefinitions.Add(sd); } else { optionalSkillDefinitions.Add(sd); } } } #pragma warning disable catch #pragma warning restore { } foreach (var mandatorySkillDefinition in mandatorySkillDefinitions) { skills.Add(mandatorySkillDefinition.Id, Utilities.GetRanged(mandatorySkillDefinition.Value)); } var count = Utilities.GetRandomInt(1, optionalSkillDefinitions.Count()); IEnumerable<SkillDefinition> remainingDefinitions = optionalSkillDefinitions; for (var index = 0; index < count; index++) { var definition = remainingDefinitions.Random(); remainingDefinitions = remainingDefinitions.Where(rd => rd != definition); skills.Add(definition.Id, Utilities.GetRanged(definition.Value)); } return new NewGameData { CompanyName = Utilities.GetRandomString(), Founder = new CreatePersonData(skills) { FirstName = Utilities.GetRandomString(), LastName = Utilities.GetRandomString(), Birthday = Utilities.GetRandomDate(), Gender = Utilities.GetRandomValue<Gender>(), PersonalityId = 1 }, GameName = Utilities.GetRandomString(32), IndustryId = companyService.Industries.Random().Id, InitialFunds = Utilities.GetRandomDecimal(1500, 2000), NumberOfCompanies = Utilities.GetRandomInt(minNumberOfCompanies, minNumberOfCompanies + 5), StartDate = DateTime.Today, TurnStep = Utilities.GetRandomValue<TurnStepType>() }; }