diff --git a/CTestTestfile.cmake b/CTestTestfile.cmake new file mode 100644 index 0000000..29326bc --- /dev/null +++ b/CTestTestfile.cmake @@ -0,0 +1,7 @@ +# CMake generated Testfile for +# Source directory: C:/Users/faris/Community-Game +# Build directory: C:/Users/faris/Community-Game +# +# This file includes the relevant testing commands required for +# testing this directory and lists subdirectories to be tested as well. +subdirs("deps/SFML") diff --git a/res/textures/tiles/atlas.png b/res/textures/tiles/atlas.png index f60f5c6..ba3913e 100644 Binary files a/res/textures/tiles/atlas.png and b/res/textures/tiles/atlas.png differ diff --git a/src/level/LevelRenderer.cpp b/src/level/LevelRenderer.cpp index 206c992..3a6ecfb 100644 --- a/src/level/LevelRenderer.cpp +++ b/src/level/LevelRenderer.cpp @@ -12,17 +12,16 @@ namespace Level renderWindow = window; } - void LevelRenderer::renderWallTileSide(uint32 x, uint32 y, sf::Sprite& sprite) + void LevelRenderer::renderWallTileSide(uint32 x, uint32 y, sf::Sprite& sprite, float height) { sf::Vector3f tilePosition(static_cast(x), static_cast(y) + 32.0f, 0); - sprite.setOrigin(0, 32.0f); + sprite.setOrigin(0, height + 1.0f * (1 - sprite.getScale().y) * sprite.getTextureRect().height); sprites.push_back(std::make_pair(tilePosition, &sprite)); } void LevelRenderer::renderWallTileTop(uint32 x, uint32 y, float height, sf::Sprite& sprite) { - sf::Vector3f tilePosition(static_cast(x), static_cast(y + 32), height); - sprite.setOrigin(0, 32); + sf::Vector3f tilePosition(static_cast(x), static_cast(y), height); sprites.push_back(std::make_pair(tilePosition, &sprite)); } diff --git a/src/level/LevelRenderer.h b/src/level/LevelRenderer.h index 49f6e31..ff4b096 100644 --- a/src/level/LevelRenderer.h +++ b/src/level/LevelRenderer.h @@ -17,7 +17,7 @@ namespace Level public: static void setRenderWindow(sf::RenderWindow* window); - static void renderWallTileSide(uint32 x, uint32 y, sf::Sprite& sprite); + static void renderWallTileSide(uint32 x, uint32 y, sf::Sprite& sprite, float height); static void renderWallTileTop(uint32 x, uint32 y, float height, sf::Sprite& sprite); static void renderEntitySprite(float x, float y, sf::Sprite& sprite); static void drawAll(); diff --git a/src/level/Tile/Tile.cpp b/src/level/Tile/Tile.cpp index 00543bd..f92f853 100644 --- a/src/level/Tile/Tile.cpp +++ b/src/level/Tile/Tile.cpp @@ -26,7 +26,7 @@ namespace Tile fMedStone = std::make_unique(1, sf::Sprite(*tileset, sf::IntRect(0, static_cast(TILE_SIZE) * 2, static_cast(TILE_SIZE), static_cast(TILE_SIZE))), false); fDarkStone = std::make_unique(2, sf::Sprite(*tileset, sf::IntRect(0, static_cast(TILE_SIZE) * 3, static_cast(TILE_SIZE), static_cast(TILE_SIZE))), false); stoneWall = std::make_unique(3, sf::Sprite(*tileset, sf::IntRect(0, static_cast(TILE_SIZE) * 4, static_cast(TILE_SIZE), static_cast(TILE_SIZE))), - sf::Sprite(*tileset, sf::IntRect(0, 160, static_cast(TILE_SIZE), static_cast(TILE_SIZE))), TILE_SIZE, true); + sf::Sprite(*tileset, sf::IntRect(0, 160, static_cast(TILE_SIZE), static_cast(2 * TILE_SIZE))), 2 * TILE_SIZE, true); } Tile::Tile(byte id, sf::Sprite sprite, bool solid) diff --git a/src/level/Tile/WallTile.cpp b/src/level/Tile/WallTile.cpp index 8367bfc..a9a9d09 100644 --- a/src/level/Tile/WallTile.cpp +++ b/src/level/Tile/WallTile.cpp @@ -16,11 +16,12 @@ namespace Tile void WallTile::render(uint32 x, uint32 y, Level& level, sf::RenderWindow& window) { - LevelRenderer::renderWallTileTop(x * static_cast(TILE_SIZE), y * static_cast(TILE_SIZE), 32, m_sprite); + LevelRenderer::renderWallTileTop(x * static_cast(TILE_SIZE), y * static_cast(TILE_SIZE), m_height, m_sprite); Tile* nextTile = level.getTile(x, y + 1); - if (nextTile == nullptr || !nextTile->isSolid()) + if (nextTile == nullptr || !nextTile->isSolid() || (nextTile->isSolid() && ((WallTile*)nextTile)->m_height < m_height)) { - LevelRenderer::renderWallTileSide(x * static_cast(TILE_SIZE), y * static_cast(TILE_SIZE), m_spriteSide); + m_spriteSide.setScale(1, m_height / m_spriteSide.getTextureRect().height); + LevelRenderer::renderWallTileSide(x * static_cast(TILE_SIZE), y * static_cast(TILE_SIZE), m_spriteSide, m_height); } } }} \ No newline at end of file