From 2e606bf160363b3b36e3691c055c451a63bb5386 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Mon, 21 Jul 2025 00:30:19 +0200 Subject: [PATCH] treballant en el format del fitxer balloons_formations.txt --- data/config/balloon_formations.txt | 390 ++++++++++++++--------------- source/balloon_formations.cpp | 59 +++-- source/utils.h | 2 +- 3 files changed, 228 insertions(+), 223 deletions(-) diff --git a/data/config/balloon_formations.txt b/data/config/balloon_formations.txt index 6b2dd03..cbb2c8a 100644 --- a/data/config/balloon_formations.txt +++ b/data/config/balloon_formations.txt @@ -1,277 +1,277 @@ # Archivo de configuración de formaciones de globos -# Formato por línea: x, y, vel_x, tipo, tamaño, tiempo_creacion +# Formato por línea: x, desp, y, vel_x, tipo, tamaño, tiempo_creacion # Variables disponibles: # X1_0, X1_50, X1_100, X2_0, X2_100, X3_0, X3_100, X4_0, X4_100 -# QUARTER1_X4, QUARTER3_X4, Y_BASE +# QUARTER1_X4, QUARTER3_X4, DEFAULT_POS_Y # BALLOON_SIZE_0, BALLOON_SIZE_1, BALLOON_SIZE_2, BALLOON_SIZE_3 -# VEL_POSITIVE, VEL_NEGATIVE +# RIGHT, LEFT formation: 0 # Dos enemigos BALLOON4 uno a cada extremo -X4_0, Y_BASE, VEL_POSITIVE, BALLOON, SIZE4, 300 -X4_100, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE4, 300 +X4_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE4, 300 +X4_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE4, 300 formation: 1 # Dos enemigos BALLOON4 uno a cada cuarto. Ambos van hacia el centro -QUARTER1_X4, Y_BASE, VEL_POSITIVE, BALLOON, SIZE4, 300 -QUARTER3_X4, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE4, 300 +QUARTER1_X4, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE4, 300 +QUARTER3_X4, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE4, 300 formation: 2 # Cuatro enemigos BALLOON2 uno detrás del otro. A la izquierda y hacia el centro -X2_0, Y_BASE, VEL_POSITIVE, BALLOON, SIZE2, 300 -X2_0 + BALLOON_SIZE_1 + 1, Y_BASE, VEL_POSITIVE, BALLOON, SIZE2, 290 -X2_0 + BALLOON_SIZE_1 * 2 + 2, Y_BASE, VEL_POSITIVE, BALLOON, SIZE2, 280 -X2_0 + BALLOON_SIZE_1 * 3 + 3, Y_BASE, VEL_POSITIVE, BALLOON, SIZE2, 270 +X2_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE2, 300 +X2_0, 1, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE2, 290 +X2_0, 2, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE2, 280 +X2_0, 3, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE2, 270 formation: 3 # Cuatro enemigos BALLOON2 uno detrás del otro. A la derecha y hacia el centro -X2_100, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE2, 300 -X2_100 - BALLOON_SIZE_1 - 1, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE2, 290 -X2_100 - BALLOON_SIZE_1 * 2 - 2, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE2, 280 -X2_100 - BALLOON_SIZE_1 * 3 - 3, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE2, 270 +X2_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE2, 300 +X2_100, -1, DEFAULT_POS_Y, LEFT, BALLOON, SIZE2, 290 +X2_100, -2, DEFAULT_POS_Y, LEFT, BALLOON, SIZE2, 280 +X2_100, -3, DEFAULT_POS_Y, LEFT, BALLOON, SIZE2, 270 formation: 4 # Tres enemigos BALLOON3. 0, 25, 50. Hacia la derecha -X3_0, Y_BASE, VEL_POSITIVE, BALLOON, SIZE3, 300 -X3_0 + BALLOON_SIZE_2 * 2, Y_BASE, VEL_POSITIVE, BALLOON, SIZE3, 290 -X3_0 + BALLOON_SIZE_2 * 4, Y_BASE, VEL_POSITIVE, BALLOON, SIZE3, 280 +X3_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 300 +X3_0, 2, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 290 +X3_0, 4, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 280 formation: 5 # Tres enemigos BALLOON3. 50, 75, 100. Hacia la izquierda -X3_100, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE3, 300 -X3_100 - BALLOON_SIZE_2 * 2, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE3, 290 -X3_100 - BALLOON_SIZE_2 * 4, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE3, 280 +X3_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 300 +X3_100, -2, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 290 +X3_100, -4, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 280 formation: 6 # Tres enemigos BALLOON3. 0, 0, 0. Hacia la derecha -X3_0, Y_BASE, VEL_POSITIVE, BALLOON, SIZE3, 300 -X3_0 + BALLOON_SIZE_2 + 1, Y_BASE, VEL_POSITIVE, BALLOON, SIZE3, 290 -X3_0 + BALLOON_SIZE_2 * 2 + 2, Y_BASE, VEL_POSITIVE, BALLOON, SIZE3, 280 +X3_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 300 +X3_0, 1, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 290 +X3_0, 2, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 280 formation: 7 # Tres enemigos BALLOON3. 100, 100, 100. Hacia la izquierda -X3_100, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE3, 300 -X3_100 - BALLOON_SIZE_2 - 1, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE3, 290 -X3_100 - BALLOON_SIZE_2 * 2 - 2, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE3, 280 +X3_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 300 +X3_100, -1, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 290 +X3_100, -2, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 280 formation: 8 # Seis enemigos BALLOON1. 0, 0, 0, 0, 0, 0. Hacia la derecha -X1_0, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 300 -X1_0 + BALLOON_SIZE_0 + 1, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 290 -X1_0 + BALLOON_SIZE_0 * 2 + 2, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 280 -X1_0 + BALLOON_SIZE_0 * 3 + 3, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 270 -X1_0 + BALLOON_SIZE_0 * 4 + 4, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 260 -X1_0 + BALLOON_SIZE_0 * 5 + 5, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 250 +X1_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 300 +X1_0, 1, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 290 +X1_0, 2, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 280 +X1_0, 3, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 270 +X1_0, 4, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 260 +X1_0, 5, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 250 formation: 9 # Seis enemigos BALLOON1. 100, 100, 100, 100, 100, 100. Hacia la izquierda -X1_100, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 300 -X1_100 - BALLOON_SIZE_0 - 1, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 290 -X1_100 - BALLOON_SIZE_0 * 2 - 2, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 280 -X1_100 - BALLOON_SIZE_0 * 3 - 3, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 270 -X1_100 - BALLOON_SIZE_0 * 4 - 4, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 260 -X1_100 - BALLOON_SIZE_0 * 5 - 5, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 250 +X1_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 300 +X1_100, -1, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 290 +X1_100, -2, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 280 +X1_100, -3, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 270 +X1_100, -4, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 260 +X1_100, -5, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 250 formation: 10 # Tres enemigos BALLOON4 seguidos desde la izquierda. Hacia la derecha -X4_0, Y_BASE, VEL_POSITIVE, BALLOON, SIZE4, 300 -X4_0 + BALLOON_SIZE_3 + 1, Y_BASE, VEL_POSITIVE, BALLOON, SIZE4, 285 -X4_0 + BALLOON_SIZE_3 * 2 + 2, Y_BASE, VEL_POSITIVE, BALLOON, SIZE4, 270 +X4_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE4, 300 +X4_0, 1, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE4, 285 +X4_0, 2, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE4, 270 formation: 11 # Tres enemigos BALLOON4 seguidos desde la derecha. Hacia la izquierda -X4_100, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE4, 300 -X4_100 - BALLOON_SIZE_3 - 1, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE4, 285 -X4_100 - BALLOON_SIZE_3 * 2 - 2, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE4, 270 +X4_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE4, 300 +X4_100, -1, DEFAULT_POS_Y, LEFT, BALLOON, SIZE4, 285 +X4_100, -2, DEFAULT_POS_Y, LEFT, BALLOON, SIZE4, 270 formation: 12 # Seis enemigos BALLOON2 uno detrás del otro. A la izquierda y hacia el centro -X2_0, Y_BASE, VEL_POSITIVE, BALLOON, SIZE2, 300 -X2_0 + BALLOON_SIZE_1 + 1, Y_BASE, VEL_POSITIVE, BALLOON, SIZE2, 290 -X2_0 + BALLOON_SIZE_1 * 2 + 2, Y_BASE, VEL_POSITIVE, BALLOON, SIZE2, 280 -X2_0 + BALLOON_SIZE_1 * 3 + 3, Y_BASE, VEL_POSITIVE, BALLOON, SIZE2, 270 -X2_0 + BALLOON_SIZE_1 * 4 + 4, Y_BASE, VEL_POSITIVE, BALLOON, SIZE2, 260 -X2_0 + BALLOON_SIZE_1 * 5 + 5, Y_BASE, VEL_POSITIVE, BALLOON, SIZE2, 250 +X2_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE2, 300 +X2_0, 1, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE2, 290 +X2_0, 2, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE2, 280 +X2_0, 3, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE2, 270 +X2_0, 4, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE2, 260 +X2_0, 5, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE2, 250 formation: 13 # Seis enemigos BALLOON2 uno detrás del otro. A la derecha y hacia el centro -X2_100, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE2, 300 -X2_100 - BALLOON_SIZE_1 - 1, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE2, 290 -X2_100 - BALLOON_SIZE_1 * 2 - 2, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE2, 280 -X2_100 - BALLOON_SIZE_1 * 3 - 3, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE2, 270 -X2_100 - BALLOON_SIZE_1 * 4 - 4, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE2, 260 -X2_100 - BALLOON_SIZE_1 * 5 - 5, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE2, 250 +X2_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE2, 300 +X2_100, -1, DEFAULT_POS_Y, LEFT, BALLOON, SIZE2, 290 +X2_100, -2, DEFAULT_POS_Y, LEFT, BALLOON, SIZE2, 280 +X2_100, -3, DEFAULT_POS_Y, LEFT, BALLOON, SIZE2, 270 +X2_100, -4, DEFAULT_POS_Y, LEFT, BALLOON, SIZE2, 260 +X2_100, -5, DEFAULT_POS_Y, LEFT, BALLOON, SIZE2, 250 formation: 14 # Cinco enemigos BALLOON3. Hacia la derecha. Separados -X3_0, Y_BASE, VEL_POSITIVE, BALLOON, SIZE3, 300 -X3_0 + BALLOON_SIZE_2 * 2, Y_BASE, VEL_POSITIVE, BALLOON, SIZE3, 290 -X3_0 + BALLOON_SIZE_2 * 4, Y_BASE, VEL_POSITIVE, BALLOON, SIZE3, 280 -X3_0 + BALLOON_SIZE_2 * 6, Y_BASE, VEL_POSITIVE, BALLOON, SIZE3, 270 -X3_0 + BALLOON_SIZE_2 * 8, Y_BASE, VEL_POSITIVE, BALLOON, SIZE3, 260 +X3_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 300 +X3_0, 2, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 290 +X3_0, 4, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 280 +X3_0, 6, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 270 +X3_0, 8, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 260 formation: 15 # Cinco enemigos BALLOON3. Hacia la izquierda. Separados -X3_100, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE3, 300 -X3_100 - BALLOON_SIZE_2 * 2, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE3, 290 -X3_100 - BALLOON_SIZE_2 * 4, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE3, 280 -X3_100 - BALLOON_SIZE_2 * 6, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE3, 270 -X3_100 - BALLOON_SIZE_2 * 8, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE3, 260 +X3_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 300 +X3_100, -2, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 290 +X3_100, -4, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 280 +X3_100, -6, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 270 +X3_100, -8, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 260 formation: 16 # Cinco enemigos BALLOON3. Hacia la derecha. Juntos -X3_0, Y_BASE, VEL_POSITIVE, BALLOON, SIZE3, 300 -X3_0 + BALLOON_SIZE_2 + 1, Y_BASE, VEL_POSITIVE, BALLOON, SIZE3, 290 -X3_0 + BALLOON_SIZE_2 * 2 + 2, Y_BASE, VEL_POSITIVE, BALLOON, SIZE3, 280 -X3_0 + BALLOON_SIZE_2 * 3 + 3, Y_BASE, VEL_POSITIVE, BALLOON, SIZE3, 270 -X3_0 + BALLOON_SIZE_2 * 4 + 4, Y_BASE, VEL_POSITIVE, BALLOON, SIZE3, 260 +X3_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 300 +X3_0, 1, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 290 +X3_0, 2, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 280 +X3_0, 3, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 270 +X3_0, 4, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 260 formation: 17 # Cinco enemigos BALLOON3. Hacia la izquierda. Juntos -X3_100, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE3, 300 -X3_100 - BALLOON_SIZE_2 - 1, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE3, 290 -X3_100 - BALLOON_SIZE_2 * 2 - 2, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE3, 280 -X3_100 - BALLOON_SIZE_2 * 3 - 3, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE3, 270 -X3_100 - BALLOON_SIZE_2 * 4 - 4, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE3, 260 +X3_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 300 +X3_100, -1, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 290 +X3_100, -2, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 280 +X3_100, -3, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 270 +X3_100, -4, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 260 formation: 18 # Doce enemigos BALLOON1. Hacia la derecha. Juntos -X1_0, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 300 -X1_0 + BALLOON_SIZE_0 + 1, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 290 -X1_0 + BALLOON_SIZE_0 * 2 + 2, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 280 -X1_0 + BALLOON_SIZE_0 * 3 + 3, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 270 -X1_0 + BALLOON_SIZE_0 * 4 + 4, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 260 -X1_0 + BALLOON_SIZE_0 * 5 + 5, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 250 -X1_0 + BALLOON_SIZE_0 * 6 + 6, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 240 -X1_0 + BALLOON_SIZE_0 * 7 + 7, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 230 -X1_0 + BALLOON_SIZE_0 * 8 + 8, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 220 -X1_0 + BALLOON_SIZE_0 * 9 + 9, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 210 -X1_0 + BALLOON_SIZE_0 * 10 + 10, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 200 -X1_0 + BALLOON_SIZE_0 * 11 + 11, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 190 +X1_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 300 +X1_0, 1, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 290 +X1_0, 2, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 280 +X1_0, 3, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 270 +X1_0, 4, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 260 +X1_0, 5, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 250 +X1_0, 6, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 240 +X1_0, 7, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 230 +X1_0, 8, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 220 +X1_0, 9, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 210 +X1_0, 10, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 200 +X1_0, 11, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 190 formation: 19 # Doce enemigos BALLOON1. Hacia la izquierda. Juntos -X1_100, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 300 -X1_100 - BALLOON_SIZE_0 - 1, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 290 -X1_100 - BALLOON_SIZE_0 * 2 - 2, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 280 -X1_100 - BALLOON_SIZE_0 * 3 - 3, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 270 -X1_100 - BALLOON_SIZE_0 * 4 - 4, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 260 -X1_100 - BALLOON_SIZE_0 * 5 - 5, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 250 -X1_100 - BALLOON_SIZE_0 * 6 - 6, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 240 -X1_100 - BALLOON_SIZE_0 * 7 - 7, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 230 -X1_100 - BALLOON_SIZE_0 * 8 - 8, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 220 -X1_100 - BALLOON_SIZE_0 * 9 - 9, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 210 -X1_100 - BALLOON_SIZE_0 * 10 - 10, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 200 -X1_100 - BALLOON_SIZE_0 * 11 - 11, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 190 +X1_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 300 +X1_100, -1, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 290 +X1_100, -2, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 280 +X1_100, -3, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 270 +X1_100, -4, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 260 +X1_100, -5, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 250 +X1_100, -6, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 240 +X1_100, -7, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 230 +X1_100, -8, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 220 +X1_100, -9, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 210 +X1_100, -10, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 200 +X1_100, -11, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 190 formation: 20 # Cuatro enemigos BALLOON4 seguidos desde la izquierda/derecha. Simétricos -X4_0, Y_BASE, VEL_POSITIVE, BALLOON, SIZE4, 300 -X4_0 + BALLOON_SIZE_3 + 1, Y_BASE, VEL_POSITIVE, BALLOON, SIZE4, 300 -X4_100, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE4, 300 -X4_100 - BALLOON_SIZE_3 - 1, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE4, 300 +X4_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE4, 300 +X4_0, 1, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE4, 300 +X4_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE4, 300 +X4_100, -1, DEFAULT_POS_Y, LEFT, BALLOON, SIZE4, 300 formation: 21 # Diez enemigos BALLOON2 uno detrás del otro. Izquierda/derecha. Simétricos -X2_0, Y_BASE, VEL_POSITIVE, BALLOON, SIZE2, 300 -X2_0 + BALLOON_SIZE_1 + 1, Y_BASE, VEL_POSITIVE, BALLOON, SIZE2, 297 -X2_0 + BALLOON_SIZE_1 * 2 + 2, Y_BASE, VEL_POSITIVE, BALLOON, SIZE2, 294 -X2_0 + BALLOON_SIZE_1 * 3 + 3, Y_BASE, VEL_POSITIVE, BALLOON, SIZE2, 291 -X2_0 + BALLOON_SIZE_1 * 4 + 4, Y_BASE, VEL_POSITIVE, BALLOON, SIZE2, 288 -X2_100, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE2, 300 -X2_100 - BALLOON_SIZE_1 - 1, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE2, 297 -X2_100 - BALLOON_SIZE_1 * 2 - 2, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE2, 294 -X2_100 - BALLOON_SIZE_1 * 3 - 3, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE2, 291 -X2_100 - BALLOON_SIZE_1 * 4 - 4, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE2, 288 +X2_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE2, 300 +X2_0, 1, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE2, 297 +X2_0, 2, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE2, 294 +X2_0, 3, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE2, 291 +X2_0, 4, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE2, 288 +X2_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE2, 300 +X2_100, -1, DEFAULT_POS_Y, LEFT, BALLOON, SIZE2, 297 +X2_100, -2, DEFAULT_POS_Y, LEFT, BALLOON, SIZE2, 294 +X2_100, -3, DEFAULT_POS_Y, LEFT, BALLOON, SIZE2, 291 +X2_100, -4, DEFAULT_POS_Y, LEFT, BALLOON, SIZE2, 288 formation: 22 # Diez enemigos BALLOON3. Hacia la derecha/izquierda. Separados. Simétricos -X3_0, Y_BASE, VEL_POSITIVE, BALLOON, SIZE3, 300 -X3_0 + BALLOON_SIZE_2 * 2, Y_BASE, VEL_POSITIVE, BALLOON, SIZE3, 290 -X3_0 + BALLOON_SIZE_2 * 4, Y_BASE, VEL_POSITIVE, BALLOON, SIZE3, 280 -X3_0 + BALLOON_SIZE_2 * 6, Y_BASE, VEL_POSITIVE, BALLOON, SIZE3, 270 -X3_0 + BALLOON_SIZE_2 * 8, Y_BASE, VEL_POSITIVE, BALLOON, SIZE3, 260 -X3_100, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE3, 300 -X3_100 - BALLOON_SIZE_2 * 2, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE3, 290 -X3_100 - BALLOON_SIZE_2 * 4, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE3, 280 -X3_100 - BALLOON_SIZE_2 * 6, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE3, 270 -X3_100 - BALLOON_SIZE_2 * 8, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE3, 260 +X3_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 300 +X3_0, 2, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 290 +X3_0, 4, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 280 +X3_0, 6, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 270 +X3_0, 8, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 260 +X3_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 300 +X3_100, -2, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 290 +X3_100, -4, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 280 +X3_100, -6, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 270 +X3_100, -8, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 260 formation: 23 # Diez enemigos BALLOON3. Hacia la derecha. Juntos. Simétricos -X3_0, Y_BASE, VEL_POSITIVE, BALLOON, SIZE3, 300 -X3_0 + BALLOON_SIZE_2 + 1, Y_BASE, VEL_POSITIVE, BALLOON, SIZE3, 290 -X3_0 + BALLOON_SIZE_2 * 2 + 2, Y_BASE, VEL_POSITIVE, BALLOON, SIZE3, 280 -X3_0 + BALLOON_SIZE_2 * 3 + 3, Y_BASE, VEL_POSITIVE, BALLOON, SIZE3, 270 -X3_0 + BALLOON_SIZE_2 * 4 + 4, Y_BASE, VEL_POSITIVE, BALLOON, SIZE3, 260 -X3_100, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE3, 300 -X3_100 - BALLOON_SIZE_2 - 1, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE3, 290 -X3_100 - BALLOON_SIZE_2 * 2 - 2, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE3, 280 -X3_100 - BALLOON_SIZE_2 * 3 - 3, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE3, 270 -X3_100 - BALLOON_SIZE_2 * 4 - 4, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE3, 260 +X3_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 300 +X3_0, 1, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 290 +X3_0, 2, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 280 +X3_0, 3, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 270 +X3_0, 4, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 260 +X3_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 300 +X3_100, -1, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 290 +X3_100, -2, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 280 +X3_100, -3, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 270 +X3_100, -4, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 260 formation: 24 # Treinta enemigos BALLOON1. Del centro hacia los extremos. Juntos. Simétricos -X1_50, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 300 -X1_50, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 305 -X1_50, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 310 -X1_50, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 315 -X1_50, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 320 -X1_50, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 325 -X1_50, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 330 -X1_50, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 335 -X1_50, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 340 -X1_50, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 345 -X1_50, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 350 -X1_50, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 355 -X1_50, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 300 -X1_50, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 305 -X1_50, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 310 -X1_50, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 315 -X1_50, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 320 -X1_50, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 325 -X1_50, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 330 -X1_50, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 335 -X1_50, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 340 -X1_50, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 345 -X1_50, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 350 -X1_50, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 355 -X1_50, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 360 -X1_50, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 360 -X1_50, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 365 -X1_50, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 365 -X1_50, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 370 -X1_50, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 370 +X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 300 +X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 305 +X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 310 +X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 315 +X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 320 +X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 325 +X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 330 +X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 335 +X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 340 +X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 345 +X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 350 +X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 355 +X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 300 +X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 305 +X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 310 +X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 315 +X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 320 +X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 325 +X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 330 +X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 335 +X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 340 +X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 345 +X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 350 +X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 355 +X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 360 +X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 360 +X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 365 +X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 365 +X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 370 +X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 370 formation: 25 # Treinta enemigos BALLOON1. Del centro hacia adentro. Juntos. Simétricos -X1_50 + 20, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 300 -X1_50 + 20, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 295 -X1_50 + 20, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 290 -X1_50 + 20, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 285 -X1_50 + 20, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 280 -X1_50 + 20, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 275 -X1_50 + 20, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 270 -X1_50 + 20, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 265 -X1_50 + 20, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 260 -X1_50 + 20, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 255 -X1_50 + 20, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 250 -X1_50 + 20, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 245 -X1_50 - 20, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 300 -X1_50 - 20, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 295 -X1_50 - 20, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 290 -X1_50 - 20, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 285 -X1_50 - 20, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 280 -X1_50 - 20, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 275 -X1_50 - 20, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 270 -X1_50 - 20, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 265 -X1_50 - 20, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 260 -X1_50 - 20, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 255 -X1_50 - 20, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 250 -X1_50 - 20, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 245 -X1_50 + 20, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 240 -X1_50 - 20, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 240 -X1_50 + 20, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 235 -X1_50 - 20, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 235 -X1_50 + 20, Y_BASE, VEL_NEGATIVE, BALLOON, SIZE1, 230 -X1_50 - 20, Y_BASE, VEL_POSITIVE, BALLOON, SIZE1, 230 +X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 300 +X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 295 +X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 290 +X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 285 +X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 280 +X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 275 +X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 270 +X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 265 +X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 260 +X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 255 +X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 250 +X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 245 +X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 300 +X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 295 +X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 290 +X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 285 +X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 280 +X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 275 +X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 270 +X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 265 +X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 260 +X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 255 +X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 250 +X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 245 +X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 240 +X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 240 +X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 235 +X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 235 +X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 230 +X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 230 diff --git a/source/balloon_formations.cpp b/source/balloon_formations.cpp index 16a850a..64d34cf 100644 --- a/source/balloon_formations.cpp +++ b/source/balloon_formations.cpp @@ -11,7 +11,7 @@ void BalloonFormations::initBalloonFormations() { // Calcular posiciones base - const int Y_BASE = param.game.play_area.rect.h - BALLOON_SPAWN_HEIGHT; + const int DEFAULT_POS_Y = param.game.play_area.rect.h - BALLOON_SPAWN_HEIGHT; const int X4_0 = param.game.play_area.rect.x; const int X4_100 = param.game.play_area.rect.w - BALLOON_SIZE[3]; @@ -40,13 +40,13 @@ void BalloonFormations::initBalloonFormations() { {"X4_100", X4_100}, {"QUARTER1_X4", QUARTER1_X4}, {"QUARTER3_X4", QUARTER3_X4}, - {"Y_BASE", Y_BASE}, + {"DEFAULT_POS_Y", DEFAULT_POS_Y}, {"BALLOON_SIZE_0", BALLOON_SIZE[0]}, {"BALLOON_SIZE_1", BALLOON_SIZE[1]}, {"BALLOON_SIZE_2", BALLOON_SIZE[2]}, {"BALLOON_SIZE_3", BALLOON_SIZE[3]}, - {"VEL_POSITIVE", BALLOON_VELX_POSITIVE}, - {"VEL_NEGATIVE", BALLOON_VELX_NEGATIVE}}; + {"RIGHT", BALLOON_VELX_POSITIVE}, + {"LEFT", BALLOON_VELX_NEGATIVE}}; balloon_formation_.reserve(NUMBER_OF_BALLOON_FORMATIONS); @@ -122,33 +122,38 @@ auto BalloonFormations::parseBalloonLine(const std::string& line, const std::map tokens.push_back(trim(token)); } - if (tokens.size() != 6) { + if (tokens.size() != 7) { return std::nullopt; } try { - float x = evaluateExpression(tokens[0], variables); - float y = evaluateExpression(tokens[1], variables); - float vel_x = evaluateExpression(tokens[2], variables); + int x = evaluateExpression(tokens[0], variables); + int desp = evaluateExpression(tokens[1], variables); + int y = evaluateExpression(tokens[2], variables); + float vel_x = evaluateExpression(tokens[3], variables); - BalloonType type = (tokens[3] == "BALLOON") ? BalloonType::BALLOON : BalloonType::FLOATER; + BalloonType type = (tokens[4] == "BALLOON") ? BalloonType::BALLOON : BalloonType::FLOATER; BalloonSize size; - if (tokens[4] == "SIZE1") { + if (tokens[5] == "SIZE1") { size = BalloonSize::SIZE1; - } else if (tokens[4] == "SIZE2") { + desp = desp * (BALLOON_SIZE[0] + 1); + } else if (tokens[5] == "SIZE2") { size = BalloonSize::SIZE2; - } else if (tokens[4] == "SIZE3") { + desp = desp * (BALLOON_SIZE[1] + 1); + } else if (tokens[5] == "SIZE3") { size = BalloonSize::SIZE3; - } else if (tokens[4] == "SIZE4") { + desp = desp * (BALLOON_SIZE[2] + 1); + } else if (tokens[5] == "SIZE4") { size = BalloonSize::SIZE4; + desp = desp * (BALLOON_SIZE[3] + 1); } else { return std::nullopt; } - int creation_time = evaluateExpression(tokens[5], variables); + int creation_time = evaluateExpression(tokens[6], variables); - return BalloonFormationParams(x, y, vel_x, type, size, creation_time); + return BalloonFormationParams(x + desp, y, vel_x, type, size, creation_time); } catch (const std::exception&) { return std::nullopt; } @@ -241,15 +246,15 @@ void BalloonFormations::loadDefaultFormations() { // Código de fallback con algunas formaciones básicas hardcodeadas // para que el juego funcione aunque falle la carga del archivo - const int Y_BASE = param.game.play_area.rect.h - BALLOON_SPAWN_HEIGHT; + const int DEFAULT_POS_Y = param.game.play_area.rect.h - BALLOON_SPAWN_HEIGHT; const int X4_0 = param.game.play_area.rect.x; const int X4_100 = param.game.play_area.rect.w - BALLOON_SIZE[3]; constexpr int CREATION_TIME = 300; // Formación básica #00 std::vector basic_formation = { - BalloonFormationParams(X4_0, Y_BASE, BALLOON_VELX_POSITIVE, BalloonType::BALLOON, BalloonSize::SIZE4, CREATION_TIME), - BalloonFormationParams(X4_100, Y_BASE, BALLOON_VELX_NEGATIVE, BalloonType::BALLOON, BalloonSize::SIZE4, CREATION_TIME)}; + BalloonFormationParams(X4_0, DEFAULT_POS_Y, BALLOON_VELX_POSITIVE, BalloonType::BALLOON, BalloonSize::SIZE4, CREATION_TIME), + BalloonFormationParams(X4_100, DEFAULT_POS_Y, BALLOON_VELX_NEGATIVE, BalloonType::BALLOON, BalloonSize::SIZE4, CREATION_TIME)}; balloon_formation_.emplace_back(2, basic_formation); } @@ -260,16 +265,16 @@ void BalloonFormations::initBalloonFormationPools() { // Set #0 balloon_formation_pool_.at(0) = { + &balloon_formation_.at(0), + &balloon_formation_.at(1), &balloon_formation_.at(2), - &balloon_formation_.at(2), - &balloon_formation_.at(2), - &balloon_formation_.at(2), - &balloon_formation_.at(2), - &balloon_formation_.at(2), - &balloon_formation_.at(2), - &balloon_formation_.at(2), - &balloon_formation_.at(2), - &balloon_formation_.at(2)}; + &balloon_formation_.at(3), + &balloon_formation_.at(4), + &balloon_formation_.at(5), + &balloon_formation_.at(6), + &balloon_formation_.at(7), + &balloon_formation_.at(8), + &balloon_formation_.at(9)}; // Set #1 balloon_formation_pool_.at(1) = { diff --git a/source/utils.h b/source/utils.h index 06dc388..a11940e 100644 --- a/source/utils.h +++ b/source/utils.h @@ -1,7 +1,7 @@ +// IWYU pragma: no_include #pragma once #include // Para Uint8, SDL_FRect, SDL_FPoint, SDL_Renderer -#include // Para abs #include // Para max, min #include // Para array