Example #1
0
 /// <summary>
 /// Costruttore vuoto per serializzazione.
 /// </summary>
 public Section()
 {
     emitters       = new List <Vector3>();
     ScenicElements = new ScenicElement[0];
     Enemies        = new Enemy[0];
     PowerUps       = new PowerUp[0];
 }
Example #2
0
        /// <summary>
        /// Genera una sezione di gioco.
        /// Di default genera i fences (confini visuali) e il plane.
        /// </summary>
        /// <param name="additionalElements">Numero di elementi scenici da aggiungere in modo casuale.</param>
        /// <param name="numberOfEnemies">Numero di nemici da generare in modo casuale</param>
        public Section(int additionalElements, int numberOfEnemies, float position)
        {
            emitters = new List <Vector3>();

            zPosition = position;

            ScenicElements = new ScenicElement[20 + additionalElements];
            //Plane
            ScenicElements[0] = new ScenicElement(0, Vector3.Zero, Vector3.Zero);
            //Fences
            ScenicElements[1] = new ScenicElement(1, new Vector3(9, 0, 12.5f), new Vector3(0, getRandomRotation(), 0));
            ScenicElements[2] = new ScenicElement(1, new Vector3(-9, 0, 12.5f), new Vector3(0, getRandomRotation(), 0));
            ScenicElements[3] = new ScenicElement(1, new Vector3(9, 0, 37.5f), new Vector3(0, getRandomRotation(), 0));
            ScenicElements[4] = new ScenicElement(1, new Vector3(-9, 0, 37.5f), new Vector3(0, getRandomRotation(), 0));
            //Trees
            ScenicElements[5]  = new ScenicElement(2, new Vector3(12, 0, 12.5f + (UtilityClass.nextInt(-500, 500) / 100.0f)), new Vector3(0, -getTreeRotation(), 0));
            ScenicElements[6]  = new ScenicElement(2, new Vector3(-12, 0, 12.5f + (UtilityClass.nextInt(-500, 500) / 100.0f)), new Vector3(0, getTreeRotation(), 0));
            ScenicElements[7]  = new ScenicElement(2, new Vector3(12, 0, 37.5f + (UtilityClass.nextInt(-500, 500) / 100.0f)), new Vector3(0, -getTreeRotation(), 0));
            ScenicElements[8]  = new ScenicElement(2, new Vector3(-12, 0, 37.5f + (UtilityClass.nextInt(-500, 500) / 100.0f)), new Vector3(0, getTreeRotation(), 0));
            ScenicElements[9]  = new ScenicElement(2, new Vector3(12, 0, 25 + (UtilityClass.nextInt(-500, 500) / 100.0f)), new Vector3(0, -getTreeRotation(), 0));
            ScenicElements[10] = new ScenicElement(2, new Vector3(-12, 0, 25 + (UtilityClass.nextInt(-500, 500) / 100.0f)), new Vector3(0, getTreeRotation(), 0));
            ScenicElements[11] = new ScenicElement(2, new Vector3(12, 0, 50 + (UtilityClass.nextInt(-500, 500) / 100.0f)), new Vector3(0, -getTreeRotation(), 0));
            ScenicElements[12] = new ScenicElement(2, new Vector3(-12, 0, 50 + (UtilityClass.nextInt(-500, 500) / 100.0f)), new Vector3(0, getTreeRotation(), 0));
            //MOAR PLANES
            ScenicElements[13] = new ScenicElement(0, new Vector3(24, 0, 0), Vector3.Zero);
            ScenicElements[14] = new ScenicElement(0, new Vector3(-24, 0, 0), Vector3.Zero);
            ScenicElements[15] = new ScenicElement(0, new Vector3(24, 12, 0), new Vector3(0, 0, MathHelper.ToRadians(90)));
            ScenicElements[16] = new ScenicElement(0, new Vector3(-24, 12, 0), new Vector3(0, 0, MathHelper.ToRadians(270)));
            ScenicElements[17] = new ScenicElement(0, new Vector3(0, 24, 0), new Vector3(0, 0, MathHelper.ToRadians(180)));
            ScenicElements[18] = new ScenicElement(0, new Vector3(12, 24, 0), new Vector3(0, 0, MathHelper.ToRadians(180)));
            ScenicElements[19] = new ScenicElement(0, new Vector3(-12, 24, 0), new Vector3(0, 0, MathHelper.ToRadians(180)));

            Enemies = new Enemy[numberOfEnemies];
            for (int counter = 0; counter < numberOfEnemies; counter++)
            {
                if (UtilityClass.nextBoolean())
                {
                    Enemies[counter] = new Dog();
                }
                else
                {
                    Enemies[counter] = new Boxes();
                }
            }

            //PowerUps
            //DA GENERARE GIA' ORDINATI, PER EVITARE CICLI DI ORDINAMENTO
            //Aumentare il numero col tempo? Forse ne basta uno per section.
            PowerUps = new PowerUp[1];
            if (Utilities.UtilityClass.nextBoolean())
            {
                PowerUps[0] = new Boost();
            }
            else
            {
                PowerUps[0] = new Heart();
            }
        }