#include "enemy_formations.h" #include "balloon.h" // for BALLOON_VELX_NEGATIVE, BALLOON_VELX_POSITIVE #include "param.h" // for param #include "utils.h" // for ParamGame, Param, Zone, BLOCK // Constructor EnemyFormations::EnemyFormations() { initEnemyFormations(); initEnemyPools(); initGameStages(); } // Inicializa las formaciones enemigas void EnemyFormations::initEnemyFormations() { constexpr int y4 = -BLOCK; const int x4_0 = param.game.play_area.rect.x; const int x4_100 = param.game.play_area.rect.w - BALLOON_WIDTH_4; constexpr int y3 = -BLOCK; const int x3_0 = param.game.play_area.rect.x; const int x3_100 = param.game.play_area.rect.w - BALLOON_WIDTH_3; constexpr int y2 = -BLOCK; const int x2_0 = param.game.play_area.rect.x; const int x2_100 = param.game.play_area.rect.w - BALLOON_WIDTH_2; constexpr int y1 = -BLOCK; const int x1_0 = param.game.play_area.rect.x; const int x1_50 = param.game.play_area.center_x - (BALLOON_WIDTH_1 / 2); const int x1_100 = param.game.play_area.rect.w - BALLOON_WIDTH_1; // Inicializa a cero las variables for (int i = 0; i < NUMBER_OF_ENEMY_FORMATIONS; i++) { enemy_formation_[i].number_of_enemies = 0; for (int j = 0; j < MAX_NUMBER_OF_ENEMIES_IN_A_FORMATION; j++) { enemy_formation_[i].init[j].x = 0; enemy_formation_[i].init[j].y = 0; enemy_formation_[i].init[j].vel_x = 0; enemy_formation_[i].init[j].kind = 0; enemy_formation_[i].init[j].creation_counter = 0; } } const int creationTime = 300; int incX = 0; int incTime = 0; int j = 0; // #00 - Dos enemigos BALLOON4 uno a cada extremo j = 0; enemy_formation_[j].number_of_enemies = 2; incX = x4_100; incTime = 0; for (int i = 0; i < enemy_formation_[j].number_of_enemies; i++) { enemy_formation_[j].init[i].x = x4_0 + (i * incX); enemy_formation_[j].init[i].y = y4; enemy_formation_[j].init[i].vel_x = BALLOON_VELX_NEGATIVE * (((i % 2) * 2) - 1); enemy_formation_[j].init[i].kind = BALLOON_4; enemy_formation_[j].init[i].creation_counter = creationTime + (incTime * i); } // #01 - Dos enemigos BALLOON4 uno a cada cuarto. Ambos van hacia el centro j = 1; enemy_formation_[j].number_of_enemies = 2; incX = param.game.play_area.center_x; incTime = 0; for (int i = 0; i < enemy_formation_[j].number_of_enemies; i++) { enemy_formation_[j].init[i].x = param.game.play_area.first_quarter_x - (BALLOON_WIDTH_4 / 2) + (i * incX); enemy_formation_[j].init[i].y = y4; enemy_formation_[j].init[i].vel_x = BALLOON_VELX_NEGATIVE * (((i % 2) * 2) - 1); enemy_formation_[j].init[i].kind = BALLOON_4; enemy_formation_[j].init[i].creation_counter = creationTime + (incTime * i); } // #02 - Cuatro enemigos BALLOON2 uno detras del otro. A la izquierda y hacia el centro j = 2; enemy_formation_[j].number_of_enemies = 4; incX = BALLOON_WIDTH_2 + 1; incTime = 10; for (int i = 0; i < enemy_formation_[j].number_of_enemies; i++) { enemy_formation_[j].init[i].x = x2_0 + (i * incX); enemy_formation_[j].init[i].y = y2; enemy_formation_[j].init[i].vel_x = BALLOON_VELX_POSITIVE; enemy_formation_[j].init[i].kind = BALLOON_2; enemy_formation_[j].init[i].creation_counter = creationTime - (incTime * i); } // #03 - Cuatro enemigos BALLOON2 uno detras del otro. A la derecha y hacia el centro j = 3; enemy_formation_[j].number_of_enemies = 4; incX = BALLOON_WIDTH_2 + 1; incTime = 10; for (int i = 0; i < enemy_formation_[j].number_of_enemies; i++) { enemy_formation_[j].init[i].x = x2_100 - (i * incX); enemy_formation_[j].init[i].y = y2; enemy_formation_[j].init[i].vel_x = BALLOON_VELX_NEGATIVE; enemy_formation_[j].init[i].kind = BALLOON_2; enemy_formation_[j].init[i].creation_counter = creationTime - (incTime * i); } // #04 - Tres enemigos BALLOON3. 0, 25, 50. Hacia la derecha j = 4; enemy_formation_[j].number_of_enemies = 3; incX = BALLOON_WIDTH_3 * 2; incTime = 10; for (int i = 0; i < enemy_formation_[j].number_of_enemies; i++) { enemy_formation_[j].init[i].x = x3_0 + (i * incX); enemy_formation_[j].init[i].y = y3; enemy_formation_[j].init[i].vel_x = BALLOON_VELX_POSITIVE; enemy_formation_[j].init[i].kind = BALLOON_3; enemy_formation_[j].init[i].creation_counter = creationTime - (incTime * i); } // #05 - Tres enemigos BALLOON3. 50, 75, 100. Hacia la izquierda j = 5; enemy_formation_[j].number_of_enemies = 3; incX = BALLOON_WIDTH_3 * 2; incTime = 10; for (int i = 0; i < enemy_formation_[j].number_of_enemies; i++) { enemy_formation_[j].init[i].x = x3_100 - (i * incX); enemy_formation_[j].init[i].y = y3; enemy_formation_[j].init[i].vel_x = BALLOON_VELX_NEGATIVE; enemy_formation_[j].init[i].kind = BALLOON_3; enemy_formation_[j].init[i].creation_counter = creationTime - (incTime * i); } // #06 - Tres enemigos BALLOON3. 0, 0, 0. Hacia la derecha j = 6; enemy_formation_[j].number_of_enemies = 3; incX = BALLOON_WIDTH_3 + 1; incTime = 10; for (int i = 0; i < enemy_formation_[j].number_of_enemies; i++) { enemy_formation_[j].init[i].x = x3_0 + (i * incX); enemy_formation_[j].init[i].y = y3; enemy_formation_[j].init[i].vel_x = BALLOON_VELX_POSITIVE; enemy_formation_[j].init[i].kind = BALLOON_3; enemy_formation_[j].init[i].creation_counter = creationTime - (incTime * i); } // #07 - Tres enemigos BALLOON3. 100, 100, 100. Hacia la izquierda j = 7; enemy_formation_[j].number_of_enemies = 3; incX = BALLOON_WIDTH_3 + 1; incTime = 10; for (int i = 0; i < enemy_formation_[j].number_of_enemies; i++) { enemy_formation_[j].init[i].x = x3_100 - (i * incX); enemy_formation_[j].init[i].y = y3; enemy_formation_[j].init[i].vel_x = BALLOON_VELX_NEGATIVE; enemy_formation_[j].init[i].kind = BALLOON_3; enemy_formation_[j].init[i].creation_counter = creationTime - (incTime * i); } // #08 - Seis enemigos BALLOON1. 0, 0, 0, 0, 0, 0. Hacia la derecha j = 8; enemy_formation_[j].number_of_enemies = 6; incX = BALLOON_WIDTH_1 + 1; incTime = 10; for (int i = 0; i < enemy_formation_[j].number_of_enemies; i++) { enemy_formation_[j].init[i].x = x1_0 + (i * incX); enemy_formation_[j].init[i].y = y1; enemy_formation_[j].init[i].vel_x = BALLOON_VELX_POSITIVE; enemy_formation_[j].init[i].kind = BALLOON_1; enemy_formation_[j].init[i].creation_counter = creationTime - (incTime * i); } // #09 - Seis enemigos BALLOON1. 100, 100, 100, 100, 100, 100. Hacia la izquierda j = 9; enemy_formation_[j].number_of_enemies = 6; incX = BALLOON_WIDTH_1 + 1; incTime = 10; for (int i = 0; i < enemy_formation_[j].number_of_enemies; i++) { enemy_formation_[j].init[i].x = x1_100 - (i * incX); enemy_formation_[j].init[i].y = y1; enemy_formation_[j].init[i].vel_x = BALLOON_VELX_NEGATIVE; enemy_formation_[j].init[i].kind = BALLOON_1; enemy_formation_[j].init[i].creation_counter = creationTime - (incTime * i); } // #10 - Tres enemigos BALLOON4 seguidos desde la izquierda j = 10; enemy_formation_[j].number_of_enemies = 3; incX = BALLOON_WIDTH_4 + 1; incTime = 15; for (int i = 0; i < enemy_formation_[j].number_of_enemies; i++) { enemy_formation_[j].init[i].x = x4_0 + (i * incX); enemy_formation_[j].init[i].y = y4; enemy_formation_[j].init[i].vel_x = BALLOON_VELX_POSITIVE; enemy_formation_[j].init[i].kind = BALLOON_4; enemy_formation_[j].init[i].creation_counter = creationTime - (incTime * i); } // #11 - Tres enemigos BALLOON4 seguidos desde la derecha j = 11; enemy_formation_[j].number_of_enemies = 3; incX = BALLOON_WIDTH_4 + 1; incTime = 15; for (int i = 0; i < enemy_formation_[j].number_of_enemies; i++) { enemy_formation_[j].init[i].x = x4_100 - (i * incX); enemy_formation_[j].init[i].y = y4; enemy_formation_[j].init[i].vel_x = BALLOON_VELX_NEGATIVE; enemy_formation_[j].init[i].kind = BALLOON_4; enemy_formation_[j].init[i].creation_counter = creationTime - (incTime * i); } // #12 - Seis enemigos BALLOON2 uno detras del otro. A la izquierda y hacia el centro j = 12; enemy_formation_[j].number_of_enemies = 6; incX = BALLOON_WIDTH_2 + 1; incTime = 10; for (int i = 0; i < enemy_formation_[j].number_of_enemies; i++) { enemy_formation_[j].init[i].x = x2_0 + (i * incX); enemy_formation_[j].init[i].y = y2; enemy_formation_[j].init[i].vel_x = BALLOON_VELX_POSITIVE; enemy_formation_[j].init[i].kind = BALLOON_2; enemy_formation_[j].init[i].creation_counter = creationTime - (incTime * i); } // #13 - Seis enemigos BALLOON2 uno detras del otro. A la derecha y hacia el centro j = 13; enemy_formation_[j].number_of_enemies = 6; incX = BALLOON_WIDTH_2 + 1; incTime = 10; for (int i = 0; i < enemy_formation_[j].number_of_enemies; i++) { enemy_formation_[j].init[i].x = x2_100 - (i * incX); enemy_formation_[j].init[i].y = y2; enemy_formation_[j].init[i].vel_x = BALLOON_VELX_NEGATIVE; enemy_formation_[j].init[i].kind = BALLOON_2; enemy_formation_[j].init[i].creation_counter = creationTime - (incTime * i); } // #14 - Cinco enemigos BALLOON3. Hacia la derecha. Separados j = 14; enemy_formation_[j].number_of_enemies = 5; incX = BALLOON_WIDTH_3 * 2; incTime = 10; for (int i = 0; i < enemy_formation_[j].number_of_enemies; i++) { enemy_formation_[j].init[i].x = x3_0 + (i * incX); enemy_formation_[j].init[i].y = y3; enemy_formation_[j].init[i].vel_x = BALLOON_VELX_POSITIVE; enemy_formation_[j].init[i].kind = BALLOON_3; enemy_formation_[j].init[i].creation_counter = creationTime - (incTime * i); } // #15 - Cinco enemigos BALLOON3. Hacia la izquierda. Separados j = 15; enemy_formation_[j].number_of_enemies = 5; incX = BALLOON_WIDTH_3 * 2; incTime = 10; for (int i = 0; i < enemy_formation_[j].number_of_enemies; i++) { enemy_formation_[j].init[i].x = x3_100 - (i * incX); enemy_formation_[j].init[i].y = y3; enemy_formation_[j].init[i].vel_x = BALLOON_VELX_NEGATIVE; enemy_formation_[j].init[i].kind = BALLOON_3; enemy_formation_[j].init[i].creation_counter = creationTime - (incTime * i); } // #16 - Cinco enemigos BALLOON3. Hacia la derecha. Juntos j = 16; enemy_formation_[j].number_of_enemies = 5; incX = BALLOON_WIDTH_3 + 1; incTime = 10; for (int i = 0; i < enemy_formation_[j].number_of_enemies; i++) { enemy_formation_[j].init[i].x = x3_0 + (i * incX); enemy_formation_[j].init[i].y = y3; enemy_formation_[j].init[i].vel_x = BALLOON_VELX_POSITIVE; enemy_formation_[j].init[i].kind = BALLOON_3; enemy_formation_[j].init[i].creation_counter = creationTime - (incTime * i); } // #17 - Cinco enemigos BALLOON3. Hacia la izquierda. Juntos j = 17; enemy_formation_[j].number_of_enemies = 5; incX = BALLOON_WIDTH_3 + 1; incTime = 10; for (int i = 0; i < enemy_formation_[j].number_of_enemies; i++) { enemy_formation_[j].init[i].x = x3_100 - (i * incX); enemy_formation_[j].init[i].y = y3; enemy_formation_[j].init[i].vel_x = BALLOON_VELX_NEGATIVE; enemy_formation_[j].init[i].kind = BALLOON_3; enemy_formation_[j].init[i].creation_counter = creationTime - (incTime * i); } // #18 - Doce enemigos BALLOON1. Hacia la derecha. Juntos j = 18; enemy_formation_[j].number_of_enemies = 12; incX = BALLOON_WIDTH_1 + 1; incTime = 10; for (int i = 0; i < enemy_formation_[j].number_of_enemies; i++) { enemy_formation_[j].init[i].x = x1_0 + (i * incX); enemy_formation_[j].init[i].y = y1; enemy_formation_[j].init[i].vel_x = BALLOON_VELX_POSITIVE; enemy_formation_[j].init[i].kind = BALLOON_1; enemy_formation_[j].init[i].creation_counter = creationTime - (incTime * i); } // #19 - Doce enemigos BALLOON1. Hacia la izquierda. Juntos j = 19; enemy_formation_[j].number_of_enemies = 12; incX = BALLOON_WIDTH_1 + 1; incTime = 10; for (int i = 0; i < enemy_formation_[j].number_of_enemies; i++) { enemy_formation_[j].init[i].x = x1_100 - (i * incX); enemy_formation_[j].init[i].y = y1; enemy_formation_[j].init[i].vel_x = BALLOON_VELX_NEGATIVE; enemy_formation_[j].init[i].kind = BALLOON_1; enemy_formation_[j].init[i].creation_counter = creationTime - (incTime * i); } // #20 - Dos enemigos BALLOON4 seguidos desde la izquierda/derecha. Simetricos j = 20; enemy_formation_[j].number_of_enemies = 4; incX = BALLOON_WIDTH_4 + 1; incTime = 0; for (int i = 0; i < enemy_formation_[j].number_of_enemies; i++) { const int half = enemy_formation_[j].number_of_enemies / 2; if (i < half) { enemy_formation_[j].init[i].x = x4_0 + (i * incX); enemy_formation_[j].init[i].vel_x = BALLOON_VELX_POSITIVE; } else { enemy_formation_[j].init[i].x = x4_100 - ((i - half) * incX); enemy_formation_[j].init[i].vel_x = BALLOON_VELX_NEGATIVE; } enemy_formation_[j].init[i].y = y4; enemy_formation_[j].init[i].kind = BALLOON_4; enemy_formation_[j].init[i].creation_counter = creationTime + (incTime * i); } // #21 - Diez enemigos BALLOON2 uno detras del otro. Izquierda/derecha. Simetricos j = 21; enemy_formation_[j].number_of_enemies = 10; incX = BALLOON_WIDTH_2 + 1; incTime = 3; for (int i = 0; i < enemy_formation_[j].number_of_enemies; i++) { const int half = enemy_formation_[j].number_of_enemies / 2; if (i < half) { enemy_formation_[j].init[i].x = x2_0 + (i * incX); enemy_formation_[j].init[i].vel_x = BALLOON_VELX_POSITIVE; enemy_formation_[j].init[i].creation_counter = (creationTime) - (incTime * i); } else { enemy_formation_[j].init[i].x = x2_100 - ((i - half) * incX); enemy_formation_[j].init[i].vel_x = BALLOON_VELX_NEGATIVE; enemy_formation_[j].init[i].creation_counter = (creationTime) - (incTime * (i - half)); } enemy_formation_[j].init[i].y = y2; enemy_formation_[j].init[i].kind = BALLOON_2; } // #22 - Diez enemigos BALLOON3. Hacia la derecha/izquierda. Separados. Simetricos j = 22; enemy_formation_[j].number_of_enemies = 10; incX = BALLOON_WIDTH_3 * 2; incTime = 10; for (int i = 0; i < enemy_formation_[j].number_of_enemies; i++) { const int half = enemy_formation_[j].number_of_enemies / 2; if (i < half) { enemy_formation_[j].init[i].x = x3_0 + (i * incX); enemy_formation_[j].init[i].vel_x = BALLOON_VELX_POSITIVE; enemy_formation_[j].init[i].creation_counter = (creationTime) - (incTime * i); } else { enemy_formation_[j].init[i].x = x3_100 - ((i - half) * incX); enemy_formation_[j].init[i].vel_x = BALLOON_VELX_NEGATIVE; enemy_formation_[j].init[i].creation_counter = (creationTime) - (incTime * (i - half)); } enemy_formation_[j].init[i].y = y3; enemy_formation_[j].init[i].kind = BALLOON_3; } // #23 - Diez enemigos BALLOON3. Hacia la derecha. Juntos. Simetricos j = 23; enemy_formation_[j].number_of_enemies = 10; incX = BALLOON_WIDTH_3 + 1; incTime = 10; for (int i = 0; i < enemy_formation_[j].number_of_enemies; i++) { const int half = enemy_formation_[j].number_of_enemies / 2; if (i < half) { enemy_formation_[j].init[i].x = x3_0 + (i * incX); enemy_formation_[j].init[i].vel_x = BALLOON_VELX_POSITIVE; enemy_formation_[j].init[i].creation_counter = (creationTime) - (incTime * i); } else { enemy_formation_[j].init[i].x = x3_100 - ((i - half) * incX); enemy_formation_[j].init[i].vel_x = BALLOON_VELX_NEGATIVE; enemy_formation_[j].init[i].creation_counter = (creationTime) - (incTime * (i - half)); } enemy_formation_[j].init[i].y = y3; enemy_formation_[j].init[i].kind = BALLOON_3; } // #24 - Treinta enemigos BALLOON1. Del centro hacia los extremos. Juntos. Simetricos j = 24; enemy_formation_[j].number_of_enemies = 30; incX = 0; incTime = 5; for (int i = 0; i < enemy_formation_[j].number_of_enemies; i++) { const int half = enemy_formation_[j].number_of_enemies / 2; if (i < half) { enemy_formation_[j].init[i].x = x1_50; enemy_formation_[j].init[i].vel_x = BALLOON_VELX_POSITIVE; enemy_formation_[j].init[i].creation_counter = (creationTime) + (incTime * i); } else { enemy_formation_[j].init[i].x = x1_50; enemy_formation_[j].init[i].vel_x = BALLOON_VELX_NEGATIVE; enemy_formation_[j].init[i].creation_counter = (creationTime) + (incTime * (i - half)); } enemy_formation_[j].init[i].y = y1; enemy_formation_[j].init[i].kind = BALLOON_1; } // #25 - Treinta enemigos BALLOON1. Del centro hacia adentro. Juntos. Simetricos j = 25; enemy_formation_[j].number_of_enemies = 30; incX = BALLOON_WIDTH_1 + 1; incTime = 5; for (int i = 0; i < enemy_formation_[j].number_of_enemies; i++) { const int half = enemy_formation_[j].number_of_enemies / 2; if (i < half) { enemy_formation_[j].init[i].x = x1_50 + 20; enemy_formation_[j].init[i].vel_x = BALLOON_VELX_NEGATIVE; enemy_formation_[j].init[i].creation_counter = (creationTime) - (incTime * i); } else { enemy_formation_[j].init[i].x = x1_50 - 20; enemy_formation_[j].init[i].vel_x = BALLOON_VELX_POSITIVE; enemy_formation_[j].init[i].creation_counter = (creationTime) - (incTime * (i - half)); } enemy_formation_[j].init[i].y = y1; enemy_formation_[j].init[i].kind = BALLOON_1; } // Crea las mismas formaciones pero con hexagonos a partir de la posición 50 del vector for (int k = 0; k < j + 1; k++) { enemy_formation_[k + 50].number_of_enemies = enemy_formation_[k].number_of_enemies; for (int i = 0; i < enemy_formation_[k + 50].number_of_enemies; i++) { enemy_formation_[k + 50].init[i].x = enemy_formation_[k].init[i].x; enemy_formation_[k + 50].init[i].y = enemy_formation_[k].init[i].y; enemy_formation_[k + 50].init[i].vel_x = enemy_formation_[k].init[i].vel_x; enemy_formation_[k + 50].init[i].creation_counter = enemy_formation_[k].init[i].creation_counter; enemy_formation_[k + 50].init[i].kind = enemy_formation_[k].init[i].kind + 4; } } // TEST enemy_formation_[99].number_of_enemies = 4; enemy_formation_[99].init[0].x = 10; enemy_formation_[99].init[0].y = y1; enemy_formation_[99].init[0].vel_x = 0; enemy_formation_[99].init[0].kind = BALLOON_1; enemy_formation_[99].init[0].creation_counter = 200; enemy_formation_[99].init[1].x = 50; enemy_formation_[99].init[1].y = y1; enemy_formation_[99].init[1].vel_x = 0; enemy_formation_[99].init[1].kind = BALLOON_2; enemy_formation_[99].init[1].creation_counter = 200; enemy_formation_[99].init[2].x = 90; enemy_formation_[99].init[2].y = y1; enemy_formation_[99].init[2].vel_x = 0; enemy_formation_[99].init[2].kind = BALLOON_3; enemy_formation_[99].init[2].creation_counter = 200; enemy_formation_[99].init[3].x = 140; enemy_formation_[99].init[3].y = y1; enemy_formation_[99].init[3].vel_x = 0; enemy_formation_[99].init[3].kind = BALLOON_4; enemy_formation_[99].init[3].creation_counter = 200; } // Inicializa los conjuntos de formaciones void EnemyFormations::initEnemyPools() { // EnemyPool #0 enemy_pool_[0].set[0] = &enemy_formation_[0]; enemy_pool_[0].set[1] = &enemy_formation_[1]; enemy_pool_[0].set[2] = &enemy_formation_[2]; enemy_pool_[0].set[3] = &enemy_formation_[3]; enemy_pool_[0].set[4] = &enemy_formation_[4]; enemy_pool_[0].set[5] = &enemy_formation_[5]; enemy_pool_[0].set[6] = &enemy_formation_[6]; enemy_pool_[0].set[7] = &enemy_formation_[7]; enemy_pool_[0].set[8] = &enemy_formation_[8]; enemy_pool_[0].set[9] = &enemy_formation_[9]; // EnemyPool #1 enemy_pool_[1].set[0] = &enemy_formation_[10]; enemy_pool_[1].set[1] = &enemy_formation_[11]; enemy_pool_[1].set[2] = &enemy_formation_[12]; enemy_pool_[1].set[3] = &enemy_formation_[13]; enemy_pool_[1].set[4] = &enemy_formation_[14]; enemy_pool_[1].set[5] = &enemy_formation_[15]; enemy_pool_[1].set[6] = &enemy_formation_[16]; enemy_pool_[1].set[7] = &enemy_formation_[17]; enemy_pool_[1].set[8] = &enemy_formation_[18]; enemy_pool_[1].set[9] = &enemy_formation_[19]; // EnemyPool #2 enemy_pool_[2].set[0] = &enemy_formation_[0]; enemy_pool_[2].set[1] = &enemy_formation_[1]; enemy_pool_[2].set[2] = &enemy_formation_[2]; enemy_pool_[2].set[3] = &enemy_formation_[3]; enemy_pool_[2].set[4] = &enemy_formation_[4]; enemy_pool_[2].set[5] = &enemy_formation_[55]; enemy_pool_[2].set[6] = &enemy_formation_[56]; enemy_pool_[2].set[7] = &enemy_formation_[57]; enemy_pool_[2].set[8] = &enemy_formation_[58]; enemy_pool_[2].set[9] = &enemy_formation_[59]; // EnemyPool #3 enemy_pool_[3].set[0] = &enemy_formation_[50]; enemy_pool_[3].set[1] = &enemy_formation_[51]; enemy_pool_[3].set[2] = &enemy_formation_[52]; enemy_pool_[3].set[3] = &enemy_formation_[53]; enemy_pool_[3].set[4] = &enemy_formation_[54]; enemy_pool_[3].set[5] = &enemy_formation_[5]; enemy_pool_[3].set[6] = &enemy_formation_[6]; enemy_pool_[3].set[7] = &enemy_formation_[7]; enemy_pool_[3].set[8] = &enemy_formation_[8]; enemy_pool_[3].set[9] = &enemy_formation_[9]; // EnemyPool #4 enemy_pool_[4].set[0] = &enemy_formation_[60]; enemy_pool_[4].set[1] = &enemy_formation_[61]; enemy_pool_[4].set[2] = &enemy_formation_[62]; enemy_pool_[4].set[3] = &enemy_formation_[63]; enemy_pool_[4].set[4] = &enemy_formation_[64]; enemy_pool_[4].set[5] = &enemy_formation_[65]; enemy_pool_[4].set[6] = &enemy_formation_[66]; enemy_pool_[4].set[7] = &enemy_formation_[67]; enemy_pool_[4].set[8] = &enemy_formation_[68]; enemy_pool_[4].set[9] = &enemy_formation_[69]; // EnemyPool #5 enemy_pool_[5].set[0] = &enemy_formation_[10]; enemy_pool_[5].set[1] = &enemy_formation_[61]; enemy_pool_[5].set[2] = &enemy_formation_[12]; enemy_pool_[5].set[3] = &enemy_formation_[63]; enemy_pool_[5].set[4] = &enemy_formation_[14]; enemy_pool_[5].set[5] = &enemy_formation_[65]; enemy_pool_[5].set[6] = &enemy_formation_[16]; enemy_pool_[5].set[7] = &enemy_formation_[67]; enemy_pool_[5].set[8] = &enemy_formation_[18]; enemy_pool_[5].set[9] = &enemy_formation_[69]; // EnemyPool #6 enemy_pool_[6].set[0] = &enemy_formation_[60]; enemy_pool_[6].set[1] = &enemy_formation_[11]; enemy_pool_[6].set[2] = &enemy_formation_[62]; enemy_pool_[6].set[3] = &enemy_formation_[13]; enemy_pool_[6].set[4] = &enemy_formation_[64]; enemy_pool_[6].set[5] = &enemy_formation_[15]; enemy_pool_[6].set[6] = &enemy_formation_[66]; enemy_pool_[6].set[7] = &enemy_formation_[17]; enemy_pool_[6].set[8] = &enemy_formation_[68]; enemy_pool_[6].set[9] = &enemy_formation_[19]; // EnemyPool #7 enemy_pool_[7].set[0] = &enemy_formation_[20]; enemy_pool_[7].set[1] = &enemy_formation_[21]; enemy_pool_[7].set[2] = &enemy_formation_[22]; enemy_pool_[7].set[3] = &enemy_formation_[23]; enemy_pool_[7].set[4] = &enemy_formation_[24]; enemy_pool_[7].set[5] = &enemy_formation_[65]; enemy_pool_[7].set[6] = &enemy_formation_[66]; enemy_pool_[7].set[7] = &enemy_formation_[67]; enemy_pool_[7].set[8] = &enemy_formation_[68]; enemy_pool_[7].set[9] = &enemy_formation_[69]; // EnemyPool #8 enemy_pool_[8].set[0] = &enemy_formation_[70]; enemy_pool_[8].set[1] = &enemy_formation_[71]; enemy_pool_[8].set[2] = &enemy_formation_[72]; enemy_pool_[8].set[3] = &enemy_formation_[73]; enemy_pool_[8].set[4] = &enemy_formation_[74]; enemy_pool_[8].set[5] = &enemy_formation_[15]; enemy_pool_[8].set[6] = &enemy_formation_[16]; enemy_pool_[8].set[7] = &enemy_formation_[17]; enemy_pool_[8].set[8] = &enemy_formation_[18]; enemy_pool_[8].set[9] = &enemy_formation_[19]; // EnemyPool #9 enemy_pool_[9].set[0] = &enemy_formation_[20]; enemy_pool_[9].set[1] = &enemy_formation_[21]; enemy_pool_[9].set[2] = &enemy_formation_[22]; enemy_pool_[9].set[3] = &enemy_formation_[23]; enemy_pool_[9].set[4] = &enemy_formation_[24]; enemy_pool_[9].set[5] = &enemy_formation_[70]; enemy_pool_[9].set[6] = &enemy_formation_[71]; enemy_pool_[9].set[7] = &enemy_formation_[72]; enemy_pool_[9].set[8] = &enemy_formation_[73]; enemy_pool_[9].set[9] = &enemy_formation_[74]; } // Inicializa las fases del juego void EnemyFormations::initGameStages() { // STAGE 1 stage_[0].number = 1; stage_[0].power_to_complete = 200; stage_[0].min_menace = 7 + (4 * 1); stage_[0].max_menace = 7 + (4 * 3); stage_[0].enemy_pool = &enemy_pool_[0]; // STAGE 2 stage_[1].number = 2; stage_[1].power_to_complete = 300; stage_[1].min_menace = 7 + (4 * 2); stage_[1].max_menace = 7 + (4 * 4); stage_[1].enemy_pool = &enemy_pool_[1]; // STAGE 3 stage_[2].number = 3; stage_[2].power_to_complete = 600; stage_[2].min_menace = 7 + (4 * 3); stage_[2].max_menace = 7 + (4 * 5); stage_[2].enemy_pool = &enemy_pool_[2]; // STAGE 4 stage_[3].number = 4; stage_[3].power_to_complete = 600; stage_[3].min_menace = 7 + (4 * 3); stage_[3].max_menace = 7 + (4 * 5); stage_[3].enemy_pool = &enemy_pool_[3]; // STAGE 5 stage_[4].number = 5; stage_[4].power_to_complete = 600; stage_[4].min_menace = 7 + (4 * 4); stage_[4].max_menace = 7 + (4 * 6); stage_[4].enemy_pool = &enemy_pool_[4]; // STAGE 6 stage_[5].number = 6; stage_[5].power_to_complete = 600; stage_[5].min_menace = 7 + (4 * 4); stage_[5].max_menace = 7 + (4 * 6); stage_[5].enemy_pool = &enemy_pool_[5]; // STAGE 7 stage_[6].number = 7; stage_[6].power_to_complete = 650; stage_[6].min_menace = 7 + (4 * 5); stage_[6].max_menace = 7 + (4 * 7); stage_[6].enemy_pool = &enemy_pool_[6]; // STAGE 8 stage_[7].number = 8; stage_[7].power_to_complete = 750; stage_[7].min_menace = 7 + (4 * 5); stage_[7].max_menace = 7 + (4 * 7); stage_[7].enemy_pool = &enemy_pool_[7]; // STAGE 9 stage_[8].number = 9; stage_[8].power_to_complete = 850; stage_[8].min_menace = 7 + (4 * 6); stage_[8].max_menace = 7 + (4 * 8); stage_[8].enemy_pool = &enemy_pool_[8]; // STAGE 10 stage_[9].number = 10; stage_[9].power_to_complete = 950; stage_[9].min_menace = 7 + (4 * 7); stage_[9].max_menace = 7 + (4 * 10); stage_[9].enemy_pool = &enemy_pool_[9]; } // Devuelve una fase Stage EnemyFormations::getStage(int index) const { return stage_[index]; }