diff --git a/data/map/01.tmx b/data/map/01.tmx index 42a816e..c27b641 100644 --- a/data/map/01.tmx +++ b/data/map/01.tmx @@ -12,17 +12,17 @@ 0,18,19,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,50,51,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,19,20,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,52,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,259,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,259,0,0,0, -0,0,0,0,0,0,0,263,264,0,0,0,0,0,0,0,0,257,258,0,0,0,0,0,0,0,0,0,263,264,0,0,0,0,0,0,259,0,0,0, -0,0,0,0,0,0,0,295,296,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,265,266,0,0,0,0,0,0,259,0,0,0, -0,263,264,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,259,0,0,0, -0,295,296,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,577,578,579,580,581,582,0,0,0,0,0,0,259,0,0,259,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,190,0,0,0,0,0,0,0,0,259,0,0,259,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,577,578,579,580,581,582,0,0,0,0,0,0,259,0,0,259,0,0,0, -0,0,0,0,239,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,190,0,0,0,265,266,0,0,0,259,0,0,259,0,0,0, -0,0,0,257,258,257,258,0,0,0,0,0,0,0,0,0,0,0,0,0,0,577,578,579,580,581,582,0,0,0,0,0,0,259,0,0,259,0,0,0, -0,0,0,289,290,289,290,0,0,0,0,577,578,579,580,581,582,0,0,0,0,0,0,189,190,0,0,0,0,0,0,0,0,259,0,0,259,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,263,264,0,0,0,0,0,0,0,0,257,258,0,0,0,0,0,0,0,297,0,0,0,0,0,0,263,264,0,0,0,0,0, +0,0,0,0,0,0,0,295,296,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,265,266,0,0,0,0,0, +0,263,264,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,295,296,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,577,578,579,580,581,582,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,577,578,579,580,581,582,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,239,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,190,0,0,0,0,0,0,0,0,265,266,0,0,0,0,0, +0,0,0,257,258,257,258,0,0,0,0,0,0,0,0,0,0,0,0,0,0,577,578,579,580,581,582,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,289,290,289,290,0,0,0,0,577,578,579,580,581,582,0,0,0,0,0,0,189,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,189,190,0,0,0,0,0,0,577,578,579,580,581,582,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,189,190,0,0,0,0,0,0,0,0,189,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 263,264,0,0,0,0,0,193,194,0,0,0,0,189,190,0,0,0,0,0,0,0,281,282,277,278,279,280,0,0,0,0,0,0,0,0,0,0,0,0, diff --git a/data/map/surface.tsx b/data/map/surface.tsx index 58e3c78..eccee8d 100644 --- a/data/map/surface.tsx +++ b/data/map/surface.tsx @@ -1,4 +1,4 @@ - - + + diff --git a/data/player/player.ani b/data/player/player.ani index d04d55e..262ddc0 100644 --- a/data/player/player.ani +++ b/data/player/player.ani @@ -6,7 +6,7 @@ tile_height=24 name=stand speed=8 loop=yes -frames=0,1,2,2,1,0,0,1,2,2,1,0,0,1,2,2,1,0,0,1,2,2,1,0,0,1,2,3,4,5,6,7,0,0,0,0 +frames=0,1,2,2,1,0,0,1,2,2,1,0,0,1,2,2,1,0,0,1,2,2,1,0,0,1,2,3,4,5,4,5,5,5,6,6,7,7,0,0 [/animation] [animation] diff --git a/source/enemy.cpp b/source/enemy.cpp index c6595c5..7d5ae41 100644 --- a/source/enemy.cpp +++ b/source/enemy.cpp @@ -15,11 +15,8 @@ Enemy::Enemy(enemy_t enemy) sprite = new AnimatedSprite(texture, renderer, asset->get(enemy.animation)); // Obten el resto de valores - x1 = enemy.x1; - x2 = enemy.x2; - y1 = enemy.y1; - y2 = enemy.y2; - color = enemy.color; + p1 = enemy.p1; + p2 = enemy.p2; sprite->setPosX(enemy.x); sprite->setPosY(enemy.y); sprite->setVelX(enemy.vx); @@ -63,13 +60,13 @@ void Enemy::update() // Comprueba si ha llegado al limite del recorrido para darse media vuelta void Enemy::checkPath() { - if (sprite->getPosX() > x2 || sprite->getPosX() < x1) + if (sprite->getPosX() > p2.x || sprite->getPosX() < p1.x) { sprite->setVelX(sprite->getVelX() * (-1)); sprite->flip(); } - if (sprite->getPosY() > y2 || sprite->getPosY() < y1) + if (sprite->getPosY() > p2.y || sprite->getPosY() < p1.y) { sprite->setVelY(sprite->getVelY() * (-1)); sprite->flip(); diff --git a/source/enemy.h b/source/enemy.h index 42e35e7..61ee167 100644 --- a/source/enemy.h +++ b/source/enemy.h @@ -22,11 +22,8 @@ struct enemy_t float y; // Posición inicial en el eje Y float vx; // Velocidad en el eje X float vy; // Velocidad en el eje Y - int x1; // Limite izquierdo de la ruta en el eje X - int x2; // Limite derecho de la ruta en el eje X - int y1; // Limite superior de la ruta en el eje Y - int y2; // Limite inferior de la ruta en el eje Y - color_t color; // Color del enemigo + SDL_Point p1; // Punto 1 (inicial) de la ruta + SDL_Point p2; // Punto 2 (final) de la ruta }; // Clase Enemy @@ -37,11 +34,8 @@ private: Asset *asset; // Objeto con la ruta a todos los ficheros de recursos LTexture *texture; // Textura con los graficos del enemigo AnimatedSprite *sprite; // Sprite del enemigo - color_t color; // Color del enemigo - int x1; // Limite izquierdo de la ruta en el eje X - int x2; // Limite derecho de la ruta en el eje X - int y1; // Limite superior de la ruta en el eje Y - int y2; // Limite inferior de la ruta en el eje Y + SDL_Point p1; // Punto 1 (inicial) de la ruta + SDL_Point p2; // Punto 2 (final) de la ruta SDL_Rect collider; // Caja de colisión // Comprueba si ha llegado al limite del recorrido para darse media vuelta diff --git a/source/game.cpp b/source/game.cpp index dac19c2..02a6967 100644 --- a/source/game.cpp +++ b/source/game.cpp @@ -13,6 +13,7 @@ Game::Game(SDL_Renderer *renderer, Asset *asset, Screen *screen, Input *input) map = new Map(asset->get("01.map"), renderer, asset); player = new Player(renderer, asset, input, map); debugText = new Text(asset->get("debug.png"), asset->get("debug.txt"), renderer); + music = JA_LoadMusic(asset->get("music_surface.ogg").c_str()); } // Destructor @@ -22,6 +23,7 @@ Game::~Game() delete map; delete player; delete debugText; + JA_DeleteMusic(music); } // Bucle para el juego @@ -29,6 +31,8 @@ section_t Game::run() { init(); + JA_PlayMusic(music); + while (section.name == SECTION_PROG_GAME) { // Sección juego jugando @@ -39,6 +43,8 @@ section_t Game::run() } } + JA_StopMusic(); + return section; } diff --git a/source/game.h b/source/game.h index 6f8b74d..14a25a9 100644 --- a/source/game.h +++ b/source/game.h @@ -26,6 +26,7 @@ private: Map *map; // Objeto encargado de gestionar el mapeado del juego Player *player; // Objeto para gestionar el jugador bool debug; // Indica si esta activo el modo de depuración + JA_Music music; // Contiene la musica que se reproduce durante el juego // Actualiza el juego, las variables, comprueba la entrada, etc. void update(); diff --git a/source/map.cpp b/source/map.cpp index 497cdcb..9e056c4 100644 --- a/source/map.cpp +++ b/source/map.cpp @@ -234,19 +234,19 @@ bool Map::setEnemy(enemy_t *enemy, std::string var, std::string value) } else if (var == "x1") { - enemy->x1 = std::stoi(value) * tile_size; + enemy->p1.x = std::stoi(value) * tile_size; } else if (var == "x2") { - enemy->x2 = std::stoi(value) * tile_size; + enemy->p2.x = std::stoi(value) * tile_size; } else if (var == "y1") { - enemy->y1 = std::stoi(value) * tile_size; + enemy->p1.y = std::stoi(value) * tile_size; } else if (var == "y2") { - enemy->y2 = std::stoi(value) * tile_size; + enemy->p2.y = std::stoi(value) * tile_size; } else if (var == "[/enemy]") { diff --git a/source/prog.cpp b/source/prog.cpp index 6d55dce..b5fa36a 100644 --- a/source/prog.cpp +++ b/source/prog.cpp @@ -70,7 +70,7 @@ Prog::~Prog() // Inicializa JailAudio void Prog::initJailAudio() { - JA_Init(48000, AUDIO_S16, 2); + JA_Init(44100, AUDIO_S16, 2); } // Arranca SDL y crea la ventana