public FastRhomb(GeomCloneLevel level, Player evader, Vector2 position)
            : base(level, position, 0.7f, 500, 1000.0f, 720.0f, 0.007f,50)
        {
            Color c = Color.Pink;

            rotation = 0.0f;

            float r = 45.0f;
            parts.Add(new ActorPart(Game, "smallRect", Position, rotation, new Vector2((float)8 / referenceWidth, (float)8 / referenceHeight), -r, 0.5f, 0.5f, c));
            parts.Add(new ActorPart(Game, "smallRect", Position, rotation, new Vector2(-(float)8 / referenceWidth, (float)8 / referenceHeight), r, 0.5f, 0.5f, c));
            parts.Add(new ActorPart(Game, "smallRect", Position, rotation, new Vector2(-(float)8 / referenceWidth, -(float)8 / referenceHeight), -r, 0.5f, 0.5f, c));
            parts.Add(new ActorPart(Game, "smallRect", Position, rotation, new Vector2((float)8 / referenceWidth, -(float)8 / referenceHeight), r, 0.5f, 0.5f, c));

            parts.Add(new ActorPart(Game, "smallRect", Position, rotation, Vector2.Zero, 0, 0.7071f, 0.5f, c));
            parts.Add(new ActorPart(Game, "smallRect", Position, rotation, Vector2.Zero, 90.0f, 0.7071f, 0.5f, c));

            Behavior.PursuitOn(evader.Vehicle);
            Behavior.SeparationOn();
            ChangeState(new FastRhombBorn(CurrentLevel, this));
        }
 public PlayerDead(GeomCloneLevel level, Player player)
     : base(level, player, null)
 {
     // Activate proper animation
     Owner.ChangeAnimation(new FadeOutDead(level, Owner));
 }
        public SmartRhomb(GeomCloneLevel currentLevel, Vector2 position, Player evader)
            : base(currentLevel, position, 0.1f, 400.0f, 150.0f, 720.0f, 0.007f, 100)
        {
            Color c = Color.LawnGreen;

            rotation = 0.0f;

            float r = 45.0f;
            parts.Add(new ActorPart(Game, "smallRect", Position, rotation, new Vector2((float)8 / referenceWidth, (float)8 / referenceHeight), -r, 0.5f, 0.5f, c));
            parts.Add(new ActorPart(Game, "smallRect", Position, rotation, new Vector2(-(float)8 / referenceWidth, (float)8 / referenceHeight), r, 0.5f, 0.5f, c));
            parts.Add(new ActorPart(Game, "smallRect", Position, rotation, new Vector2(-(float)8 / referenceWidth, -(float)8 / referenceHeight), -r, 0.5f, 0.5f, c));
            parts.Add(new ActorPart(Game, "smallRect", Position, rotation, new Vector2((float)8 / referenceWidth, -(float)8 / referenceHeight), r, 0.5f, 0.5f, c));

            parts.Add(new ActorPart(Game, "smallRect", Position, rotation, new Vector2((float)8 / referenceWidth, 0), 90.0f, 0.25f, 0.5f, c));
            parts.Add(new ActorPart(Game, "smallRect", Position, rotation, new Vector2(-(float)8 / referenceWidth, 0), 90.0f, 0.25f, 0.5f, c));
            parts.Add(new ActorPart(Game, "smallRect", Position, rotation, new Vector2(0, (float)8 / referenceHeight), 0, 0.25f, 0.5f, c));
            parts.Add(new ActorPart(Game, "smallRect", Position, rotation, new Vector2(0, -(float)8 / referenceHeight), 0, 0.25f, 0.5f, c));

            Behavior.PursuitOn(evader.Vehicle);
            Behavior.SeparationOn();
            Behavior.EvadeMultiOn(CurrentLevel.EntityManager.GetBulletsVehicles, 250);
            ChangeState(new BornState(CurrentLevel, this));
        }
        public static List<Enemy> SpawnRhombFlock(int size, GeomCloneLevel level, Player evader)
        {
            Vector2 position = new Vector2(RandomHelper.getRandomFloat(), RandomHelper.getRandomFloat());

            List<Enemy> list = new List<Enemy>(size);
            for (int ii = 0; ii < size; ii++)
            {
                Vector2 displacement = RandomHelper.getRandomVector() * 0.1f;
                list.Add(new Rhomb(level, evader, position + displacement));
            }

            return list;
        }
        public Rhomb(GeomCloneLevel setCurrentLevel, Player evader, Vector2 position)
            : base(setCurrentLevel, position, 0.1f, 300, 500.0f, 720.0f, 0.007f,50)
        {
            Color c = Color.Aqua;

            rotation = 0.0f;

            float r = 45.0f;
            parts.Add(new ActorPart(Game, "smallRect", Position, rotation, new Vector2((float)8 / referenceWidth, (float)8 / referenceHeight), -r, 0.5f, 0.5f, c));
            parts.Add(new ActorPart(Game, "smallRect", Position, rotation, new Vector2(-(float)8 / referenceWidth, (float)8 / referenceHeight), r, 0.5f, 0.5f, c));
            parts.Add(new ActorPart(Game, "smallRect", Position, rotation, new Vector2(-(float)8 / referenceWidth, -(float)8 / referenceHeight), -r, 0.5f, 0.5f, c));
            parts.Add(new ActorPart(Game, "smallRect", Position, rotation, new Vector2((float)8 / referenceWidth, -(float)8 / referenceHeight), r, 0.5f, 0.5f, c));

            Behavior.PursuitOn(evader.Vehicle);
            Behavior.SeparationOn();
            //ChangeState(new BornState(theGame, this));
            ChangeState(new RhombBorn(CurrentLevel, this));
        }