Exemplo n.º 1
0
        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();
        }