forked from jaildesigner-jailgames/jaildoctors_dilemma
arreglada la logica d'estats en Ending2
This commit is contained in:
@@ -11,12 +11,57 @@ class SMovingSprite; // lines 10-10
|
||||
class Ending2
|
||||
{
|
||||
private:
|
||||
// Enum para representar los estados del final
|
||||
enum class EndingState : int
|
||||
{
|
||||
PRE_CREDITS, // Estado previo a los créditos
|
||||
CREDITS, // Estado de los créditos
|
||||
POST_CREDITS, // Estado posterior a los créditos
|
||||
FADING, // Estado de fundido de los textos a negrp
|
||||
};
|
||||
|
||||
// Estructura para controlar los estados y su duración
|
||||
struct State
|
||||
{
|
||||
EndingState state; // Estado actual
|
||||
Uint32 init_ticks; // Ticks en los que se inicializó el estado
|
||||
Uint32 duration; // Duración en milisegundos para el estado actual
|
||||
|
||||
// Constructor parametrizado para inicializar la estructura
|
||||
State(EndingState initialState, Uint32 initialTicks, Uint32 stateDuration)
|
||||
: state(initialState), init_ticks(initialTicks), duration(stateDuration) {}
|
||||
|
||||
// Método para comprobar si el estado ha terminado y verifica el nombre del estado
|
||||
bool hasEnded(EndingState expectedState) const
|
||||
{
|
||||
// Comprobar si el estado actual coincide con el estado esperado
|
||||
if (state != expectedState)
|
||||
{
|
||||
return false; // Si no coincide, considerar que no ha terminado
|
||||
}
|
||||
|
||||
// Comprobar si el tiempo transcurrido excede la duración
|
||||
return (SDL_GetTicks() - init_ticks) >= duration;
|
||||
}
|
||||
|
||||
// Método para establecer un nuevo estado
|
||||
void set(EndingState newState, Uint32 newDuration)
|
||||
{
|
||||
state = newState; // Actualizar el estado
|
||||
init_ticks = SDL_GetTicks(); // Reiniciar el tiempo de inicio
|
||||
duration = newDuration; // Actualizar la duración
|
||||
}
|
||||
};
|
||||
|
||||
// Constantes
|
||||
static constexpr int FIRST_COL_ = GAMECANVAS_FIRST_QUARTER_X + (GAMECANVAS_WIDTH / 16); // Primera columna por donde desfilan los sprites
|
||||
static constexpr int SECOND_COL_ = GAMECANVAS_THIRD_QUARTER_X - (GAMECANVAS_WIDTH / 16); // Segunda columna por donde desfilan los sprites
|
||||
static constexpr int DIST_SPRITE_TEXT_ = 8; // Distancia entre el sprite y el texto que lo acompaña
|
||||
static constexpr int DIST_SPRITE_SPRITE_ = 0; // Distancia entre dos sprites de la misma columna
|
||||
static constexpr float SPRITE_DESP_SPEED_ = -0.2f; // Velocidad de desplazamiento de los sprites
|
||||
static constexpr int STATE_PRE_CREDITS_DURATION_ = 3000;
|
||||
static constexpr int STATE_POST_CREDITS_DURATION_ = 5000;
|
||||
static constexpr int STATE_FADE_DURATION_ = 5000;
|
||||
|
||||
// Objetos y punteros
|
||||
std::vector<std::shared_ptr<SAnimatedSprite>> sprites_; // Vector con todos los sprites a dibujar
|
||||
@@ -24,15 +69,12 @@ private:
|
||||
std::vector<std::shared_ptr<SMovingSprite>> texts_; // Vector con los sprites de texto
|
||||
|
||||
// Variables
|
||||
bool counter_enabled_; // Indica si está el contador habilitado
|
||||
int pre_counter_; // Contador previo
|
||||
int post_counter_; // Contador posterior
|
||||
bool post_counter_enabled_; // Indica si está habilitado el contador
|
||||
Uint32 ticks_; // Contador de ticks para ajustar la velocidad del programa
|
||||
Uint32 ticks_ = 0; // Contador de ticks para ajustar la velocidad del programa
|
||||
std::vector<std::string> sprite_list_; // Lista con todos los sprites a dibujar
|
||||
std::vector<Uint8> colors_; // Vector con los colores para el fade
|
||||
int sprite_max_width_; // El valor de ancho del sprite mas ancho
|
||||
int sprite_max_height_; // El valor de alto del sprite mas alto
|
||||
int sprite_max_width_ = 0; // El valor de ancho del sprite mas ancho
|
||||
int sprite_max_height_ = 0; // El valor de alto del sprite mas alto
|
||||
State state_; // Controla el estado de la clase
|
||||
|
||||
// Actualiza el objeto
|
||||
void update();
|
||||
@@ -46,8 +88,8 @@ private:
|
||||
// Comprueba las entradas
|
||||
void checkInput();
|
||||
|
||||
// Actualiza los contadores
|
||||
void updateCounters();
|
||||
// Actualiza el estado
|
||||
void updateState();
|
||||
|
||||
// Inicializa la lista de sprites
|
||||
void iniSpriteList();
|
||||
|
||||
Reference in New Issue
Block a user