diff --git a/data/enemies/01.enemy b/data/enemies/01.enemy deleted file mode 100644 index 9a7fc44..0000000 --- a/data/enemies/01.enemy +++ /dev/null @@ -1,10 +0,0 @@ -tileset=enemy01.png -x=8 -y=8 -vx=0.1 -vy=0 -x1=8 -x2=200 -y1=8 -y2=8 -color=red \ No newline at end of file diff --git a/data/room/01.room b/data/room/01.room index 1f0b360..bb528aa 100644 --- a/data/room/01.room +++ b/data/room/01.room @@ -12,6 +12,8 @@ room1.tmx [enemy] tileset=enemy01.png +width=16 +height=16 x=1 y=0 vx=0 @@ -25,6 +27,8 @@ color=red [enemy] tileset=enemy01.png +width=16 +height=16 x=5 y=9 vx=0.6 diff --git a/data/room/02.room b/data/room/02.room index 0743b32..f3af236 100644 --- a/data/room/02.room +++ b/data/room/02.room @@ -2,7 +2,7 @@ name=Test Room 2 bg_color=black tileset=room1.png room_up=0 -room_down=0 +room_down=04.room room_left=01.room room_right=0 @@ -12,6 +12,8 @@ room2.tmx [enemy] tileset=enemy01.png +width=16 +height=16 x=14 y=0 vx=0 diff --git a/data/room/03.room b/data/room/03.room new file mode 100644 index 0000000..0743b32 --- /dev/null +++ b/data/room/03.room @@ -0,0 +1,31 @@ +name=Test Room 2 +bg_color=black +tileset=room1.png +room_up=0 +room_down=0 +room_left=01.room +room_right=0 + +[tilemap] +room2.tmx +[tilemap-end] + +[enemy] +tileset=enemy01.png +x=14 +y=0 +vx=0 +vy=1 +x1=14 +y1=0 +x2=14 +y2=13 +color=purple +[enemy-end] + +[item] +tileset=items.png +tile=0 +x=19 +y=6 +[item-end] \ No newline at end of file diff --git a/data/room/04.room b/data/room/04.room new file mode 100644 index 0000000..03ca55d --- /dev/null +++ b/data/room/04.room @@ -0,0 +1,78 @@ +name=The Fridge +bg_color=blue +tileset=room1.png +room_up=02.room +room_down=0 +room_left=0 +room_right=0 + +[tilemap] +room4.tmx +[tilemap-end] + +[enemy] +tileset=enemy02.png +width=8 +height=16 +x=1 +y=3 +vx=1 +vy=0 +x1=1 +y1=3 +x2=14 +y2=3 +color=purple +[enemy-end] + +[enemy] +tileset=enemy02.png +width=8 +height=16 +x=30 +y=7 +vx=-0.8 +vy=0 +x1=10 +y1=7 +x2=30 +y2=7 +color=light_white +[enemy-end] + +[enemy] +tileset=enemy03.png +width=8 +height=8 +x=15 +y=12 +vx=0.5 +vy=0 +x1=15 +y1=12 +x2=30 +y2=12 +color=light_purple +[enemy-end] + +[item] +tileset=items.png +tile=6 +x=2 +y=2 +[item-end] + +[item] +tileset=items.png +tile=6 +x=29 +y=5 +[item-end] + + +[item] +tileset=items.png +tile=6 +x=21 +y=12 +[item-end] \ No newline at end of file diff --git a/data/room/room1.tmx b/data/room/room1.tmx index aebe041..bc91374 100644 --- a/data/room/room1.tmx +++ b/data/room/room1.tmx @@ -16,8 +16,8 @@ 21,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, 21,0,0,0,0,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,0,0,0,0,0,0,0, 21,0,0,0,0,0,0,0,0,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,381,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,381,21,21,21,21,21,21,21,21,21,21,21, +21,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, +21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21, 21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21 diff --git a/data/room/room2.tmx b/data/room/room2.tmx index 55452af..0db6e4f 100644 --- a/data/room/room2.tmx +++ b/data/room/room2.tmx @@ -11,14 +11,14 @@ 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,23, 0,0,0,0,0,0,0,0,0,0,0,203,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,23,23,23,23,0,0,0,0,0,0,0,0,0,23, -23,23,23,23,23,23,0,0,0,203,0,0,0,0,0,0,0,0,0,263,0,0,0,0,203,203,0,0,0,0,0,23, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,263,0,0,0,0,0,0,0,0,0,0,0,23, -0,0,0,0,0,0,0,0,0,203,0,0,0,0,0,0,0,0,0,263,0,0,0,0,203,203,0,0,0,0,0,23, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,263,0,0,0,0,0,0,0,0,0,0,0,23, +23,23,23,23,23,23,0,0,0,203,0,0,0,0,0,0,0,0,0,263,0,0,0,0,203,203,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,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,203,0,0,0,0,0,0,0,0,0,263,0,0,0,0,203,203,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,0,0,0,0,0,0,0,0,0,203,203,23, 0,0,0,0,0,0,0,203,203,203,203,203,203,0,0,0,0,0,0,263,0,0,0,0,203,203,0,0,0,0,0,23, 0,0,0,0,0,203,0,0,0,0,0,0,0,0,0,0,0,0,0,263,0,0,0,0,0,0,0,0,0,0,0,23, 43,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,263,83,83,83,83,83,83,83,83,83,83,83,83, -43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43 +43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,0,0,203,43,43,43,43,43,43,43,43,43,43,43,43,43,43 diff --git a/data/room/room3.tmx b/data/room/room3.tmx new file mode 100644 index 0000000..adb67c9 --- /dev/null +++ b/data/room/room3.tmx @@ -0,0 +1,24 @@ + + + + + +26,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, +26,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, +26,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, +26,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, +26,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, +26,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, +26,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, +26,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,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,0,232,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,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,232,0,0,0,0,0,0,0,0,0, +26,26,26,0,0,0,26,26,26,0,0,0,26,26,26,0,0,0,26,26,26,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,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,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, +381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381 + + + diff --git a/data/room/room4.tmx b/data/room/room4.tmx new file mode 100644 index 0000000..547b1a5 --- /dev/null +++ b/data/room/room4.tmx @@ -0,0 +1,24 @@ + + + + + +25,249,249,249,249,249,249,249,249,249,249,249,249,249,249,0,0,0,249,249,249,249,249,249,249,249,249,249,249,249,249,25, +25,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,25, +25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,0,0,0,0,0,0,0,0,0,0,0,0,0,25, +25,0,270,0,0,0,0,0,0,0,0,0,0,0,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25, +25,0,290,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,25, +25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,0,0,230,0,0,0,0,0,0,0,0,0,0,0,0,0,25, +25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,270,270,270,270,270,270,0,0,270,270,25, +25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,290,0,0,290,0,0,0,0,0,25, +25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,290,0,0,290,0,0,0,0,0,25, +25,0,0,0,0,0,0,0,0,0,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25, +25,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,25, +25,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,25, +25,249,249,249,249,249,249,249,249,249,249,249,249,249,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25, +22,0,0,0,0,0,289,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22, +22,0,0,0,0,0,289,0,0,0,0,0,0,0,0,0,0,0,381,0,0,0,0,0,0,381,0,0,0,0,0,22, +25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25 + + + diff --git a/media/enemies/enemy02.png b/media/enemies/enemy02.png new file mode 100644 index 0000000..efeaf42 Binary files /dev/null and b/media/enemies/enemy02.png differ diff --git a/media/enemies/enemy03.png b/media/enemies/enemy03.png new file mode 100644 index 0000000..68a764e Binary files /dev/null and b/media/enemies/enemy03.png differ diff --git a/media/items/items.png b/media/items/items.png index 5899a71..243cc8e 100644 Binary files a/media/items/items.png and b/media/items/items.png differ diff --git a/source/director.cpp b/source/director.cpp index db51a0a..2bfe9d0 100644 --- a/source/director.cpp +++ b/source/director.cpp @@ -199,10 +199,16 @@ void Director::setFileList() mAsset->add("/data/config.bin", data, false); mAsset->add("/data/room/01.room", room); mAsset->add("/data/room/02.room", room); + mAsset->add("/data/room/03.room", room); + mAsset->add("/data/room/04.room", room); mAsset->add("/data/room/room1.tmx", room); mAsset->add("/data/room/room2.tmx", room); + mAsset->add("/data/room/room3.tmx", room); + mAsset->add("/data/room/room4.tmx", room); mAsset->add("/media/tilesets/room1.png", bitmap); mAsset->add("/media/enemies/enemy01.png", bitmap); + mAsset->add("/media/enemies/enemy02.png", bitmap); + mAsset->add("/media/enemies/enemy03.png", bitmap); mAsset->add("/media/player/player01.png", bitmap); mAsset->add("/media/items/items.png", bitmap); } diff --git a/source/enemy.cpp b/source/enemy.cpp index 9f39d83..ef208d9 100644 --- a/source/enemy.cpp +++ b/source/enemy.cpp @@ -28,17 +28,17 @@ Enemy::Enemy(enemy_t enemy) sprite->setVelY(enemy.vy); // Inicializa el sprite con el resto de parametros comunes - sprite->setWidth(16); - sprite->setHeight(16); + sprite->setWidth(enemy.w); + sprite->setHeight(enemy.h); sprite->setCurrentFrame(0); sprite->setAnimationCounter(0); sprite->setAnimationNumFrames(0, 4); sprite->setAnimationSpeed(0, 5); sprite->setAnimationLoop(0, true); - sprite->setAnimationFrames(0, 0, 16 * 0, 0, 16, 16); - sprite->setAnimationFrames(0, 1, 16 * 1, 0, 16, 16); - sprite->setAnimationFrames(0, 2, 16 * 2, 0, 16, 16); - sprite->setAnimationFrames(0, 3, 16 * 3, 0, 16, 16); + sprite->setAnimationFrames(0, 0, enemy.w * 0, 0, enemy.w, enemy.h); + sprite->setAnimationFrames(0, 1, enemy.w * 1, 0, enemy.w, enemy.h); + sprite->setAnimationFrames(0, 2, enemy.w * 2, 0, enemy.w, enemy.h); + sprite->setAnimationFrames(0, 3, enemy.w * 3, 0, enemy.w, enemy.h); sprite->setSpriteClip(sprite->getAnimationClip(0, 0)); collider = getRect(); diff --git a/source/enemy.h b/source/enemy.h index 57a1dd8..048bf40 100644 --- a/source/enemy.h +++ b/source/enemy.h @@ -29,6 +29,8 @@ struct enemy_t SDL_Renderer *renderer; // El renderizador de la ventana Asset *asset; // Objeto con la ruta a todos los ficheros de recursos std::string tileset; // Fichero con los graficos del enemigo + int w; // Anchura del enemigo + int h; // Altura del enemigo float x; // Posición inicial en el eje X float y; // Posición inicial en el eje Y float vx; // Velocidad en el eje X diff --git a/source/room.cpp b/source/room.cpp index 119e348..a46aeba 100644 --- a/source/room.cpp +++ b/source/room.cpp @@ -265,6 +265,14 @@ bool Room::setEnemy(enemy_t *enemy, std::string _var, std::string _value) { enemy->tileset = _value; } + else if (_var == "width") + { + enemy->w = std::stof(_value); + } + else if (_var == "height") + { + enemy->h = std::stof(_value); + } else if (_var == "x") { enemy->x = std::stof(_value) * BLOCK; diff --git a/todo.txt b/todo.txt index a7c6b46..a988808 100644 --- a/todo.txt +++ b/todo.txt @@ -5,7 +5,7 @@ [x] Colisiones con los enemigos [x] Decidir un diseño para qué sucede en caso de morir: Recordar el punto por donde se entró al mapa y la velocidad en el eje X/Y que llevaba el personaje, crear puntos de reaparicion en las habitaciones, etc En el Jet Set Willy el juego recuerda la posicion y el momento. En las Tres Luces de Glaurung solo la posición. Se va a optar por seguir el diseño del Jet Set Willy -[ ] Crear tiles que maten +[x] Crear tiles que maten [ ] Crear tiles que deslicen, (no tipo hielo sino cinta) [ ] Tiles animados [ ] Crear ascensores