From 57fe8f3c4124819b95164547333a33f4c45eac8d Mon Sep 17 00:00:00 2001 From: Kelly Rauchenberger Date: Sun, 10 Mar 2019 12:07:40 -0400 Subject: Editor now allows tile placement You can scroll through the three layers (map, track, object) with Z/X. You can swap between focusing on the map and the tileset with TAB. You can place tiles with enter or space. Pretty rudimentary, but it's a start. --- src/level.cpp | 41 ++++++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 17 deletions(-) (limited to 'src/level.cpp') diff --git a/src/level.cpp b/src/level.cpp index b97eb70..e22a43f 100644 --- a/src/level.cpp +++ b/src/level.cpp @@ -7,30 +7,37 @@ texture_ptr Level::render(SDL_Renderer* ren, Layer layer) const ren, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, - WINDOW_SIZE.w(), - WINDOW_SIZE.h())); + LEVEL_SIZE.w(), + LEVEL_SIZE.h())); SDL_SetRenderTarget(ren, canvas.get()); + SDL_SetTextureBlendMode(canvas.get(), SDL_BLENDMODE_BLEND); + SDL_SetRenderDrawColor(ren, 0, 0, 0, 0); + SDL_RenderFillRect(ren, nullptr); for (size_t y = 0; y < size_.h(); y++) { for (size_t x = 0; x < size_.w(); x++) { - if (layer == Layer::map) - { - int val = 255 - at(x, y) * 10; - - SDL_SetRenderDrawColor(ren, val, val, val, 255); - - SDL_Rect rect { - static_cast(x * TILE_SIZE.w()), - static_cast(y * TILE_SIZE.h()), - TILE_SIZE.w(), - TILE_SIZE.h() - }; - - SDL_RenderFillRect(ren, &rect); - } + SDL_Rect src { + 0, + static_cast(at(x, y, layer) * TILE_SIZE.h()), + TILE_SIZE.w(), + TILE_SIZE.h() + }; + + SDL_Rect dest { + static_cast(x * TILE_SIZE.w()), + static_cast(y * TILE_SIZE.h()), + TILE_SIZE.w(), + TILE_SIZE.h() + }; + + SDL_RenderCopy( + ren, + getTileset(layer).getImage().get(), + &src, + &dest); } } -- cgit 1.4.1