Map is back.

master
Zed A. Shaw 7 days ago
parent af2947c50a
commit 8453e7c3b9
  1. 12
      systems.cpp
  2. 7
      textures.cpp
  3. 3
      textures.hpp
  4. 11
      worldbuilder.cpp

@ -390,7 +390,7 @@ std::wstring System::draw_map(GameLevel level, size_t view_x, size_t view_y, int
auto player_pos = world.get<Position>(level.player).location; auto player_pos = world.get<Position>(level.player).location;
Point cam_orig = map.center_camera(player_pos, view_x, view_y); Point cam_orig = map.center_camera(player_pos, view_x, view_y);
auto &tiles = map.tiles(); auto &tiles = map.tiles();
(void)tiles; auto &tile_set = textures::get_tile_set();
// make a grid of chars to work with // make a grid of chars to work with
auto grid = shiterator::make<wchar_t>(view_x+1, view_y+1); auto grid = shiterator::make<wchar_t>(view_x+1, view_y+1);
@ -399,11 +399,13 @@ std::wstring System::draw_map(GameLevel level, size_t view_x, size_t view_y, int
for(shiterator::each_cell_t it{grid}; it.next();) { for(shiterator::each_cell_t it{grid}; it.next();) {
size_t tile_y = size_t(it.y) + cam_orig.y; size_t tile_y = size_t(it.y) + cam_orig.y;
size_t tile_x = size_t(it.x) + cam_orig.x; size_t tile_x = size_t(it.x) + cam_orig.x;
(void)tile_y;
(void)tile_x;
// FIX ME if(matrix::inbounds(tiles, tile_x, tile_y)) {
grid[it.y][it.x] = 'F'; size_t tid = tiles[tile_y][tile_x];
grid[it.y][it.x] = tile_set[tid];
} else {
grid[it.y][it.x] = L' ';
}
} }

@ -36,6 +36,7 @@ namespace textures {
Config assets("assets/tiles.json"); Config assets("assets/tiles.json");
auto &tiles = assets.json(); auto &tiles = assets.json();
TMGR.surfaces.resize(tiles.size()); TMGR.surfaces.resize(tiles.size());
TMGR.tile_set.resize(tiles.size());
for(auto &el : tiles.items()) { for(auto &el : tiles.items()) {
auto &config = el.value(); auto &config = el.value();
@ -44,8 +45,10 @@ namespace textures {
if(surface_i >= tiles.size()) { if(surface_i >= tiles.size()) {
TMGR.surfaces.resize(surface_i + 1); TMGR.surfaces.resize(surface_i + 1);
TMGR.tile_set.resize(surface_i + 1);
} }
TMGR.tile_set[surface_i] = config["display"];
TMGR.surfaces[surface_i] = load_image(texture_fname); TMGR.surfaces[surface_i] = load_image(texture_fname);
} }
} }
@ -80,6 +83,10 @@ namespace textures {
return texture; return texture;
} }
std::vector<wchar_t>& get_tile_set() {
return TMGR.tile_set;
}
const uint32_t* get_surface(size_t num) { const uint32_t* get_surface(size_t num) {
return (const uint32_t *)TMGR.surfaces[num].getPixelsPtr(); return (const uint32_t *)TMGR.surfaces[num].getPixelsPtr();
} }

@ -16,6 +16,7 @@ namespace textures {
struct TextureManager { struct TextureManager {
std::vector<sf::Image> surfaces; std::vector<sf::Image> surfaces;
std::vector<wchar_t> tile_set;
std::unordered_map<std::string, SpriteTexture> sprite_textures; std::unordered_map<std::string, SpriteTexture> sprite_textures;
sf::Image floor; sf::Image floor;
sf::Image ceiling; sf::Image ceiling;
@ -27,6 +28,8 @@ namespace textures {
sf::Image load_image(const std::string& filename); sf::Image load_image(const std::string& filename);
std::vector<wchar_t>& get_tile_set();
const uint32_t* get_surface(size_t num); const uint32_t* get_surface(size_t num);
const uint32_t* get_floor(); const uint32_t* get_floor();

@ -10,17 +10,6 @@
using namespace fmt; using namespace fmt;
using namespace components; using namespace components;
void big_donut() {
// maze.inner_donut(12, 3);
// $map.invert_space();
// maze.hunt_and_kill({11,11});
// maze.init();
// maze.inner_donut(12, 3);
// $map.invert_space();
// maze.hunt_and_kill({11,11});
}
void WorldBuilder::stylize_rooms() { void WorldBuilder::stylize_rooms() {
auto& tiles = $map.tiles(); auto& tiles = $map.tiles();

Loading…
Cancel
Save