public static void SetupCrazyMode() { Level = -1; Program.Referee.ClearRules(); Program.Referee.OutofControl = true; for (int i = 0; i < 50; i++) { string rule = Rule.GetNameRandomRule(); while (Rule.Rules[rule].Type == Rule.RuleType.POP) { rule = Rule.GetNameRandomRule(); } Referee.AddRule(rule); } Program.Referee.AddRule(Rule.Rules["top-down"]); Program.Referee.AddRule(Rule.Rules["Enemy hurty"]); Program.Referee.AddRule(Rule.Rules["control Player"]); Program.Referee.AddRule(Rule.Rules["Goal victory"]); Engine.SetLocation(new Location(new Description2D(0, 0, ScreenWidth, ScreenHeight))); Engine.AddEntity(Player.Create(Program.ScreenWidth / 4, Program.ScreenHeight / 2)); Point center = new Point(Program.ScreenWidth * 3 / 4, Program.ScreenHeight / 2); Engine.AddEntity(Goal.Create(center.X + Program.Random.Next(-32, 48), center.Y + Program.Random.Next(-48, 48))); Action <Location, Entity> moving = (location, entity) => { Enemy d2d = entity.Description as Enemy; d2d.ChangeCoordsDelta(d2d.VelX, Math.Sin(d2d.VelY)); Description2D locd2d = location.Description as Description2D; if (d2d.X < 0 || d2d.X > locd2d.Width) { d2d.VelX = -d2d.VelX; } if (d2d.Y < 0 || d2d.Y > locd2d.Height) { d2d.VelY = -d2d.VelY; } }; for (int i = 0; i < 20; i++) { Entity enemy = Enemy.Create(center.X + (int)(48 * Math.Cos(i / 20.0 * Math.PI * 2)), center.Y + (int)(48 * Math.Sin(i / 20.0 * Math.PI * 2))); enemy.TickAction = moving; //Engine.AddEntity(Enemy.Create(Program.Random.Next(16, Program.ScreenWidth - 16), Program.Random.Next(16, Program.ScreenHeight - 16))); Engine.AddEntity(enemy); } Engine.AddEntity(HeadsUpDisplay.Create()); Referee.Start(); }
public static Entity Create() { HeadsUpDisplay hud = new HeadsUpDisplay(); hud.DrawAction = hud.Draw; Entity entity = new Entity(hud); return(entity); }