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
y2=2
color=white
frame=0
[/enemy]

View File

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

View File

@@ -27,6 +27,7 @@ struct enemy_t
int y2; // Limite inferior de la ruta en el eje Y
bool flip; // Indica si el enemigo hace flip al terminar su ruta
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
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.flip = false;
enemy.mirror = false;
enemy.frame = -1;
enemy.palette = p_zxspectrum;
do
@@ -327,6 +328,11 @@ bool setEnemy(enemy_t *enemy, std::string var, std::string value)
enemy->color = value;
}
else if (var == "frame")
{
enemy->frame = std::stoi(value);
}
else if (var == "[/enemy]" || var == "tileSetFile" || var.substr(0, 1) == "#")
{
}