#pragma once #ifndef VOLCANO_H #define VOLCANO_H #include "ifdefs.h" #include "jail_audio.h" #include "const.h" #include "ltexture.h" struct Tanimation { bool loops; // Salta a true cuando se reinicia la animación Uint16 timer; // Temporizador de la animación Uint8 frame[50]; // Vector con .... Uint8 index; // Frame actual Uint8 num_frames; // Cantidad de frames de la animación Uint8 speed; // Velocidad de la animación }; struct Tprogram { bool debug; bool filter; bool music_enabled; // LTexture *sprite; SDL_Rect dst_rect; SDL_Rect src_rect; Uint8 section; }; struct Tgame { bool enabled; JA_Sound sound_drop_enemy; JA_Sound sound_drop_splat; JA_Music music; Uint8 zone; // Zona en la que estamos }; struct Tmenu { bool enabled; int frame; int timer; LTexture *sprite_animation; LTexture *sprite; JA_Sound sound_logo; JA_Sound sound_start; JA_Music music; SDL_Rect dst_rect_animation; SDL_Rect dst_rect_fondo; SDL_Rect dst_rect_logo_zoom; SDL_Rect dst_rect_logo; SDL_Rect dst_rect_text; SDL_Rect dst_rect_text2; SDL_Rect src_rect_animation; SDL_Rect src_rect_fondo; SDL_Rect src_rect_logo; SDL_Rect src_rect_text; SDL_Rect src_rect_text2; Tanimation animation[2]; Uint8 section; }; struct Tplayer { bool can_jump; // Si puede saltar bool enabled; // Si está habilitado bool jump_pressed_before; // Si se ha pulsado el botón de salto previamente bool jump_pressed_now; // Si se acaba de pulsar el salto bool key[6]; // Indica las llaves que posee el jugador bool standing; // Si esta de pie (o quieto?) bool was_on_background; // Si viene de una zona atravesable bool invulnerable; // Si es invulnerable int coins; // Cantidad de monedas int cooldown; // Tiempo de inhabilitación int jumpforce; // Cantidad de pixels a desplazarse y velocidad que pilla al saltar int respawn_x; // Coordenadas para revivir int respawn_y; // Coordenades para revivir int speed_x; // Cantidad de pixeles a desplazarse int speed_y; // Cantidad de pixels a desplazarse LTexture *sprite; // Textura con los graficos del jugador JA_Sound sound_coin; // Sonido al coger monedas JA_Sound sound_death; // Sonido al morir JA_Sound sound_jump; // Sonido al saltar SDL_Rect dst_rect; // Rectangulo donde dibujar el sprite del jugador. Es la posición del jugador SDL_Rect src_rect; // Rectangulo con el dibujo del jugador a pintar Tanimation animation[8]; // Vector con las animaciones del jugador Uint8 active_animation; // Animación activa Uint8 direction; // Sentido del desplazamiento Uint8 lifes; // Cantidad de vidas Uint8 respawn_direction; // Dirección para revivir }; struct Tactor { bool enabled; Uint8 frame; int speed_x; int speed_y; // Velocidad = cantidad de pixeles a desplazarse int timer; SDL_Rect dst_rect; SDL_Rect src_rect; Uint8 direction; // Sentido del desplazamiento Uint8 id; Uint8 kind; // Tipo de actor: enemigo, moneda, llave, plataforma ... Uint8 parent; // Indice al padre del actor }; struct Tanimated_tile { bool enabled; Uint8 index; int x; int y; Uint8 frame; }; struct Thud { LTexture *sprite; SDL_Rect src_rect; SDL_Rect dst_rect; SDL_Rect num_src_rect; SDL_Rect num_dst_rect; SDL_Rect bignum_src_rect; SDL_Rect bignum_dst_rect; }; struct Tmap { LTexture *sprite_tile; LTexture *sprite_actor; LTexture *background; SDL_Rect src_rect; SDL_Rect dst_rect; Uint8 *tile; Uint8 *actor; Uint8 w; Uint8 h; Uint8 room; }; bool fullscreen; bool quit; const Uint8 *keys; SDL_Event *event; SDL_Renderer *renderer; SDL_Window *window; std::string executablePath; Tactor actor[MAX_ACTORS]; Tanimated_tile animated_tile[MAX_ANIMATED_TILES]; Tgame game; Thud hud; Tmap map; Tmenu menu; Tplayer player; Tprogram prog; Uint32 delta_time; bool CheckZoneChange(int room); bool loadTextureFromFile(LTexture *texture, std::string path, SDL_Renderer *renderer); bool OnFloor(); Uint8 GetActor(Uint8 x, Uint8 y); Uint8 GetTile(Uint8 x, Uint8 y); Uint8 ReadMapTile(Uint8 x, Uint8 y); void allocatePointers(); void Animate(Tanimation &a, SDL_Rect &s); void AnimateIntroMenu(Tanimation &a, SDL_Rect &s); void ApplyGravity(); void CheckPlayerCollisionWithActors(); void CheckPlayerCollisionWithActors(); void CheckPlayerCollisionWithMap(); void CloseMusic(JA_Music music); void ClosePicture(LTexture *picture); void CloseSound(JA_Sound sound); void CreateActor(Tactor &a, Uint8 kind, Uint8 id, Sint16 dstx, Sint16 dsty, Sint16 dstw, Sint16 dsth, Sint16 srcx, Sint16 srcy, Sint16 sx, Sint16 sy, Sint16 timer, Sint16 frame, Uint8 direction, Uint8 parent); void DrawHud(); void DrawMap(); void DrawSprite(LTexture *sprite, SDL_Rect src_rect, SDL_Rect dst_rect); void EndGame(); void EndHud(); void EndMap(); void EndMenu(); void EndPlayer(); void EndProgram(); void IniActors(); void IniAnimatedTiles(); void IniGame(Uint8 zone); void IniHud(); void IniMap(); void IniMenu(); void IniPlayer(); void IniProgram(); void KillPlayer(); void LoadMap(); void LoadRoom(int num); void MoveActors(); void MovePlayer(int direction); void SetActor(Uint8 x, Uint8 y, Uint8 valor); void setExecutablePath(std::string path); void SetMapGFX(Uint8 zone); void SetMapMusic(Uint8 zone); void SetPlayerAnimation(Uint8 anim); void SetPlayerDirection(int direction); void SetProgSection(Uint8 section); void SetZone(int room); #endif