/// <summary> /// Costruttore vuoto per serializzazione. /// </summary> public Section() { emitters = new List <Vector3>(); ScenicElements = new ScenicElement[0]; Enemies = new Enemy[0]; PowerUps = new PowerUp[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(); } }