Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions CTestTestfile.cmake
Original file line number Diff line number Diff line change
@@ -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")
Binary file modified res/textures/tiles/atlas.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
7 changes: 3 additions & 4 deletions src/level/LevelRenderer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<float>(x), static_cast<float>(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<float>(x), static_cast<float>(y + 32), height);
sprite.setOrigin(0, 32);
sf::Vector3f tilePosition(static_cast<float>(x), static_cast<float>(y), height);
sprites.push_back(std::make_pair(tilePosition, &sprite));
}

Expand Down
2 changes: 1 addition & 1 deletion src/level/LevelRenderer.h
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down
2 changes: 1 addition & 1 deletion src/level/Tile/Tile.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ namespace Tile
fMedStone = std::make_unique<Tile>(1, sf::Sprite(*tileset, sf::IntRect(0, static_cast<int>(TILE_SIZE) * 2, static_cast<int>(TILE_SIZE), static_cast<int>(TILE_SIZE))), false);
fDarkStone = std::make_unique<Tile>(2, sf::Sprite(*tileset, sf::IntRect(0, static_cast<int>(TILE_SIZE) * 3, static_cast<int>(TILE_SIZE), static_cast<int>(TILE_SIZE))), false);
stoneWall = std::make_unique<WallTile>(3, sf::Sprite(*tileset, sf::IntRect(0, static_cast<int>(TILE_SIZE) * 4, static_cast<int>(TILE_SIZE), static_cast<int>(TILE_SIZE))),
sf::Sprite(*tileset, sf::IntRect(0, 160, static_cast<int>(TILE_SIZE), static_cast<int>(TILE_SIZE))), TILE_SIZE, true);
sf::Sprite(*tileset, sf::IntRect(0, 160, static_cast<int>(TILE_SIZE), static_cast<int>(2 * TILE_SIZE))), 2 * TILE_SIZE, true);
}

Tile::Tile(byte id, sf::Sprite sprite, bool solid)
Expand Down
7 changes: 4 additions & 3 deletions src/level/Tile/WallTile.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,12 @@ namespace Tile

void WallTile::render(uint32 x, uint32 y, Level& level, sf::RenderWindow& window)
{
LevelRenderer::renderWallTileTop(x * static_cast<uint32>(TILE_SIZE), y * static_cast<uint32>(TILE_SIZE), 32, m_sprite);
LevelRenderer::renderWallTileTop(x * static_cast<uint32>(TILE_SIZE), y * static_cast<uint32>(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<uint32>(TILE_SIZE), y * static_cast<uint32>(TILE_SIZE), m_spriteSide);
m_spriteSide.setScale(1, m_height / m_spriteSide.getTextureRect().height);
LevelRenderer::renderWallTileSide(x * static_cast<uint32>(TILE_SIZE), y * static_cast<uint32>(TILE_SIZE), m_spriteSide, m_height);
}
}
}}