Añadida la opcion de que los enemigos puedan decidir el frame de inicio

This commit is contained in:
2022-11-13 18:28:02 +01:00
parent 924e37b32b
commit b688dc6d02
4 changed files with 19 additions and 4 deletions

View File

@@ -38,4 +38,5 @@ y1=2
x2=10 x2=10
y2=2 y2=2
color=white color=white
frame=0
[/enemy] [/enemy]

View File

@@ -33,8 +33,15 @@ Enemy::Enemy(enemy_t enemy)
collider = getRect(); collider = getRect();
// Coloca un frame al azar // Coloca un frame al azar o el designado
sprite->setCurrentFrame(rand() % sprite->getNumFrames()); if (enemy.frame == -1)
{
sprite->setCurrentFrame(rand() % sprite->getNumFrames());
}
else
{
sprite->setCurrentFrame(std::min(enemy.frame, sprite->getNumFrames() - 1));
}
} }
// Destructor // Destructor

View File

@@ -27,6 +27,7 @@ struct enemy_t
int y2; // Limite inferior de la ruta en el eje Y int y2; // Limite inferior de la ruta en el eje Y
bool flip; // Indica si el enemigo hace flip al terminar su ruta bool flip; // Indica si el enemigo hace flip al terminar su ruta
bool mirror; // Indica si el enemigo está volteado verticalmente bool mirror; // Indica si el enemigo está volteado verticalmente
int frame; // Frame inicial para la animación del enemigo
std::string color; // Color del enemigo std::string color; // Color del enemigo
palette_e palette; // Paleta de colores palette_e palette; // Paleta de colores
}; };

View File

@@ -79,6 +79,7 @@ room_t loadRoomFile(std::string file_path, bool verbose)
enemy_t enemy; enemy_t enemy;
enemy.flip = false; enemy.flip = false;
enemy.mirror = false; enemy.mirror = false;
enemy.frame = -1;
enemy.palette = p_zxspectrum; enemy.palette = p_zxspectrum;
do do
@@ -327,6 +328,11 @@ bool setEnemy(enemy_t *enemy, std::string var, std::string value)
enemy->color = value; enemy->color = value;
} }
else if (var == "frame")
{
enemy->frame = std::stoi(value);
}
else if (var == "[/enemy]" || var == "tileSetFile" || var.substr(0, 1) == "#") else if (var == "[/enemy]" || var == "tileSetFile" || var.substr(0, 1) == "#")
{ {
} }