From b1c91d2d0d345a22303684453090e5373ce6d8bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergio=20Valor=20Mart=C3=ADnez?= Date: Wed, 17 Aug 2022 17:06:49 +0200 Subject: [PATCH] =?UTF-8?q?Colisiones=20b=C3=A1sicas=20terminadas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/map/01.tmx | 10 +++++----- source/map.cpp | 20 ++++++++++++++++++-- source/player.cpp | 26 +++++++++++++++++++++----- 3 files changed, 44 insertions(+), 12 deletions(-) diff --git a/data/map/01.tmx b/data/map/01.tmx index 8a7a433..5c3c362 100644 --- a/data/map/01.tmx +++ b/data/map/01.tmx @@ -11,11 +11,11 @@ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,74,74,74,0,0,0,0, -74,74,74,75,75,74,74,68,68,68,68,68,74,74,78,74,68,74,68,68 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,65,0,0,0,0, +65,65,0,0,65,65,0,0,0,0,0,0,0,0,0,68,0,0,0,0, +0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0, +0,49,0,0,0,0,0,47,0,0,0,0,0,77,74,76,0,0,0,0, +74,74,74,75,75,74,74,68,68,65,68,68,74,74,78,74,68,74,68,68 diff --git a/source/map.cpp b/source/map.cpp index 70b5a19..eea786c 100644 --- a/source/map.cpp +++ b/source/map.cpp @@ -186,11 +186,11 @@ void Map::fillMapTexture() { SDL_SetRenderTarget(renderer, map_texture); SDL_SetTextureBlendMode(map_texture, SDL_BLENDMODE_BLEND); - SDL_SetRenderDrawColor(renderer, 0x00, 0x00, 0x00, 0x00); + SDL_SetRenderDrawColor(renderer, 0x00, 0x00, 0x00, 0xFF); SDL_RenderClear(renderer); // Dibuja la textura de fondo - SDL_Rect clip = {0, 0, 320, 240 - 32}; + SDL_Rect clip = {0, 0, 320, 208}; texture_bg->render(renderer, 0, 0, &clip); // Dibuja el mapeado de tiles @@ -209,6 +209,22 @@ void Map::fillMapTexture() texture_tile->render(renderer, x * tile_size, y * tile_size, &clip); } + // Dibuja el degradado del marcador + int color = 105; + for (int i = 208; i < 240; i++) + { + SDL_SetRenderDrawColor(renderer, 0x69, color, 0x69, 0xFF); + SDL_RenderDrawLine(renderer, 0, i, 320, i); + color--; + } + + // Dibuja el marco del marcador + SDL_SetRenderDrawColor(renderer, 85, 50, 85, 0xFF); + SDL_Rect rect = {0, 208, 320, 32}; + SDL_RenderDrawRect(renderer, &rect); + rect = {1, 209, 318, 30}; + SDL_RenderDrawRect(renderer, &rect); + SDL_SetRenderTarget(renderer, nullptr); } diff --git a/source/player.cpp b/source/player.cpp index 0fca023..b07c52c 100644 --- a/source/player.cpp +++ b/source/player.cpp @@ -17,7 +17,7 @@ Player::Player(SDL_Renderer *renderer, Asset *asset, Input *input, Map *map) sprite = new AnimatedSprite(texture, renderer, asset->get("player.ani")); - x = 16; + x = 3 * 16; y = 40; vx = 0; vy = 0; @@ -120,6 +120,8 @@ bool Player::checkMapCollisions() { bool collision = false; + updateColliders(); + for (auto c : collider) { collision |= (map->getTile(c) == wall); @@ -133,18 +135,32 @@ void Player::move() { const float old_x = x; x += vx; - updateColliders(); if (checkMapCollisions()) { x = old_x; } - const float old_y = y; + // const float old_y = y; y += vy; - updateColliders(); if (checkMapCollisions()) { - y = old_y; + // y = old_y; + if (vy > 0) + { + do + { + y--; + } while (checkMapCollisions()); + } + else + { + do + { + y++; + } while (checkMapCollisions()); + } + + vy = 0; } sprite->setPosX(x);