private void SpawnInvasion() { List<IInvasionGenerator> generators = new List<IInvasionGenerator>(); if (!SettingsManager.BoolSettings[(int)Preferences.NoWolfDifficultySetting]) { generators.Add(WorldManager.getInstance().InvasionGenerators.First(x => x is WolfInvasionGenerator)); } if (!SettingsManager.BoolSettings[(int)Preferences.NoSpiderDifficultySetting]) { generators.Add(WorldManager.getInstance().InvasionGenerators.First(x => x is SpiderInvasionGenerator)); } if (!SettingsManager.BoolSettings[(int)Preferences.NoNecromancerDifficultySetting]) { generators.Add(WorldManager.getInstance().InvasionGenerators.First(x => x is NecromancerInvasionGenerator)); } if (!SettingsManager.BoolSettings[(int)Preferences.NoUndeadDifficultySetting]) { generators.Add(WorldManager.getInstance().InvasionGenerators.First(x => x is SkeletonInvasionGenerator)); } if (!SettingsManager.BoolSettings[(int)Preferences.NoGoblinDifficultySetting]) { generators.Add(WorldManager.getInstance().InvasionGenerators.First(x => x is GoblinInvasionGenerator)); } if (generators.Count == 0) { GUIWindowModOptions.DisplayMessage("No Invasion Started", "You need at least one invasion type selected."); return; } float difficultyPrecent = (float)SettingsManager.DifficultyPrecentAsInt/100; IInvasionGenerator invasionGenerator = generators.WeightedRandomElement(element => element.getPriority()); if (invasionGenerator == null) { GUIManager.getInstance().AddTextLine("Invasion Failed to Spawn"); } else { WorldManager.getInstance().SpawnInvasion(invasionGenerator.CreateInvasion((int)(weightedWealth * difficultyPrecent))); } //GUIManager.getInstance().AddTextLine("Spawned Invasion with weight of: " + (weightedWealth * difficultyPrecent)); }
private void SpawnInvasion() { List<IInvasionGenerator> generators = new List<IInvasionGenerator>(); if (wolf) { generators.Add(WorldManager.getInstance().InvasionGenerators.First(x => x is WolfInvasionGenerator)); } if (spider) { generators.Add(WorldManager.getInstance().InvasionGenerators.First(x => x is SpiderInvasionGenerator)); } if (necromancer) { generators.Add(WorldManager.getInstance().InvasionGenerators.First(x => x is NecromancerInvasionGenerator)); } if (undead) { generators.Add(WorldManager.getInstance().InvasionGenerators.First(x => x is SkeletonInvasionGenerator)); } if (goblin) { generators.Add(WorldManager.getInstance().InvasionGenerators.First(x => x is GoblinInvasionGenerator)); } if (generators.Count == 0) { GUIWindowModOptions.DisplayMessage("No Invasion Started", "You need at least one invasion type selected."); return; } GUIWindowInvasionDifficultyMenu.InvasionTiggeredByMod = true; IInvasionGenerator invasionGenerator = generators.WeightedRandomElement(element => element.getPriority()); if (invasionGenerator == null) { GUIManager.getInstance().AddTextLine("Invasion Failed to Spawn"); } else { WorldManager.getInstance().SpawnInvasion(invasionGenerator.CreateInvasion(invasionPoints)); } }