Trabajando en la INTRO

This commit is contained in:
2022-09-27 22:39:27 +02:00
parent 10882780e5
commit 8b2459dc35
9 changed files with 601 additions and 613 deletions

View File

@@ -7,6 +7,7 @@ SmartSprite::SmartSprite(LTexture *texture, SDL_Renderer *renderer)
setTexture(texture);
setRenderer(renderer);
// BORRABLE ***
setPosX(0);
setPosY(0);
setWidth(0);
@@ -19,23 +20,21 @@ SmartSprite::SmartSprite(LTexture *texture, SDL_Renderer *renderer)
setSpriteClip(0, 0, 0, 0);
setRotate(false);
setRotateSpeed(0);
setRotateAmount(0.0);
setEnabled(false);
setEnabledTimer(0);
setEnabledCounter(0);
// HASTA AQUI
onDestination = false;
destX = 0;
destY = 0;
setRotate(false);
setRotateSpeed(0);
setRotateAmount(0.0);
counter = 0;
// El Id siempre es >=0, por lo tanto si no se le asigna Id se queda en negativo
id = -1;
introEvents = nullptr;
id = 0;
finished = false;
}
// Destructor
@@ -43,6 +42,15 @@ SmartSprite::~SmartSprite()
{
}
// Pinta el objeto en pantalla
void SmartSprite::render()
{
if (enabled)
{
MovingSprite::render();
}
}
// Obtiene el valor de la variable
bool SmartSprite::isEnabled()
{
@@ -50,33 +58,33 @@ bool SmartSprite::isEnabled()
}
// Establece el valor de la variable
void SmartSprite::setEnabled(bool state)
void SmartSprite::setEnabled(bool enabled)
{
enabled = state;
this->enabled = enabled;
}
// Obtiene el valor de la variable
Uint16 SmartSprite::getEnabledTimer()
int SmartSprite::getEnabledCounter()
{
return enabledCounter;
}
// Establece el valor de la variable
void SmartSprite::setEnabledTimer(Uint16 time)
void SmartSprite::setEnabledCounter(int value)
{
enabledCounter = time;
enabledCounter = value;
}
// Establece el valor de la variable
void SmartSprite::setDestX(int value)
void SmartSprite::setDestX(int x)
{
destX = value;
destX = xPrev;
}
// Establece el valor de la variable
void SmartSprite::setDestY(int value)
void SmartSprite::setDestY(int y)
{
destY = value;
destY = y;
}
// Obtiene el valor de la variable
@@ -91,101 +99,97 @@ int SmartSprite::getDestY()
return destY;
}
// Actualiza la posición y comprueba si ha llegado a su destino
bool SmartSprite::update()
// Comprueba el movimiento
void SmartSprite::checkMove()
{
if (enabled)
// Comprueba si se desplaza en el eje X hacia la derecha
if ((getAccelX() > 0) || ((getAccelX() == 0) && (getVelX() > 0)))
{
MovingSprite::update();
// Comprueba si se desplaza en el eje X hacia la derecha
if ((getAccelX() > 0) || ((getAccelX() == 0) && (getVelX() > 0)))
// Comprueba si ha llegado al destino
if (getPosX() > destX)
{
// Comprueba si ha llegado al destino
if (getPosX() > destX)
{
// Lo coloca en posición
setPosX(destX);
// Lo coloca en posición
setPosX(destX);
// Lo detiene
setVelX(0.0f);
setAccelX(0.0f);
}
// Lo detiene
setVelX(0.0f);
setAccelX(0.0f);
}
// Comprueba si se desplaza en el eje X hacia la izquierda
else if ((getAccelX() < 0) || ((getAccelX() == 0) && (getVelX() < 0)))
}
// Comprueba si se desplaza en el eje X hacia la izquierda
else if ((getAccelX() < 0) || ((getAccelX() == 0) && (getVelX() < 0)))
{
// Comprueba si ha llegado al destino
if (getPosX() < destX)
{
// Comprueba si ha llegado al destino
if (getPosX() < destX)
{
// Lo coloca en posición
setPosX(destX);
// Lo coloca en posición
setPosX(destX);
// Lo detiene
setVelX(0.0f);
setAccelX(0.0f);
}
}
// Comprueba si se desplaza en el eje Y hacia abajo
if ((getAccelY() > 0) || ((getAccelY() == 0) && (getVelY() > 0)))
{
// Comprueba si ha llegado al destino
if (getPosY() > destY)
{
// Lo coloca en posición
setPosY(destY);
// Lo detiene
setVelY(0.0f);
setAccelY(0.0f);
}
}
// Comprueba si se desplaza en el eje Y hacia arriba
else if ((getAccelY() < 0) || ((getAccelY() == 0) && (getVelY() < 0)))
{
// Comprueba si ha llegado al destino
if (getPosY() < destY)
{
// Lo coloca en posición
setPosY(destY);
// Lo detiene
setVelY(0.0f);
setAccelY(0.0f);
}
}
// Comprueba si ha llegado a su destino
if ((getPosX() == destX) && (getPosY() == destY))
onDestination = true;
else
onDestination = false;
// Si esta en el destino comprueba su contador
if (onDestination)
{
// Si el contador es mayor que cero, lo decrementa
if (enabledCounter > 0)
{
enabledCounter--;
}
// Si ha llegado a cero, deshabilita el objeto o manda el aviso en función de si tiene Id
else if (enabledCounter == 0)
{
if (id < 0)
{
enabled = false;
}
else
{
introEvents[id] = EVENT_COMPLETED;
}
}
// Lo detiene
setVelX(0.0f);
setAccelX(0.0f);
}
}
return onDestination;
// Comprueba si se desplaza en el eje Y hacia abajo
if ((getAccelY() > 0) || ((getAccelY() == 0) && (getVelY() > 0)))
{
// Comprueba si ha llegado al destino
if (getPosY() > destY)
{
// Lo coloca en posición
setPosY(destY);
// Lo detiene
setVelY(0.0f);
setAccelY(0.0f);
}
}
// Comprueba si se desplaza en el eje Y hacia arriba
else if ((getAccelY() < 0) || ((getAccelY() == 0) && (getVelY() < 0)))
{
// Comprueba si ha llegado al destino
if (getPosY() < destY)
{
// Lo coloca en posición
setPosY(destY);
// Lo detiene
setVelY(0.0f);
setAccelY(0.0f);
}
}
}
// Actualiza la posición y comprueba si ha llegado a su destino
void SmartSprite::update()
{
if (!enabled)
{
return;
}
// Actualiza las variables internas del objeto
MovingSprite::update();
// Comprueba el movimiento
checkMove();
// Comprueba si ha llegado a su destino
onDestination = (getPosX() == destX && getPosY() == destY) ? true : false;
if (onDestination)
{ // Si esta en el destino comprueba su contador
if (enabledCounter == 0)
{ // Si ha llegado a cero, deshabilita el objeto y lo marca como finalizado
enabled = false;
finished = true;
}
else
{ // Si no ha llegado a cero, decrementa el contador
enabledCounter--;
}
}
}
// Obtiene el valor de la variable
@@ -194,21 +198,20 @@ bool SmartSprite::isOnDestination()
return onDestination;
}
// Pinta el objeto en pantalla
void SmartSprite::render()
{
if (enabled)
MovingSprite::render();
}
// Establece el valor de la variable
void SmartSprite::setId(int id)
{
id = id;
this->id = id;
}
// Establece el valor de la variable
void SmartSprite::setIntroEvents(Uint8 *value)
// Obtiene el valor de la variable
int SmartSprite::getId()
{
introEvents = value;
return id;
}
// Obtiene el valor de la variable
bool SmartSprite::hasFinished()
{
return finished;
}