private void GenerateMap() { var generator = new MapGenerator(); generator.Generate(); generator.Print(Map); RunStats.Level += 1; new Curio(Template.BellTower).MoveTo(Map.GetTile(0, 0)); var positions = Map.EnumerateTiles().Shuffle(Random); Point?start = null; var weak = new List <Template>(); var strong = new List <Template>(); bool hasOmicron = PlayerCurio.HasBehaviors <BehaviorOmicron>(); //TODO: There was gonna be a tutorial with blood urns for smashing if (RunStats.Level >= 1) { weak.Add(Template.Grunt); } if (RunStats.Level >= 2) { weak.Add(Template.Twitch); } if (RunStats.Level >= 3) { weak.Add(Template.Bulwark); } if (RunStats.Level >= 4) { strong.Add(Template.Lich); } if (RunStats.Level >= 5) { weak.Remove(Template.Grunt); } if (RunStats.Level % 2 == 0) { weak.Add(Template.Rat); } weak.Add(Template.Executioner); weak.Add(Template.Lich); var toSpawn = new List <Template>(); if (weak.Any()) { for (int i = 0; i < 30; i++) { toSpawn.Add(weak.Pick(Random)); } } if (strong.Any()) { for (int i = 0; i < 5; i++) { toSpawn.Add(strong.Pick(Random)); } } if (hasOmicron || (RunStats.Level >= 6 && RunStats.Level % 3 == 0)) { toSpawn.Add(Template.Nemesis); } var spawned = new List <ICurio>(); foreach (var tile in positions) { if (toSpawn.Any() && !tile.IsSolid() && !tile.IsChasm()) { var template = toSpawn[0]; toSpawn.RemoveAt(0); var enemy = new Curio(template); enemy.MoveTo(tile); if (template != Template.Nemesis && template != Template.Rat) { spawned.Add(enemy); } if (template == Template.Nemesis && hasOmicron) { Behavior.Apply(new BehaviorKillTarget(enemy)); } } else if (tile.HasBehaviors <BehaviorLevelStart>()) { start = new Point(tile.X, tile.Y); } if (toSpawn.Empty() && start.HasValue) { break; } } if (RunStats.Level % 3 == 0) { foreach (var enemy in spawned.Shuffle(Random).Take(3)) { Behavior.Apply(new BehaviorKillTarget(enemy)); } } PlayerCurio.MoveTo(Map.GetTile(start.Value.X, start.Value.Y)); CameraCurio.MoveTo(Map.GetTile(start.Value.X, start.Value.Y)); }
public static bool IsGrappleTarget(this ICurio curio) { return(curio.HasBehaviors <IGrappleTarget>()); }
public static bool IsHeartless(this ICurio curio) { return(curio.HasBehaviors <BehaviorHeartless>()); }
public static bool IsSpiky(this ICurio curio) { return(curio.HasBehaviors <BehaviorSpiky>()); }
public static bool IsChasm(this ICurio curio) { return(curio.HasBehaviors <BehaviorChasm>()); }
public static bool IsSolid(this ICurio curio) { return(curio.HasBehaviors <BehaviorSolid>()); }