diff --git a/src/sagotmx/tmx_struct.h b/src/sagotmx/tmx_struct.h index 4aaf19e..69bd8fc 100644 --- a/src/sagotmx/tmx_struct.h +++ b/src/sagotmx/tmx_struct.h @@ -388,6 +388,7 @@ inline TileMap string2tilemap(const std::string& tmx_content) { getElement(object_node, "eclipse", to.isEcplise); group.objects.push_back(to); } + m.object_groups.push_back(group); } return m; } diff --git a/src/saland/Game.cpp b/src/saland/Game.cpp index 71d57aa..1b6218e 100644 --- a/src/saland/Game.cpp +++ b/src/saland/Game.cpp @@ -33,6 +33,14 @@ static void DrawLayer(SDL_Renderer* renderer, SDL_Texture* texture, const sago:: } } +static void DrawOjbectGroup (SDL_Renderer* renderer, const sago::tiled::TileMap& tm, size_t object_group, int topx, int topy) { + const sago::tiled::TileObjectGroup& group = tm.object_groups.at(object_group); + for (const sago::tiled::TileObject& o : group.objects) { + rectangleRGBA(renderer, o.x - topx, o.y - topy, + o.x+o.width-topx, o.y + o.height - topy, 255, 255, 0, 255); + } +} + struct Game::GameImpl { std::vector > placeables; float time = 0.0; @@ -106,6 +114,9 @@ void Game::Draw(SDL_Renderer* target) { for (size_t i = 0; i < data->world.tm.layers.size(); ++i ) { DrawLayer(target, texture, data->world.tm, i, data->topx, data->topy); } + for (size_t i = 0; i world.tm.object_groups.size(); ++i) { + DrawOjbectGroup(target, data->world.tm, i, data->topx, data->topy); + } int mousebox_x = data->world_mouse_x - data->world_mouse_x%32 - data->topx; int mousebox_y = data->world_mouse_y - data->world_mouse_y%32 - data->topy; rectangleRGBA(globalData.screen, mousebox_x, mousebox_y,