public void SetStartPostitionsForAllMonster() { if (startPosGen == null) { startPosGen = FindObjectOfType <StartPositionGenerator>(); } if (spawnPositionList.Count == 0) { spawnPositionList = startPosGen.GetStartPositions(teamMonsterList); } if (academy == null) { academy = FindObjectOfType <MonsterTrainerAcademy>(); } if (!academy.attackEnemiesCurriculum) { startPosGen.AssignRandomPositionsForMultipleMonstersFromList(teamMonsterList, spawnPositionList); } else { startPosGen.AssignRandomPositionForMultipleMonstersInRandomSpawnZone(teamMonsterList); } }
GameObject SpawnRandomWaypoint() { if (startPosGenerator == null) { startPosGenerator = FindObjectOfType <StartPositionGenerator>(); } Transform newWaypointTransform = Instantiate(waypointPrefab, startPosGenerator.GeneratePositionInRandomSpawnZone(), startPosGenerator.GenerateRandomRotation()); return(newWaypointTransform.gameObject); }
private void AssignObjects() { if (masterAreaControl == null || startPosGenerator == null || teamMLController == null || teamGOAPController == null) { masterAreaControl = FindObjectOfType <MasterAreaController>(); startPosGenerator = FindObjectOfType <StartPositionGenerator>(); GameObject teamMLControllerGameObject = GameObject.Find("TeamMLController"); GameObject teamGOAPControllerGameObject = GameObject.Find("TeamGOAPController"); teamMLController = teamMLControllerGameObject.GetComponent <TeamController>(); teamGOAPController = teamGOAPControllerGameObject.GetComponent <TeamController>(); } }
public static void Main(string[] args) { Logger.Info("Application Started"); if (!string.IsNullOrEmpty(ConfigurationManager.AppSettings["csvpath"].ToString())) { CsvImporter.CsvPath = ConfigurationManager.AppSettings["csvpath"].ToString(); } if (!string.IsNullOrEmpty(ConfigurationManager.AppSettings["jsonpath"].ToString())) { JsonOverrideFactory.JsonPath = ConfigurationManager.AppSettings["jsonpath"].ToString(); } var categories = new CategoryCreator() .SetRawPath("Events.csv") .SetOverrideFactory("events.json") .Create(); var athletes = new AthleteCreator() .SetRawPath("Competitors.csv") .SetOverrideFactory("athletes.json") .Create(); var clubs = new ClubCreator(athletes).SetOverrideFactory("clubs.json").Create(); AthleteClubMapper.Map(athletes, clubs); var startpositions = new StartPositionFactory("startpositions.json").Create(); var crews = new CrewCreator(categories, clubs, startpositions, athletes) .SetRawPath("Crews.csv") .SetOverrideFactory("crews.json") .Create() .OrderBy(cr => cr.StartNumber) .ToList(); // todo - this is almost certainly not the best place to do this var bandProportions = ConfigurationManager.AppSettings["OpenBands"].Split(',').Select(i => Int32.Parse(i)).ToList(); foreach (Gender gender in (Gender[])Enum.GetValues(typeof(Gender))) { var openBands = categories.Where(cat => cat is EventCategory).Select(c => (EventCategory)c).Where(c => c.Gender == gender && c.UseForCRI).Select(c => c.EventId).ToList(); IList <Func <List <int> > > del = new List <Func <List <int> > > { () => crews.Where(cr => cr.Gender == gender).Select(cr => cr.CRI(false)).ToList(), () => crews.Where(crew => categories.Where(cat => cat is EventCategory).Select(c => (EventCategory)c).Where(c => c.Gender == gender && c.UseForCRI).Select(c => c.EventId).Contains(crew.EventCategory.EventId)).Select(cr => cr.CRI(false)).ToList() }; foreach (var fn in del) { var crisToInclude = fn(); // crews.Where(crew => openBands.Contains(crew.EventCategory.EventId)).Select(cr => cr.CRI).ToList(); crisToInclude.Sort(); if (crisToInclude.Count > 0) { Logger.DebugFormat("{0} crews [#{2}] {1}", gender, crisToInclude.Select(c => c.ToString()).Aggregate((h, t) => String.Format("{0}, {1}", h, t)), crisToInclude.Count); int tally = 0; int lower = 0; for (int i = 0; i < bandProportions.Count; i++) { tally += bandProportions[i]; int upper = i + 1 == bandProportions.Count ? crisToInclude.Count - 1 : 1 + (int)Math.Floor((decimal)crisToInclude.Count * tally / 100); Logger.DebugFormat("Band {0} [{1}, {2}{4}. #{3} ", i + 1, crisToInclude[lower], crisToInclude[upper], (i + 1 == bandProportions.Count ? 1 : 0) + upper - lower, i + 1 < bandProportions.Count ? ")" : "]"); // crisToInclude[mag-1], crisToInclude[mag]); lower = upper; } foreach (var b in new List <bool> { true, false }) { Logger.InfoFormat("Correlation between CRI{2} and points ({1}): {0}", PearsonCorrelation(crews.Where(cr => cr.Gender == gender).Select(cr => (double)cr.CRI(b)).ToList(), crews.Where(cr => cr.Gender == gender).Select(cr => (double)cr.Points).ToList()), gender, b ? "Max" : ""); } } } } foreach (var b in new List <bool> { true, false }) { Logger.InfoFormat("Correlation between CRI{1} and points (all): {0}", PearsonCorrelation(crews.Select(cr => (double)cr.CRI(b)).ToList(), crews.Select(cr => (double)cr.Points).ToList()), b ? "Max" : ""); } CategoryCrewMapper.Map(categories, crews); // TODO: move results into the config file? if (args.Count() == 0 || args[0].ToLowerInvariant() != "results") { StartPositionGenerator.Generate(crews); bool valid = new CrewValidator(athletes).Validate(crews) && new ClubValidator().Validate(clubs) && new AthleteValidator().Validate(athletes) && new CategoryValidator().Validate(categories); if (!valid) { return; } } else { var starttimes = new SequenceItemFactory("start-times.json").Create(); var finishtimes = new SequenceItemFactory("finish-times.json").Create(); var penalties = new PenaltyFactory("penalties.json").Create(); var adjustments = new AdjustmentFactory("adjustments.json").Create(); // todo - is there a weighed in file? TimeMapper.Map(crews, starttimes, finishtimes); TimeMapper.Penalise(crews, penalties); TimeMapper.Adjust(crews, adjustments); CategoryResultsGenerator.Generate(categories); ResultsPrinter.Dump(crews); } Logger.Info("Application stopped."); }