|
|
|
@ -80,6 +80,13 @@ TEST_CASE("dijkstra algo test", "[map]") { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
sf::Sprite render_sprite(std::unordered_map<wchar_t, sf::Vector2i>& sprite_coord, sf::Vector2i size, wchar_t display, sf::Texture& map_sprites) { |
|
|
|
|
auto coords = sprite_coord.at(display); |
|
|
|
|
sf::IntRect square{coords, {size.x, size.y}}; |
|
|
|
|
sf::Sprite sprite{map_sprites, square}; |
|
|
|
|
return sprite; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TEST_CASE("map image test", "[map-sprite]") { |
|
|
|
|
components::init(); |
|
|
|
@ -89,7 +96,7 @@ TEST_CASE("map image test", "[map-sprite]") { |
|
|
|
|
auto &walls = level.map->tiles(); |
|
|
|
|
auto &tile_set = textures::get_map_tile_set(); |
|
|
|
|
|
|
|
|
|
sf::Vector2i size{64,64}; |
|
|
|
|
sf::Vector2i size{32,32}; |
|
|
|
|
matrix::dump("TILES?", walls); |
|
|
|
|
|
|
|
|
|
std::unordered_map<wchar_t, sf::Vector2i> sprite_coord; |
|
|
|
@ -109,29 +116,31 @@ TEST_CASE("map image test", "[map-sprite]") { |
|
|
|
|
(unsigned int)matrix::height(walls) * size.y}; |
|
|
|
|
|
|
|
|
|
sf::RenderTexture render{dim}; |
|
|
|
|
render.clear({50,50,50,255}); |
|
|
|
|
render.clear({0,0,0,0}); |
|
|
|
|
|
|
|
|
|
sf::Texture map_sprites{"./assets/map_tiles.png"}; |
|
|
|
|
sf::Texture paper{"./assets/ui/full_screen_paper.png"}; |
|
|
|
|
sf::Sprite paper_sprite{paper}; |
|
|
|
|
paper_sprite.scale({1.5f, 1.5f}); |
|
|
|
|
paper_sprite.setPosition({-30.0f, -30.0f}); |
|
|
|
|
render.draw(paper_sprite); |
|
|
|
|
|
|
|
|
|
for(matrix::each_row it{walls}; it.next();) { |
|
|
|
|
size_t tid = walls[it.y][it.x]; |
|
|
|
|
wchar_t display = tile_set[tid]; |
|
|
|
|
REQUIRE(sprite_coord.contains(display)); |
|
|
|
|
|
|
|
|
|
auto coords = sprite_coord.at(display); |
|
|
|
|
sf::IntRect square{coords, {size.x, size.y}}; |
|
|
|
|
sf::Sprite sprite{map_sprites, square}; |
|
|
|
|
// sprite.setColor({150,150,150,255});
|
|
|
|
|
auto sprite = render_sprite(sprite_coord, size, display, map_sprites); |
|
|
|
|
sprite.setPosition({float(it.x * size.x), float(it.y * size.y)}); |
|
|
|
|
sprite.setColor({255, 255, 255, 200}); |
|
|
|
|
render.draw(sprite); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
level.world->query<components::Position, components::Tile>([&](auto, auto &pos, auto &entity_glyph) { |
|
|
|
|
REQUIRE(sprite_coord.contains(entity_glyph.display)); |
|
|
|
|
auto coords = sprite_coord.at(entity_glyph.display); |
|
|
|
|
sf::IntRect square{coords, {size.x, size.y}}; |
|
|
|
|
sf::Sprite sprite{map_sprites, square}; |
|
|
|
|
|
|
|
|
|
auto sprite = render_sprite(sprite_coord, size, entity_glyph.display, map_sprites); |
|
|
|
|
|
|
|
|
|
sprite.setColor({255,150,150,255}); |
|
|
|
|
sprite.setPosition({float(pos.location.x * size.x), float(pos.location.y * size.y)}); |
|
|
|
|
render.draw(sprite); |
|
|
|
|