estandaritzats els globos a 0, 1, 2 i 3 (en lloc del mix que havia antes amb altres coses a 1, 2, 3 i 4)
balloon: passant const i enum a la part publica
@@ -3,275 +3,275 @@
|
||||
# Variables disponibles:
|
||||
# X1_0, X1_50, X1_100, X2_0, X2_100, X3_0, X3_100, X4_0, X4_100
|
||||
# QUARTER1_X4, QUARTER3_X4, DEFAULT_POS_Y
|
||||
# BALLOON_SIZE_0, BALLOON_SIZE_1, BALLOON_SIZE_2, BALLOON_SIZE_3
|
||||
# SIZE_0, SIZE_1, SIZE_2, SIZE_3
|
||||
# RIGHT, LEFT
|
||||
|
||||
formation: 0
|
||||
# Dos enemigos BALLOON4 uno a cada extremo
|
||||
X4_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE4, 0
|
||||
X4_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE4, 0
|
||||
# Dos enemigos BALLOON3 uno a cada extremo
|
||||
X4_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_3, 0
|
||||
X4_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_3, 0
|
||||
|
||||
formation: 1
|
||||
# Dos enemigos BALLOON4 uno a cada cuarto. Ambos van hacia el centro
|
||||
QUARTER1_X4, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE4, 0
|
||||
QUARTER3_X4, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE4, 0
|
||||
# Dos enemigos BALLOON3 uno a cada cuarto. Ambos van hacia el centro
|
||||
QUARTER1_X4, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_3, 0
|
||||
QUARTER3_X4, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_3, 0
|
||||
|
||||
formation: 2
|
||||
# Cuatro enemigos BALLOON2 uno detrás del otro. A la izquierda y hacia el centro
|
||||
X2_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE2, 30
|
||||
X2_0, 1, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE2, 20
|
||||
X2_0, 2, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE2, 10
|
||||
X2_0, 3, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE2, 0
|
||||
# Cuatro enemigos BALLOON1 uno detrás del otro. A la izquierda y hacia el centro
|
||||
X2_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_1, 30
|
||||
X2_0, 1, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_1, 20
|
||||
X2_0, 2, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_1, 10
|
||||
X2_0, 3, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_1, 0
|
||||
|
||||
formation: 3
|
||||
# Cuatro enemigos BALLOON2 uno detrás del otro. A la derecha y hacia el centro
|
||||
X2_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE2, 30
|
||||
X2_100, -1, DEFAULT_POS_Y, LEFT, BALLOON, SIZE2, 20
|
||||
X2_100, -2, DEFAULT_POS_Y, LEFT, BALLOON, SIZE2, 10
|
||||
X2_100, -3, DEFAULT_POS_Y, LEFT, BALLOON, SIZE2, 0
|
||||
# Cuatro enemigos BALLOON1 uno detrás del otro. A la derecha y hacia el centro
|
||||
X2_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_1, 30
|
||||
X2_100, -1, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_1, 20
|
||||
X2_100, -2, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_1, 10
|
||||
X2_100, -3, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_1, 0
|
||||
|
||||
formation: 4
|
||||
# Tres enemigos BALLOON3. 0, 25, 50. Hacia la derecha
|
||||
X3_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 20
|
||||
X3_0, 2, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 10
|
||||
X3_0, 4, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 0
|
||||
# Tres enemigos BALLOON2. 0, 25, 50. Hacia la derecha
|
||||
X3_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_2, 20
|
||||
X3_0, 2, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_2, 10
|
||||
X3_0, 4, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_2, 0
|
||||
|
||||
formation: 5
|
||||
# Tres enemigos BALLOON3. 50, 75, 100. Hacia la izquierda
|
||||
X3_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 20
|
||||
X3_100, -2, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 10
|
||||
X3_100, -4, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 0
|
||||
# Tres enemigos BALLOON2. 50, 75, 100. Hacia la izquierda
|
||||
X3_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_2, 20
|
||||
X3_100, -2, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_2, 10
|
||||
X3_100, -4, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_2, 0
|
||||
|
||||
formation: 6
|
||||
# Tres enemigos BALLOON3. 0, 0, 0. Hacia la derecha
|
||||
X3_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 20
|
||||
X3_0, 1, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 10
|
||||
X3_0, 2, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 0
|
||||
# Tres enemigos BALLOON2. 0, 0, 0. Hacia la derecha
|
||||
X3_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_2, 20
|
||||
X3_0, 1, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_2, 10
|
||||
X3_0, 2, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_2, 0
|
||||
|
||||
formation: 7
|
||||
# Tres enemigos BALLOON3. 100, 100, 100. Hacia la izquierda
|
||||
X3_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 20
|
||||
X3_100, -1, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 10
|
||||
X3_100, -2, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 0
|
||||
# Tres enemigos BALLOON2. 100, 100, 100. Hacia la izquierda
|
||||
X3_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_2, 20
|
||||
X3_100, -1, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_2, 10
|
||||
X3_100, -2, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_2, 0
|
||||
|
||||
formation: 8
|
||||
# Seis enemigos BALLOON1. 0, 0, 0, 0, 0, 0. Hacia la derecha
|
||||
X1_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 50
|
||||
X1_0, 1, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 40
|
||||
X1_0, 2, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 30
|
||||
X1_0, 3, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 20
|
||||
X1_0, 4, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 10
|
||||
X1_0, 5, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 0
|
||||
# Seis enemigos BALLOON0. 0, 0, 0, 0, 0, 0. Hacia la derecha
|
||||
X1_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 50
|
||||
X1_0, 1, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 40
|
||||
X1_0, 2, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 30
|
||||
X1_0, 3, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 20
|
||||
X1_0, 4, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 10
|
||||
X1_0, 5, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 0
|
||||
|
||||
formation: 9
|
||||
# Seis enemigos BALLOON1. 100, 100, 100, 100, 100, 100. Hacia la izquierda
|
||||
X1_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 50
|
||||
X1_100, -1, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 40
|
||||
X1_100, -2, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 30
|
||||
X1_100, -3, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 20
|
||||
X1_100, -4, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 10
|
||||
X1_100, -5, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 0
|
||||
# Seis enemigos BALLOON0. 100, 100, 100, 100, 100, 100. Hacia la izquierda
|
||||
X1_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 50
|
||||
X1_100, -1, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 40
|
||||
X1_100, -2, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 30
|
||||
X1_100, -3, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 20
|
||||
X1_100, -4, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 10
|
||||
X1_100, -5, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 0
|
||||
|
||||
formation: 10
|
||||
# Tres enemigos BALLOON4 seguidos desde la izquierda. Hacia la derecha
|
||||
X4_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE4, 30
|
||||
X4_0, 1, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE4, 15
|
||||
X4_0, 2, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE4, 0
|
||||
# Tres enemigos BALLOON3 seguidos desde la izquierda. Hacia la derecha
|
||||
X4_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_3, 30
|
||||
X4_0, 1, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_3, 15
|
||||
X4_0, 2, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_3, 0
|
||||
|
||||
formation: 11
|
||||
# Tres enemigos BALLOON4 seguidos desde la derecha. Hacia la izquierda
|
||||
X4_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE4, 30
|
||||
X4_100, -1, DEFAULT_POS_Y, LEFT, BALLOON, SIZE4, 15
|
||||
X4_100, -2, DEFAULT_POS_Y, LEFT, BALLOON, SIZE4, 0
|
||||
# Tres enemigos BALLOON3 seguidos desde la derecha. Hacia la izquierda
|
||||
X4_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_3, 30
|
||||
X4_100, -1, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_3, 15
|
||||
X4_100, -2, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_3, 0
|
||||
|
||||
formation: 12
|
||||
# Seis enemigos BALLOON2 uno detrás del otro. A la izquierda y hacia el centro
|
||||
X2_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE2, 50
|
||||
X2_0, 1, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE2, 40
|
||||
X2_0, 2, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE2, 30
|
||||
X2_0, 3, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE2, 20
|
||||
X2_0, 4, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE2, 10
|
||||
X2_0, 5, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE2, 0
|
||||
# Seis enemigos BALLOON1 uno detrás del otro. A la izquierda y hacia el centro
|
||||
X2_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_1, 50
|
||||
X2_0, 1, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_1, 40
|
||||
X2_0, 2, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_1, 30
|
||||
X2_0, 3, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_1, 20
|
||||
X2_0, 4, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_1, 10
|
||||
X2_0, 5, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_1, 0
|
||||
|
||||
formation: 13
|
||||
# Seis enemigos BALLOON2 uno detrás del otro. A la derecha y hacia el centro
|
||||
X2_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE2, 50
|
||||
X2_100, -1, DEFAULT_POS_Y, LEFT, BALLOON, SIZE2, 40
|
||||
X2_100, -2, DEFAULT_POS_Y, LEFT, BALLOON, SIZE2, 30
|
||||
X2_100, -3, DEFAULT_POS_Y, LEFT, BALLOON, SIZE2, 20
|
||||
X2_100, -4, DEFAULT_POS_Y, LEFT, BALLOON, SIZE2, 10
|
||||
X2_100, -5, DEFAULT_POS_Y, LEFT, BALLOON, SIZE2, 0
|
||||
# Seis enemigos BALLOON1 uno detrás del otro. A la derecha y hacia el centro
|
||||
X2_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_1, 50
|
||||
X2_100, -1, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_1, 40
|
||||
X2_100, -2, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_1, 30
|
||||
X2_100, -3, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_1, 20
|
||||
X2_100, -4, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_1, 10
|
||||
X2_100, -5, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_1, 0
|
||||
|
||||
formation: 14
|
||||
# Cinco enemigos BALLOON3. Hacia la derecha. Separados
|
||||
X3_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 40
|
||||
X3_0, 2, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 30
|
||||
X3_0, 4, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 20
|
||||
X3_0, 6, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 10
|
||||
X3_0, 8, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 0
|
||||
# Cinco enemigos BALLOON2. Hacia la derecha. Separados
|
||||
X3_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_2, 40
|
||||
X3_0, 2, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_2, 30
|
||||
X3_0, 4, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_2, 20
|
||||
X3_0, 6, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_2, 10
|
||||
X3_0, 8, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_2, 0
|
||||
|
||||
formation: 15
|
||||
# Cinco enemigos BALLOON3. Hacia la izquierda. Separados
|
||||
X3_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 40
|
||||
X3_100, -2, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 30
|
||||
X3_100, -4, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 20
|
||||
X3_100, -6, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 10
|
||||
X3_100, -8, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 0
|
||||
# Cinco enemigos BALLOON2. Hacia la izquierda. Separados
|
||||
X3_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_2, 40
|
||||
X3_100, -2, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_2, 30
|
||||
X3_100, -4, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_2, 20
|
||||
X3_100, -6, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_2, 10
|
||||
X3_100, -8, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_2, 0
|
||||
|
||||
formation: 16
|
||||
# Cinco enemigos BALLOON3. Hacia la derecha. Juntos
|
||||
X3_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 40
|
||||
X3_0, 1, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 30
|
||||
X3_0, 2, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 20
|
||||
X3_0, 3, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 10
|
||||
X3_0, 4, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 0
|
||||
# Cinco enemigos BALLOON2. Hacia la derecha. Juntos
|
||||
X3_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_2, 40
|
||||
X3_0, 1, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_2, 30
|
||||
X3_0, 2, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_2, 20
|
||||
X3_0, 3, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_2, 10
|
||||
X3_0, 4, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_2, 0
|
||||
|
||||
formation: 17
|
||||
# Cinco enemigos BALLOON3. Hacia la izquierda. Juntos
|
||||
X3_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 40
|
||||
X3_100, -1, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 30
|
||||
X3_100, -2, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 20
|
||||
X3_100, -3, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 10
|
||||
X3_100, -4, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 0
|
||||
# Cinco enemigos BALLOON2. Hacia la izquierda. Juntos
|
||||
X3_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_2, 40
|
||||
X3_100, -1, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_2, 30
|
||||
X3_100, -2, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_2, 20
|
||||
X3_100, -3, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_2, 10
|
||||
X3_100, -4, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_2, 0
|
||||
|
||||
formation: 18
|
||||
# Doce enemigos BALLOON1. Hacia la derecha. Juntos
|
||||
X1_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 110
|
||||
X1_0, 1, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 100
|
||||
X1_0, 2, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 90
|
||||
X1_0, 3, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 80
|
||||
X1_0, 4, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 70
|
||||
X1_0, 5, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 60
|
||||
X1_0, 6, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 50
|
||||
X1_0, 7, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 40
|
||||
X1_0, 8, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 30
|
||||
X1_0, 9, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 20
|
||||
X1_0, 10, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 10
|
||||
X1_0, 11, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 0
|
||||
# Doce enemigos BALLOON0. Hacia la derecha. Juntos
|
||||
X1_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 110
|
||||
X1_0, 1, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 100
|
||||
X1_0, 2, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 90
|
||||
X1_0, 3, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 80
|
||||
X1_0, 4, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 70
|
||||
X1_0, 5, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 60
|
||||
X1_0, 6, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 50
|
||||
X1_0, 7, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 40
|
||||
X1_0, 8, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 30
|
||||
X1_0, 9, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 20
|
||||
X1_0, 10, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 10
|
||||
X1_0, 11, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 0
|
||||
|
||||
formation: 19
|
||||
# Doce enemigos BALLOON1. Hacia la izquierda. Juntos
|
||||
X1_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 110
|
||||
X1_100, -1, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 100
|
||||
X1_100, -2, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 90
|
||||
X1_100, -3, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 80
|
||||
X1_100, -4, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 70
|
||||
X1_100, -5, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 60
|
||||
X1_100, -6, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 50
|
||||
X1_100, -7, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 40
|
||||
X1_100, -8, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 30
|
||||
X1_100, -9, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 20
|
||||
X1_100, -10, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 10
|
||||
X1_100, -11, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 0
|
||||
# Doce enemigos BALLOON0. Hacia la izquierda. Juntos
|
||||
X1_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 110
|
||||
X1_100, -1, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 100
|
||||
X1_100, -2, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 90
|
||||
X1_100, -3, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 80
|
||||
X1_100, -4, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 70
|
||||
X1_100, -5, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 60
|
||||
X1_100, -6, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 50
|
||||
X1_100, -7, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 40
|
||||
X1_100, -8, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 30
|
||||
X1_100, -9, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 20
|
||||
X1_100, -10, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 10
|
||||
X1_100, -11, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 0
|
||||
|
||||
formation: 20
|
||||
# Cuatro enemigos BALLOON4 seguidos desde la izquierda/derecha. Simétricos
|
||||
X4_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE4, 0
|
||||
X4_0, 1, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE4, 0
|
||||
X4_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE4, 0
|
||||
X4_100, -1, DEFAULT_POS_Y, LEFT, BALLOON, SIZE4, 0
|
||||
# Cuatro enemigos BALLOON3 seguidos desde la izquierda/derecha. Simétricos
|
||||
X4_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_3, 0
|
||||
X4_0, 1, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_3, 0
|
||||
X4_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_3, 0
|
||||
X4_100, -1, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_3, 0
|
||||
|
||||
formation: 21
|
||||
# Diez enemigos BALLOON2 uno detrás del otro. Izquierda/derecha. Simétricos
|
||||
X2_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE2, 12
|
||||
X2_0, 1, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE2, 9
|
||||
X2_0, 2, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE2, 6
|
||||
X2_0, 3, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE2, 3
|
||||
X2_0, 4, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE2, 0
|
||||
X2_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE2, 12
|
||||
X2_100, -1, DEFAULT_POS_Y, LEFT, BALLOON, SIZE2, 9
|
||||
X2_100, -2, DEFAULT_POS_Y, LEFT, BALLOON, SIZE2, 6
|
||||
X2_100, -3, DEFAULT_POS_Y, LEFT, BALLOON, SIZE2, 3
|
||||
X2_100, -4, DEFAULT_POS_Y, LEFT, BALLOON, SIZE2, 0
|
||||
# Diez enemigos BALLOON1 uno detrás del otro. Izquierda/derecha. Simétricos
|
||||
X2_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_1, 12
|
||||
X2_0, 1, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_1, 9
|
||||
X2_0, 2, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_1, 6
|
||||
X2_0, 3, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_1, 3
|
||||
X2_0, 4, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_1, 0
|
||||
X2_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_1, 12
|
||||
X2_100, -1, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_1, 9
|
||||
X2_100, -2, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_1, 6
|
||||
X2_100, -3, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_1, 3
|
||||
X2_100, -4, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_1, 0
|
||||
|
||||
formation: 22
|
||||
# Diez enemigos BALLOON3. Hacia la derecha/izquierda. Separados. Simétricos
|
||||
X3_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 40
|
||||
X3_0, 2, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 30
|
||||
X3_0, 4, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 20
|
||||
X3_0, 6, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 10
|
||||
X3_0, 8, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 0
|
||||
X3_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 40
|
||||
X3_100, -2, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 30
|
||||
X3_100, -4, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 20
|
||||
X3_100, -6, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 10
|
||||
X3_100, -8, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 0
|
||||
# Diez enemigos BALLOON2. Hacia la derecha/izquierda. Separados. Simétricos
|
||||
X3_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_2, 40
|
||||
X3_0, 2, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_2, 30
|
||||
X3_0, 4, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_2, 20
|
||||
X3_0, 6, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_2, 10
|
||||
X3_0, 8, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_2, 0
|
||||
X3_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_2, 40
|
||||
X3_100, -2, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_2, 30
|
||||
X3_100, -4, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_2, 20
|
||||
X3_100, -6, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_2, 10
|
||||
X3_100, -8, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_2, 0
|
||||
|
||||
formation: 23
|
||||
# Diez enemigos BALLOON3. Hacia la derecha. Juntos. Simétricos
|
||||
X3_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 40
|
||||
X3_0, 1, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 30
|
||||
X3_0, 2, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 20
|
||||
X3_0, 3, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 10
|
||||
X3_0, 4, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE3, 0
|
||||
X3_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 40
|
||||
X3_100, -1, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 30
|
||||
X3_100, -2, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 20
|
||||
X3_100, -3, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 10
|
||||
X3_100, -4, DEFAULT_POS_Y, LEFT, BALLOON, SIZE3, 0
|
||||
# Diez enemigos BALLOON2. Hacia la derecha. Juntos. Simétricos
|
||||
X3_0, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_2, 40
|
||||
X3_0, 1, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_2, 30
|
||||
X3_0, 2, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_2, 20
|
||||
X3_0, 3, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_2, 10
|
||||
X3_0, 4, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_2, 0
|
||||
X3_100, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_2, 40
|
||||
X3_100, -1, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_2, 30
|
||||
X3_100, -2, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_2, 20
|
||||
X3_100, -3, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_2, 10
|
||||
X3_100, -4, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_2, 0
|
||||
|
||||
formation: 24
|
||||
# Treinta enemigos BALLOON1. Del centro hacia los extremos. Juntos. Simétricos
|
||||
X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 0
|
||||
X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 5
|
||||
X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 10
|
||||
X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 15
|
||||
X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 20
|
||||
X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 25
|
||||
X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 30
|
||||
X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 35
|
||||
X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 40
|
||||
X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 45
|
||||
X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 50
|
||||
X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 55
|
||||
X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 60
|
||||
X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 65
|
||||
X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 70
|
||||
X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 0
|
||||
X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 5
|
||||
X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 10
|
||||
X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 15
|
||||
X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 20
|
||||
X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 25
|
||||
X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 30
|
||||
X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 35
|
||||
X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 40
|
||||
X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 45
|
||||
X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 50
|
||||
X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 55
|
||||
X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 60
|
||||
X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 65
|
||||
X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 70
|
||||
# Treinta enemigos BALLOON0. Del centro hacia los extremos. Juntos. Simétricos
|
||||
X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 0
|
||||
X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 5
|
||||
X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 10
|
||||
X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 15
|
||||
X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 20
|
||||
X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 25
|
||||
X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 30
|
||||
X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 35
|
||||
X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 40
|
||||
X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 45
|
||||
X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 50
|
||||
X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 55
|
||||
X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 60
|
||||
X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 65
|
||||
X1_50, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 70
|
||||
X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 0
|
||||
X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 5
|
||||
X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 10
|
||||
X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 15
|
||||
X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 20
|
||||
X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 25
|
||||
X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 30
|
||||
X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 35
|
||||
X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 40
|
||||
X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 45
|
||||
X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 50
|
||||
X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 55
|
||||
X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 60
|
||||
X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 65
|
||||
X1_50, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 70
|
||||
|
||||
formation: 25
|
||||
# Treinta enemigos BALLOON1. Del centro hacia adentro. Juntos. Simétricos
|
||||
X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 70
|
||||
X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 65
|
||||
X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 60
|
||||
X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 55
|
||||
X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 50
|
||||
X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 45
|
||||
X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 40
|
||||
X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 35
|
||||
X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 30
|
||||
X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 25
|
||||
X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 20
|
||||
X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 15
|
||||
X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 10
|
||||
X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 5
|
||||
X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE1, 0
|
||||
X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 70
|
||||
X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 65
|
||||
X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 60
|
||||
X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 55
|
||||
X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 50
|
||||
X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 45
|
||||
X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 40
|
||||
X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 35
|
||||
X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 30
|
||||
X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 25
|
||||
X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 20
|
||||
X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 15
|
||||
X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 10
|
||||
X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 5
|
||||
X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE1, 0
|
||||
# Treinta enemigos BALLOON0. Del centro hacia adentro. Juntos. Simétricos
|
||||
X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 70
|
||||
X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 65
|
||||
X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 60
|
||||
X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 55
|
||||
X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 50
|
||||
X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 45
|
||||
X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 40
|
||||
X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 35
|
||||
X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 30
|
||||
X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 25
|
||||
X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 20
|
||||
X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 15
|
||||
X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 10
|
||||
X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 5
|
||||
X1_50 + 20, 0, DEFAULT_POS_Y, LEFT, BALLOON, SIZE_0, 0
|
||||
X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 70
|
||||
X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 65
|
||||
X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 60
|
||||
X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 55
|
||||
X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 50
|
||||
X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 45
|
||||
X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 40
|
||||
X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 35
|
||||
X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 30
|
||||
X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 25
|
||||
X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 20
|
||||
X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 15
|
||||
X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 10
|
||||
X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 5
|
||||
X1_50 - 20, 0, DEFAULT_POS_Y, RIGHT, BALLOON, SIZE_0, 0
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
frame_width=48
|
||||
frame_height=48
|
||||
frame_width=10
|
||||
frame_height=10
|
||||
|
||||
[animation]
|
||||
name=orange
|
||||
BIN
data/gfx/balloon/balloon0.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 7.0 KiB |
|
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 12 KiB |
@@ -1,5 +1,5 @@
|
||||
frame_width=48
|
||||
frame_height=48
|
||||
frame_width=10
|
||||
frame_height=10
|
||||
|
||||
[animation]
|
||||
name=default
|
||||
BIN
data/gfx/balloon/explosion0.png
Normal file
|
After Width: | Height: | Size: 760 B |
|
Before Width: | Height: | Size: 760 B After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 2.0 KiB |
@@ -1,5 +1,5 @@
|
||||
frame_width=26
|
||||
frame_height=26
|
||||
frame_width=48
|
||||
frame_height=48
|
||||
|
||||
[animation]
|
||||
name=default
|
||||
|
||||
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 4.1 KiB |
|
Before Width: | Height: | Size: 4.1 KiB |
@@ -11,7 +11,7 @@
|
||||
#include "texture.h" // Para Texture
|
||||
|
||||
// Constructor
|
||||
Balloon::Balloon(float x, float y, BalloonType type, BalloonSize size, float vel_x, float speed, Uint16 creation_timer, SDL_FRect play_area, std::shared_ptr<Texture> texture, const std::vector<std::string> &animation)
|
||||
Balloon::Balloon(float x, float y, Type type, Size size, float vel_x, float speed, Uint16 creation_timer, SDL_FRect play_area, std::shared_ptr<Texture> texture, const std::vector<std::string> &animation)
|
||||
: sprite_(std::make_unique<AnimatedSprite>(texture, animation)),
|
||||
x_(x),
|
||||
y_(y),
|
||||
@@ -26,42 +26,42 @@ Balloon::Balloon(float x, float y, BalloonType type, BalloonSize size, float vel
|
||||
speed_(speed),
|
||||
play_area_(play_area) {
|
||||
switch (type_) {
|
||||
case BalloonType::BALLOON: {
|
||||
case Type::BALLOON: {
|
||||
vy_ = 0;
|
||||
max_vy_ = 3.0F;
|
||||
|
||||
const int INDEX = static_cast<int>(size_);
|
||||
gravity_ = param.balloon.settings.at(INDEX).grav;
|
||||
default_vy_ = param.balloon.settings.at(INDEX).vel;
|
||||
h_ = w_ = BALLOON_SIZE[INDEX];
|
||||
power_ = BALLOON_POWER[INDEX];
|
||||
menace_ = BALLOON_MENACE[INDEX];
|
||||
score_ = BALLOON_SCORE[INDEX];
|
||||
bouncing_sound_ = BALLOON_BOUNCING_SOUND[INDEX];
|
||||
popping_sound_ = BALLOON_POPPING_SOUND[INDEX];
|
||||
h_ = w_ = SIZE[INDEX];
|
||||
power_ = POWER[INDEX];
|
||||
menace_ = MENACE[INDEX];
|
||||
score_ = SCORE[INDEX];
|
||||
bouncing_sound_ = BOUNCING_SOUND[INDEX];
|
||||
popping_sound_ = POPPING_SOUND[INDEX];
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case BalloonType::FLOATER: {
|
||||
case Type::FLOATER: {
|
||||
default_vy_ = max_vy_ = vy_ = fabs(vx_ * 2.0F);
|
||||
gravity_ = 0.00F;
|
||||
|
||||
const int INDEX = static_cast<int>(size_);
|
||||
h_ = w_ = BALLOON_SIZE[INDEX];
|
||||
power_ = BALLOON_POWER[INDEX];
|
||||
menace_ = BALLOON_MENACE[INDEX];
|
||||
score_ = BALLOON_SCORE[INDEX];
|
||||
bouncing_sound_ = BALLOON_BOUNCING_SOUND[INDEX];
|
||||
popping_sound_ = BALLOON_POPPING_SOUND[INDEX];
|
||||
h_ = w_ = SIZE[INDEX];
|
||||
power_ = POWER[INDEX];
|
||||
menace_ = MENACE[INDEX];
|
||||
score_ = SCORE[INDEX];
|
||||
bouncing_sound_ = BOUNCING_SOUND[INDEX];
|
||||
popping_sound_ = POPPING_SOUND[INDEX];
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case BalloonType::POWERBALL: {
|
||||
case Type::POWERBALL: {
|
||||
constexpr int INDEX = 3;
|
||||
h_ = w_ = BALLOON_SIZE[4];
|
||||
bouncing_sound_ = BALLOON_BOUNCING_SOUND[3];
|
||||
h_ = w_ = SIZE[4];
|
||||
bouncing_sound_ = BOUNCING_SOUND[3];
|
||||
popping_sound_ = "power_ball_explosion.wav";
|
||||
power_ = score_ = menace_ = 0;
|
||||
|
||||
@@ -103,11 +103,11 @@ void Balloon::alignTo(int x) {
|
||||
|
||||
// Pinta el globo en la pantalla
|
||||
void Balloon::render() {
|
||||
if (type_ == BalloonType::POWERBALL) {
|
||||
if (type_ == Type::POWERBALL) {
|
||||
// Renderiza el fondo azul
|
||||
{
|
||||
auto sp = std::make_unique<Sprite>(sprite_->getTexture(), sprite_->getPosition());
|
||||
sp->setSpriteClip(0, 0, BALLOON_SIZE[4], BALLOON_SIZE[4]);
|
||||
sp->setSpriteClip(0, 0, SIZE[4], SIZE[4]);
|
||||
sp->render();
|
||||
}
|
||||
|
||||
@@ -121,7 +121,7 @@ void Balloon::render() {
|
||||
// Añade la máscara del borde y los reflejos
|
||||
{
|
||||
auto sp = std::make_unique<Sprite>(sprite_->getTexture(), sprite_->getPosition());
|
||||
sp->setSpriteClip(BALLOON_SIZE[4] * 2, 0, BALLOON_SIZE[4], BALLOON_SIZE[4]);
|
||||
sp->setSpriteClip(SIZE[4] * 2, 0, SIZE[4], SIZE[4]);
|
||||
sp->render();
|
||||
}
|
||||
} else {
|
||||
@@ -180,7 +180,7 @@ void Balloon::handleHorizontalBounce(float min_x, float max_x) {
|
||||
x_ = std::clamp(x_, min_x, max_x);
|
||||
vx_ = -vx_;
|
||||
|
||||
if (type_ == BalloonType::POWERBALL) {
|
||||
if (type_ == Type::POWERBALL) {
|
||||
sprite_->switchRotate();
|
||||
} else {
|
||||
enableBounceEffect();
|
||||
@@ -209,7 +209,7 @@ void Balloon::handleBottomCollision() {
|
||||
y_ = MAX_Y;
|
||||
vy_ = -default_vy_;
|
||||
|
||||
if (type_ != BalloonType::POWERBALL) {
|
||||
if (type_ != Type::POWERBALL) {
|
||||
enableBounceEffect();
|
||||
} else {
|
||||
setInvulnerable(false);
|
||||
@@ -293,11 +293,11 @@ void Balloon::setAnimation() {
|
||||
std::string normal_animation;
|
||||
|
||||
switch (type_) {
|
||||
case BalloonType::POWERBALL:
|
||||
case Type::POWERBALL:
|
||||
creating_animation = "powerball";
|
||||
normal_animation = "powerball";
|
||||
break;
|
||||
case BalloonType::FLOATER:
|
||||
case Type::FLOATER:
|
||||
creating_animation = param.balloon.color.at(2);
|
||||
normal_animation = param.balloon.color.at(3);
|
||||
break;
|
||||
@@ -352,7 +352,7 @@ void Balloon::applyBounceEffect() {
|
||||
// Activa el efecto
|
||||
void Balloon::enableBounceEffect() {
|
||||
// Los globos pequeños no tienen efecto de rebote
|
||||
if (size_ == BalloonSize::SIZE1) {
|
||||
if (size_ == Size::SIZE_0) {
|
||||
return;
|
||||
}
|
||||
bounce_effect_.enabled = true;
|
||||
|
||||
@@ -12,54 +12,54 @@
|
||||
|
||||
class Texture;
|
||||
|
||||
// --- Constantes relacionadas con globos ---
|
||||
constexpr int MAX_BOUNCE = 10; // Cantidad de elementos del vector de deformación
|
||||
|
||||
constexpr std::array<int, 4> BALLOON_SCORE = {50, 100, 200, 400};
|
||||
constexpr std::array<int, 4> BALLOON_POWER = {1, 3, 7, 15};
|
||||
constexpr std::array<int, 4> BALLOON_MENACE = {1, 2, 4, 8};
|
||||
constexpr std::array<int, 5> BALLOON_SIZE = {10, 16, 26, 48, 49};
|
||||
|
||||
const std::array<std::string, 4> BALLOON_BOUNCING_SOUND = {
|
||||
"bubble1.wav", "bubble2.wav", "bubble3.wav", "bubble4.wav"};
|
||||
|
||||
const std::array<std::string, 4> BALLOON_POPPING_SOUND = {
|
||||
"balloon1.wav", "balloon2.wav", "balloon3.wav", "balloon4.wav"};
|
||||
|
||||
enum class BalloonSize : Uint8 {
|
||||
SIZE1 = 0,
|
||||
SIZE2 = 1,
|
||||
SIZE3 = 2,
|
||||
SIZE4 = 3,
|
||||
};
|
||||
|
||||
enum class BalloonType : Uint8 {
|
||||
BALLOON = 0,
|
||||
FLOATER = 1,
|
||||
POWERBALL = 2,
|
||||
};
|
||||
|
||||
constexpr float BALLOON_VELX_POSITIVE = 0.7F;
|
||||
constexpr float BALLOON_VELX_NEGATIVE = -0.7F;
|
||||
|
||||
constexpr int BALLOON_MOVING_ANIMATION = 0;
|
||||
constexpr int BALLOON_POP_ANIMATION = 1;
|
||||
constexpr int BALLOON_BORN_ANIMATION = 2;
|
||||
|
||||
constexpr std::array<float, 5> BALLOON_SPEED = {0.60F, 0.70F, 0.80F, 0.90F, 1.00F};
|
||||
|
||||
constexpr int POWERBALL_SCREENPOWER_MINIMUM = 10;
|
||||
constexpr int POWERBALL_COUNTER = 8;
|
||||
|
||||
// --- Clase Balloon ---
|
||||
class Balloon {
|
||||
public:
|
||||
// --- Constantes relacionadas con globos ---
|
||||
static constexpr int MAX_BOUNCE = 10; // Cantidad de elementos del vector de deformación
|
||||
|
||||
static constexpr std::array<int, 4> SCORE = {50, 100, 200, 400};
|
||||
static constexpr std::array<int, 4> POWER = {1, 3, 7, 15};
|
||||
static constexpr std::array<int, 4> MENACE = {1, 2, 4, 8};
|
||||
static constexpr std::array<int, 5> SIZE = {10, 16, 26, 48, 49};
|
||||
|
||||
const std::array<std::string, 4> BOUNCING_SOUND = {
|
||||
"balloon_bounce0.wav", "balloon_bounce1.wav", "balloon_bounce2.wav", "balloon_bounce3.wav"};
|
||||
|
||||
const std::array<std::string, 4> POPPING_SOUND = {
|
||||
"balloon_pop0.wav", "balloon_pop1.wav", "balloon_pop2.wav", "balloon_pop3.wav"};
|
||||
|
||||
static constexpr float VELX_POSITIVE = 0.7F;
|
||||
static constexpr float VELX_NEGATIVE = -0.7F;
|
||||
|
||||
static constexpr int MOVING_ANIMATION = 0;
|
||||
static constexpr int POP_ANIMATION = 1;
|
||||
static constexpr int BORN_ANIMATION = 2;
|
||||
|
||||
static constexpr std::array<float, 5> SPEED = {0.60F, 0.70F, 0.80F, 0.90F, 1.00F};
|
||||
|
||||
static constexpr int POWERBALL_SCREENPOWER_MINIMUM = 10;
|
||||
static constexpr int POWERBALL_COUNTER = 8;
|
||||
|
||||
enum class Size : Uint8 {
|
||||
SIZE_0 = 0,
|
||||
SIZE_1 = 1,
|
||||
SIZE_2 = 2,
|
||||
SIZE_3 = 3,
|
||||
};
|
||||
|
||||
enum class Type : Uint8 {
|
||||
BALLOON = 0,
|
||||
FLOATER = 1,
|
||||
POWERBALL = 2,
|
||||
};
|
||||
|
||||
// --- Constructores y destructor ---
|
||||
Balloon(
|
||||
float x,
|
||||
float y,
|
||||
BalloonType type,
|
||||
BalloonSize size,
|
||||
Type type,
|
||||
Size size,
|
||||
float vel_x,
|
||||
float speed,
|
||||
Uint16 creation_timer,
|
||||
@@ -86,14 +86,14 @@ class Balloon {
|
||||
[[nodiscard]] auto getPosY() const -> float { return y_; }
|
||||
[[nodiscard]] auto getWidth() const -> int { return w_; }
|
||||
[[nodiscard]] auto getHeight() const -> int { return h_; }
|
||||
[[nodiscard]] auto getSize() const -> BalloonSize { return size_; }
|
||||
[[nodiscard]] auto getType() const -> BalloonType { return type_; }
|
||||
[[nodiscard]] auto getSize() const -> Size { return size_; }
|
||||
[[nodiscard]] auto getType() const -> Type { return type_; }
|
||||
[[nodiscard]] auto getScore() const -> Uint16 { return score_; }
|
||||
auto getCollider() -> Circle & { return collider_; }
|
||||
[[nodiscard]] auto getMenace() const -> Uint8 { return isEnabled() ? menace_ : 0; }
|
||||
[[nodiscard]] auto getPower() const -> Uint8 { return power_; }
|
||||
[[nodiscard]] auto isStopped() const -> bool { return stopped_; }
|
||||
[[nodiscard]] auto isPowerBall() const -> bool { return type_ == BalloonType::POWERBALL; }
|
||||
[[nodiscard]] auto isPowerBall() const -> bool { return type_ == Type::POWERBALL; }
|
||||
[[nodiscard]] auto isInvulnerable() const -> bool { return invulnerable_; }
|
||||
[[nodiscard]] auto isBeingCreated() const -> bool { return being_created_; }
|
||||
[[nodiscard]] auto isEnabled() const -> bool { return enabled_; }
|
||||
@@ -154,8 +154,8 @@ class Balloon {
|
||||
Uint16 creation_counter_; // Temporizador de creación
|
||||
Uint16 creation_counter_ini_; // Valor inicial del temporizador de creación
|
||||
Uint16 score_; // Puntos al destruir el globo
|
||||
BalloonType type_; // Tipo de globo
|
||||
BalloonSize size_; // Tamaño de globo
|
||||
Type type_; // Tipo de globo
|
||||
Size size_; // Tamaño de globo
|
||||
Uint8 menace_; // Amenaza que genera el globo
|
||||
Uint32 counter_ = 0; // Contador interno
|
||||
float travel_y_ = 1.0F; // Distancia a recorrer en Y antes de aplicar gravedad
|
||||
|
||||
@@ -141,17 +141,17 @@ auto BalloonFormations::parseBalloonLine(const std::string& line, const std::map
|
||||
BalloonType type = (tokens.at(4) == "BALLOON") ? BalloonType::BALLOON : BalloonType::FLOATER;
|
||||
|
||||
BalloonSize size;
|
||||
if (tokens.at(5) == "SIZE1") {
|
||||
size = BalloonSize::SIZE1;
|
||||
if (tokens.at(5) == "SIZE_0") {
|
||||
size = BalloonSize::SIZE_0;
|
||||
desp = desp * (BALLOON_SIZE.at(0) + 1);
|
||||
} else if (tokens.at(5) == "SIZE2") {
|
||||
size = BalloonSize::SIZE2;
|
||||
} else if (tokens.at(5) == "SIZE_1") {
|
||||
size = BalloonSize::SIZE_1;
|
||||
desp = desp * (BALLOON_SIZE.at(1) + 1);
|
||||
} else if (tokens.at(5) == "SIZE3") {
|
||||
size = BalloonSize::SIZE3;
|
||||
} else if (tokens.at(5) == "SIZE_2") {
|
||||
size = BalloonSize::SIZE_2;
|
||||
desp = desp * (BALLOON_SIZE.at(2) + 1);
|
||||
} else if (tokens.at(5) == "SIZE4") {
|
||||
size = BalloonSize::SIZE4;
|
||||
} else if (tokens.at(5) == "SIZE_3") {
|
||||
size = BalloonSize::SIZE_3;
|
||||
desp = desp * (BALLOON_SIZE.at(3) + 1);
|
||||
} else {
|
||||
return std::nullopt;
|
||||
@@ -240,10 +240,10 @@ void BalloonFormations::createFloaterVariants() {
|
||||
|
||||
void BalloonFormations::addTestFormation() {
|
||||
std::vector<BalloonFormationParams> test_params = {
|
||||
{10, -BLOCK, 0, BalloonType::FLOATER, BalloonSize::SIZE1, 200},
|
||||
{50, -BLOCK, 0, BalloonType::FLOATER, BalloonSize::SIZE2, 200},
|
||||
{90, -BLOCK, 0, BalloonType::FLOATER, BalloonSize::SIZE3, 200},
|
||||
{140, -BLOCK, 0, BalloonType::FLOATER, BalloonSize::SIZE4, 200}};
|
||||
{10, -BLOCK, 0, BalloonType::FLOATER, BalloonSize::SIZE_0, 200},
|
||||
{50, -BLOCK, 0, BalloonType::FLOATER, BalloonSize::SIZE_1, 200},
|
||||
{90, -BLOCK, 0, BalloonType::FLOATER, BalloonSize::SIZE_2, 200},
|
||||
{140, -BLOCK, 0, BalloonType::FLOATER, BalloonSize::SIZE_3, 200}};
|
||||
|
||||
balloon_formation_.at(99) = BalloonFormationUnit(4, test_params);
|
||||
}
|
||||
@@ -258,8 +258,8 @@ void BalloonFormations::loadDefaultFormations() {
|
||||
|
||||
// Formación básica #00
|
||||
std::vector<BalloonFormationParams> basic_formation = {
|
||||
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)};
|
||||
BalloonFormationParams(X4_0, DEFAULT_POS_Y, BALLOON_VELX_POSITIVE, BalloonType::BALLOON, BalloonSize::SIZE_3, CREATION_TIME),
|
||||
BalloonFormationParams(X4_100, DEFAULT_POS_Y, BALLOON_VELX_NEGATIVE, BalloonType::BALLOON, BalloonSize::SIZE_3, CREATION_TIME)};
|
||||
balloon_formation_.emplace_back(2, basic_formation);
|
||||
}
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ struct BalloonFormationParams {
|
||||
int y = 0; // Posición en el eje Y donde crear el globo
|
||||
float vel_x = 0.0F; // Velocidad inicial en el eje X
|
||||
BalloonType type = BalloonType::BALLOON; // Tipo de globo
|
||||
BalloonSize size = BalloonSize::SIZE1; // Tamaño de globo
|
||||
BalloonSize size = BalloonSize::SIZE_0; // Tamaño de globo
|
||||
int creation_counter = 0; // Temporizador para la creación del globo
|
||||
|
||||
// Constructor por defecto
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
#include <cstdlib> // Para rand
|
||||
#include <numeric> // Para accumulate
|
||||
|
||||
#include "balloon.h" // Para Balloon, BALLOON_SCORE, BALLOON_VELX...
|
||||
#include "balloon.h" // Para Balloon, Balloon::SCORE.at( )ALLOON_VELX...
|
||||
#include "balloon_formations.h" // Para BalloonFormationParams, BalloonForma...
|
||||
#include "color.h" // Para Zone, Color, flash_color
|
||||
#include "explosions.h" // Para Explosions
|
||||
@@ -23,30 +23,30 @@ BalloonManager::BalloonManager()
|
||||
// Inicializa
|
||||
void BalloonManager::init() {
|
||||
// Texturas - Globos
|
||||
balloon_textures_.emplace_back(Resource::get()->getTexture("balloon0.png"));
|
||||
balloon_textures_.emplace_back(Resource::get()->getTexture("balloon1.png"));
|
||||
balloon_textures_.emplace_back(Resource::get()->getTexture("balloon2.png"));
|
||||
balloon_textures_.emplace_back(Resource::get()->getTexture("balloon3.png"));
|
||||
balloon_textures_.emplace_back(Resource::get()->getTexture("balloon4.png"));
|
||||
balloon_textures_.emplace_back(Resource::get()->getTexture("powerball.png"));
|
||||
|
||||
// Animaciones -- Globos
|
||||
balloon_animations_.emplace_back(Resource::get()->getAnimation("balloon0.ani"));
|
||||
balloon_animations_.emplace_back(Resource::get()->getAnimation("balloon1.ani"));
|
||||
balloon_animations_.emplace_back(Resource::get()->getAnimation("balloon2.ani"));
|
||||
balloon_animations_.emplace_back(Resource::get()->getAnimation("balloon3.ani"));
|
||||
balloon_animations_.emplace_back(Resource::get()->getAnimation("balloon4.ani"));
|
||||
balloon_animations_.emplace_back(Resource::get()->getAnimation("powerball.ani"));
|
||||
|
||||
// Texturas - Explosiones
|
||||
explosions_textures_.emplace_back(Resource::get()->getTexture("explosion0.png"));
|
||||
explosions_textures_.emplace_back(Resource::get()->getTexture("explosion1.png"));
|
||||
explosions_textures_.emplace_back(Resource::get()->getTexture("explosion2.png"));
|
||||
explosions_textures_.emplace_back(Resource::get()->getTexture("explosion3.png"));
|
||||
explosions_textures_.emplace_back(Resource::get()->getTexture("explosion4.png"));
|
||||
|
||||
// Animaciones -- Explosiones
|
||||
explosions_animations_.emplace_back(Resource::get()->getAnimation("explosion0.ani"));
|
||||
explosions_animations_.emplace_back(Resource::get()->getAnimation("explosion1.ani"));
|
||||
explosions_animations_.emplace_back(Resource::get()->getAnimation("explosion2.ani"));
|
||||
explosions_animations_.emplace_back(Resource::get()->getAnimation("explosion3.ani"));
|
||||
explosions_animations_.emplace_back(Resource::get()->getAnimation("explosion4.ani"));
|
||||
|
||||
// Añade texturas
|
||||
explosions_->addTexture(0, explosions_textures_[0], explosions_animations_[0]);
|
||||
@@ -150,7 +150,7 @@ void BalloonManager::updateBalloonDeployCounter() {
|
||||
}
|
||||
|
||||
// Indica si se puede crear una powerball
|
||||
auto BalloonManager::canPowerBallBeCreated() -> bool { return (!power_ball_enabled_) && (calculateScreenPower() > POWERBALL_SCREENPOWER_MINIMUM) && (power_ball_counter_ == 0); }
|
||||
auto BalloonManager::canPowerBallBeCreated() -> bool { return (!power_ball_enabled_) && (calculateScreenPower() > Balloon::POWERBALL_SCREENPOWER_MINIMUM) && (power_ball_counter_ == 0); }
|
||||
|
||||
// Calcula el poder actual de los globos en pantalla
|
||||
auto BalloonManager::calculateScreenPower() -> int {
|
||||
@@ -158,7 +158,7 @@ auto BalloonManager::calculateScreenPower() -> int {
|
||||
}
|
||||
|
||||
// Crea un globo nuevo en el vector de globos
|
||||
auto BalloonManager::createBalloon(float x, int y, BalloonType type, BalloonSize size, float velx, float speed, int creation_timer) -> std::shared_ptr<Balloon> {
|
||||
auto BalloonManager::createBalloon(float x, int y, Balloon::Type type, Balloon::Size size, float velx, float speed, int creation_timer) -> std::shared_ptr<Balloon> {
|
||||
if (can_deploy_balloons_) {
|
||||
const int INDEX = static_cast<int>(size);
|
||||
balloons_.emplace_back(std::make_shared<Balloon>(x, y, type, size, velx, speed, creation_timer, play_area_, balloon_textures_.at(INDEX), balloon_animations_.at(INDEX)));
|
||||
@@ -175,10 +175,10 @@ auto BalloonManager::createBalloon(float x, int y, BalloonType type, BalloonSize
|
||||
void BalloonManager::createChildBalloon(const std::shared_ptr<Balloon> &balloon, const std::string &direction) {
|
||||
if (can_deploy_balloons_) {
|
||||
// Calcula parametros
|
||||
const float VX = direction == "LEFT" ? BALLOON_VELX_NEGATIVE : BALLOON_VELX_POSITIVE;
|
||||
const auto SIZE = static_cast<BalloonSize>(static_cast<int>(balloon->getSize()) - 1);
|
||||
const float VX = direction == "LEFT" ? Balloon::VELX_NEGATIVE : Balloon::VELX_POSITIVE;
|
||||
const auto SIZE = static_cast<Balloon::Size>(static_cast<int>(balloon->getSize()) - 1);
|
||||
const int PARENT_HEIGHT = balloon->getHeight();
|
||||
const int CHILD_HEIGHT = BALLOON_SIZE[static_cast<int>(balloon->getSize()) - 1];
|
||||
const int CHILD_HEIGHT = Balloon::SIZE.at(static_cast<int>(balloon->getSize()) - 1);
|
||||
const int Y = balloon->getPosY() + (PARENT_HEIGHT - CHILD_HEIGHT) / 2;
|
||||
const int X = direction == "LEFT" ? balloon->getPosX() + (balloon->getWidth() / 3) : balloon->getPosX() + 2 * (balloon->getWidth() / 3);
|
||||
|
||||
@@ -187,7 +187,7 @@ void BalloonManager::createChildBalloon(const std::shared_ptr<Balloon> &balloon,
|
||||
|
||||
// Establece parametros
|
||||
b->alignTo(X);
|
||||
b->setVelY(b->getType() == BalloonType::BALLOON ? -2.50F : BALLOON_VELX_NEGATIVE * 2.0F);
|
||||
b->setVelY(b->getType() == Balloon::Type::BALLOON ? -2.50F : Balloon::VELX_NEGATIVE * 2.0F);
|
||||
|
||||
// Herencia de estados
|
||||
if (balloon->isStopped()) {
|
||||
@@ -203,22 +203,22 @@ void BalloonManager::createChildBalloon(const std::shared_ptr<Balloon> &balloon,
|
||||
void BalloonManager::createPowerBall() {
|
||||
if (can_deploy_balloons_) {
|
||||
constexpr int VALUES = 6;
|
||||
constexpr float POS_Y = -BALLOON_SIZE[4];
|
||||
constexpr float POS_Y = -Balloon::SIZE.at(4);
|
||||
constexpr int CREATION_TIME = 0;
|
||||
|
||||
const float LEFT = param.game.play_area.rect.x;
|
||||
const float CENTER = param.game.play_area.center_x - (BALLOON_SIZE[4] / 2);
|
||||
const float RIGHT = param.game.play_area.rect.w - BALLOON_SIZE[4];
|
||||
const float CENTER = param.game.play_area.center_x - (Balloon::SIZE.at(4) / 2);
|
||||
const float RIGHT = param.game.play_area.rect.w - Balloon::SIZE.at(4);
|
||||
|
||||
const int LUCK = rand() % VALUES;
|
||||
const std::array<float, VALUES> POS_X = {LEFT, LEFT, CENTER, CENTER, RIGHT, RIGHT};
|
||||
const std::array<float, VALUES> VEL_X = {BALLOON_VELX_POSITIVE, BALLOON_VELX_POSITIVE, BALLOON_VELX_POSITIVE, BALLOON_VELX_NEGATIVE, BALLOON_VELX_NEGATIVE, BALLOON_VELX_NEGATIVE};
|
||||
const std::array<float, VALUES> VEL_X = {Balloon::VELX_POSITIVE, Balloon::VELX_POSITIVE, Balloon::VELX_POSITIVE, Balloon::VELX_NEGATIVE, Balloon::VELX_NEGATIVE, Balloon::VELX_NEGATIVE};
|
||||
|
||||
balloons_.emplace_back(std::make_unique<Balloon>(POS_X[LUCK], POS_Y, BalloonType::POWERBALL, BalloonSize::SIZE4, VEL_X[LUCK], balloon_speed_, CREATION_TIME, play_area_, balloon_textures_[4], balloon_animations_[4]));
|
||||
balloons_.emplace_back(std::make_unique<Balloon>(POS_X[LUCK], POS_Y, Balloon::Type::POWERBALL, Balloon::Size::SIZE_3, VEL_X[LUCK], balloon_speed_, CREATION_TIME, play_area_, balloon_textures_[4], balloon_animations_[4]));
|
||||
balloons_.back()->setInvulnerable(true);
|
||||
|
||||
power_ball_enabled_ = true;
|
||||
power_ball_counter_ = POWERBALL_COUNTER;
|
||||
power_ball_counter_ = Balloon::POWERBALL_COUNTER;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -235,14 +235,14 @@ auto BalloonManager::popBalloon(std::shared_ptr<Balloon> balloon) -> int {
|
||||
Stage::addPower(1);
|
||||
int score = 0;
|
||||
|
||||
if (balloon->getType() == BalloonType::POWERBALL) {
|
||||
if (balloon->getType() == Balloon::Type::POWERBALL) {
|
||||
balloon->pop(true);
|
||||
score = destroyAllBalloons();
|
||||
power_ball_enabled_ = false;
|
||||
balloon_deploy_counter_ = 20;
|
||||
} else {
|
||||
score = balloon->getScore();
|
||||
if (balloon->getSize() != BalloonSize::SIZE1) {
|
||||
if (balloon->getSize() != Balloon::Size::SIZE_0) {
|
||||
createChildBalloon(balloon, "LEFT");
|
||||
createChildBalloon(balloon, "RIGHT");
|
||||
}
|
||||
@@ -261,17 +261,17 @@ auto BalloonManager::destroyBalloon(std::shared_ptr<Balloon> &balloon) -> int {
|
||||
|
||||
// Calcula la puntuación y el poder que generaria el globo en caso de romperlo a él y a sus hijos
|
||||
switch (balloon->getSize()) {
|
||||
case BalloonSize::SIZE4:
|
||||
score = BALLOON_SCORE[3] + (2 * BALLOON_SCORE[2]) + (4 * BALLOON_SCORE[1]) + (8 * BALLOON_SCORE[0]);
|
||||
case Balloon::Size::SIZE_3:
|
||||
score = Balloon::SCORE.at(3) + (2 * Balloon::SCORE.at(2)) + (4 * Balloon::SCORE.at(1)) + (8 * Balloon::SCORE.at(0));
|
||||
break;
|
||||
case BalloonSize::SIZE3:
|
||||
score = BALLOON_SCORE[2] + (2 * BALLOON_SCORE[1]) + (4 * BALLOON_SCORE[0]);
|
||||
case Balloon::Size::SIZE_2:
|
||||
score = Balloon::SCORE.at(2) + (2 * Balloon::SCORE.at(1)) + (4 * Balloon::SCORE.at(0));
|
||||
break;
|
||||
case BalloonSize::SIZE2:
|
||||
score = BALLOON_SCORE[1] + (2 * BALLOON_SCORE[0]);
|
||||
case Balloon::Size::SIZE_1:
|
||||
score = Balloon::SCORE.at(1) + (2 * Balloon::SCORE.at(0));
|
||||
break;
|
||||
case BalloonSize::SIZE1:
|
||||
score = BALLOON_SCORE[0];
|
||||
case Balloon::Size::SIZE_0:
|
||||
score = Balloon::SCORE.at(0);
|
||||
break;
|
||||
default:
|
||||
score = 0;
|
||||
@@ -343,12 +343,12 @@ void BalloonManager::createTwoBigBalloons() {
|
||||
void BalloonManager::createRandomBalloons() {
|
||||
const int NUM_BALLOONS = 2 + rand() % 4;
|
||||
for (int i = 0; i < NUM_BALLOONS; ++i) {
|
||||
const float X = param.game.game_area.rect.x + (rand() % static_cast<int>(param.game.game_area.rect.w)) - BALLOON_SIZE[3];
|
||||
const float X = param.game.game_area.rect.x + (rand() % static_cast<int>(param.game.game_area.rect.w)) - Balloon::SIZE.at(3);
|
||||
const int Y = param.game.game_area.rect.y + (rand() % 50);
|
||||
const auto SIZE = static_cast<BalloonSize>(rand() % 4);
|
||||
const float VEL_X = (rand() % 2 == 0) ? BALLOON_VELX_POSITIVE : BALLOON_VELX_NEGATIVE;
|
||||
const auto SIZE = static_cast<Balloon::Size>(rand() % 4);
|
||||
const float VEL_X = (rand() % 2 == 0) ? Balloon::VELX_POSITIVE : Balloon::VELX_NEGATIVE;
|
||||
const int CREATION_COUNTER = 0;
|
||||
createBalloon(X, Y, BalloonType::BALLOON, SIZE, VEL_X, balloon_speed_, CREATION_COUNTER);
|
||||
createBalloon(X, Y, Balloon::Type::BALLOON, SIZE, VEL_X, balloon_speed_, CREATION_COUNTER);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
#include <string> // Para string
|
||||
#include <vector> // Para vector
|
||||
|
||||
#include "balloon.h" // Para BALLOON_SPEED, Balloon, BalloonSize (ptr only), BalloonType (ptr only)
|
||||
#include "balloon.h" // Para BALLOON_SPEED, Balloon, Balloon::Size (ptr only), Balloon::Type (ptr only)
|
||||
#include "balloon_formations.h" // Para BalloonFormations
|
||||
#include "explosions.h" // Para Explosions
|
||||
#include "param.h" // Para Param, ParamGame, param
|
||||
@@ -38,7 +38,7 @@ class BalloonManager {
|
||||
void deploySet(int set, int y); // Crea una formación específica con coordenadas
|
||||
|
||||
// Creación de globos
|
||||
auto createBalloon(float x, int y, BalloonType type, BalloonSize size, float velx, float speed, int creation_timer) -> std::shared_ptr<Balloon>; // Crea un nuevo globo
|
||||
auto createBalloon(float x, int y, Balloon::Type type, Balloon::Size size, float velx, float speed, int creation_timer) -> std::shared_ptr<Balloon>; // Crea un nuevo globo
|
||||
void createChildBalloon(const std::shared_ptr<Balloon> &balloon, const std::string &direction); // Crea un globo a partir de otro
|
||||
void createPowerBall(); // Crea una PowerBall
|
||||
void createTwoBigBalloons(); // Crea dos globos grandes
|
||||
@@ -91,8 +91,8 @@ class BalloonManager {
|
||||
std::vector<std::vector<std::string>> explosions_animations_; // Animaciones de las explosiones
|
||||
|
||||
// Variables de control de globos
|
||||
float balloon_speed_ = BALLOON_SPEED[0];
|
||||
float default_balloon_speed_ = BALLOON_SPEED[0];
|
||||
float balloon_speed_ = Balloon::SPEED.at(0);
|
||||
float default_balloon_speed_ = Balloon::SPEED.at(0);
|
||||
int balloon_deploy_counter_ = 0;
|
||||
bool power_ball_enabled_ = false;
|
||||
int power_ball_counter_ = 0;
|
||||
|
||||
@@ -268,14 +268,14 @@ void Director::setFileList() {
|
||||
Asset::get()->add(PREFIX + "/data/music/credits.ogg", AssetType::MUSIC);
|
||||
|
||||
// Sonidos
|
||||
Asset::get()->add(PREFIX + "/data/sound/balloon1.wav", AssetType::SOUND);
|
||||
Asset::get()->add(PREFIX + "/data/sound/balloon2.wav", AssetType::SOUND);
|
||||
Asset::get()->add(PREFIX + "/data/sound/balloon3.wav", AssetType::SOUND);
|
||||
Asset::get()->add(PREFIX + "/data/sound/balloon4.wav", AssetType::SOUND);
|
||||
Asset::get()->add(PREFIX + "/data/sound/bubble1.wav", AssetType::SOUND);
|
||||
Asset::get()->add(PREFIX + "/data/sound/bubble2.wav", AssetType::SOUND);
|
||||
Asset::get()->add(PREFIX + "/data/sound/bubble3.wav", AssetType::SOUND);
|
||||
Asset::get()->add(PREFIX + "/data/sound/bubble4.wav", AssetType::SOUND);
|
||||
Asset::get()->add(PREFIX + "/data/sound/balloon_pop0.wav", AssetType::SOUND);
|
||||
Asset::get()->add(PREFIX + "/data/sound/balloon_pop1.wav", AssetType::SOUND);
|
||||
Asset::get()->add(PREFIX + "/data/sound/balloon_pop2.wav", AssetType::SOUND);
|
||||
Asset::get()->add(PREFIX + "/data/sound/balloon_pop3.wav", AssetType::SOUND);
|
||||
Asset::get()->add(PREFIX + "/data/sound/balloon_bounce0.wav", AssetType::SOUND);
|
||||
Asset::get()->add(PREFIX + "/data/sound/balloon_bounce1.wav", AssetType::SOUND);
|
||||
Asset::get()->add(PREFIX + "/data/sound/balloon_bounce2.wav", AssetType::SOUND);
|
||||
Asset::get()->add(PREFIX + "/data/sound/balloon_bounce3.wav", AssetType::SOUND);
|
||||
Asset::get()->add(PREFIX + "/data/sound/bullet.wav", AssetType::SOUND);
|
||||
Asset::get()->add(PREFIX + "/data/sound/clock.wav", AssetType::SOUND);
|
||||
Asset::get()->add(PREFIX + "/data/sound/coffee_out.wav", AssetType::SOUND);
|
||||
@@ -310,24 +310,24 @@ void Director::setFileList() {
|
||||
Asset::get()->add(PREFIX + "/data/shaders/crtpi_240.glsl", AssetType::DATA);
|
||||
|
||||
// Texturas - Balloons
|
||||
Asset::get()->add(PREFIX + "/data/gfx/balloon/balloon0.png", AssetType::BITMAP);
|
||||
Asset::get()->add(PREFIX + "/data/gfx/balloon/balloon0.ani", AssetType::ANIMATION);
|
||||
Asset::get()->add(PREFIX + "/data/gfx/balloon/balloon1.png", AssetType::BITMAP);
|
||||
Asset::get()->add(PREFIX + "/data/gfx/balloon/balloon1.ani", AssetType::ANIMATION);
|
||||
Asset::get()->add(PREFIX + "/data/gfx/balloon/balloon2.png", AssetType::BITMAP);
|
||||
Asset::get()->add(PREFIX + "/data/gfx/balloon/balloon2.ani", AssetType::ANIMATION);
|
||||
Asset::get()->add(PREFIX + "/data/gfx/balloon/balloon3.png", AssetType::BITMAP);
|
||||
Asset::get()->add(PREFIX + "/data/gfx/balloon/balloon3.ani", AssetType::ANIMATION);
|
||||
Asset::get()->add(PREFIX + "/data/gfx/balloon/balloon4.png", AssetType::BITMAP);
|
||||
Asset::get()->add(PREFIX + "/data/gfx/balloon/balloon4.ani", AssetType::ANIMATION);
|
||||
|
||||
// Texturas - Explosiones
|
||||
Asset::get()->add(PREFIX + "/data/gfx/balloon/explosion0.png", AssetType::BITMAP);
|
||||
Asset::get()->add(PREFIX + "/data/gfx/balloon/explosion0.ani", AssetType::ANIMATION);
|
||||
Asset::get()->add(PREFIX + "/data/gfx/balloon/explosion1.png", AssetType::BITMAP);
|
||||
Asset::get()->add(PREFIX + "/data/gfx/balloon/explosion1.ani", AssetType::ANIMATION);
|
||||
Asset::get()->add(PREFIX + "/data/gfx/balloon/explosion2.png", AssetType::BITMAP);
|
||||
Asset::get()->add(PREFIX + "/data/gfx/balloon/explosion2.ani", AssetType::ANIMATION);
|
||||
Asset::get()->add(PREFIX + "/data/gfx/balloon/explosion3.png", AssetType::BITMAP);
|
||||
Asset::get()->add(PREFIX + "/data/gfx/balloon/explosion3.ani", AssetType::ANIMATION);
|
||||
Asset::get()->add(PREFIX + "/data/gfx/balloon/explosion4.png", AssetType::BITMAP);
|
||||
Asset::get()->add(PREFIX + "/data/gfx/balloon/explosion4.ani", AssetType::ANIMATION);
|
||||
|
||||
// Texturas - Power Ball
|
||||
Asset::get()->add(PREFIX + "/data/gfx/balloon/powerball.png", AssetType::BITMAP);
|
||||
|
||||