diff options
| author | Kelly Rauchenberger <fefferburbia@gmail.com> | 2021-02-02 16:51:22 -0500 |
|---|---|---|
| committer | Kelly Rauchenberger <fefferburbia@gmail.com> | 2021-02-02 16:51:22 -0500 |
| commit | b628c80f988c1fb250b94b17dca8e082bc4c1d0b (patch) | |
| tree | b4de344e1d8d28a88aa1a1dbc381e07f03707fff /src/renderer.cpp | |
| parent | a475b843e7d37f128ce30140d193f0312aa70c9c (diff) | |
| download | tanetane-b628c80f988c1fb250b94b17dca8e082bc4c1d0b.tar.gz tanetane-b628c80f988c1fb250b94b17dca8e082bc4c1d0b.tar.bz2 tanetane-b628c80f988c1fb250b94b17dca8e082bc4c1d0b.zip | |
Added moving camera
Diffstat (limited to 'src/renderer.cpp')
| -rw-r--r-- | src/renderer.cpp | 27 |
1 files changed, 14 insertions, 13 deletions
| diff --git a/src/renderer.cpp b/src/renderer.cpp index 9d20fee..03d5173 100644 --- a/src/renderer.cpp +++ b/src/renderer.cpp | |||
| @@ -88,13 +88,15 @@ void Renderer::render(Game& game) { | |||
| 88 | renLay0_ = renderMapLayer(game.getMap(), 1); | 88 | renLay0_ = renderMapLayer(game.getMap(), 1); |
| 89 | } | 89 | } |
| 90 | 90 | ||
| 91 | vec2i mapBounds = game.getMap().getMapSize() * game.getMap().getTileSize(); | ||
| 92 | |||
| 91 | texture_ptr canvas( | 93 | texture_ptr canvas( |
| 92 | SDL_CreateTexture( | 94 | SDL_CreateTexture( |
| 93 | ren_.get(), | 95 | ren_.get(), |
| 94 | SDL_PIXELFORMAT_RGBA8888, | 96 | SDL_PIXELFORMAT_RGBA8888, |
| 95 | SDL_TEXTUREACCESS_TARGET, | 97 | SDL_TEXTUREACCESS_TARGET, |
| 96 | CANVAS_WIDTH, | 98 | mapBounds.w(), |
| 97 | CANVAS_HEIGHT)); | 99 | mapBounds.h())); |
| 98 | 100 | ||
| 99 | if (!canvas) { | 101 | if (!canvas) { |
| 100 | throw sdl_error(); | 102 | throw sdl_error(); |
| @@ -105,12 +107,7 @@ void Renderer::render(Game& game) { | |||
| 105 | SDL_SetRenderDrawColor(ren_.get(), 255, 255, 255, 255); | 107 | SDL_SetRenderDrawColor(ren_.get(), 255, 255, 255, 255); |
| 106 | SDL_RenderClear(ren_.get()); | 108 | SDL_RenderClear(ren_.get()); |
| 107 | 109 | ||
| 108 | vec2i mapBounds = game.getMap().getMapSize() * game.getMap().getTileSize(); | 110 | SDL_RenderCopy(ren_.get(), renLay1_.get(), nullptr, nullptr); |
| 109 | |||
| 110 | { | ||
| 111 | SDL_Rect dest { -80, -80, mapBounds.w(), mapBounds.h() }; | ||
| 112 | SDL_RenderCopy(ren_.get(), renLay1_.get(), nullptr, &dest); | ||
| 113 | } | ||
| 114 | 111 | ||
| 115 | for (const Sprite& sprite : game.getSpritesByY() | game.spriteView()) { | 112 | for (const Sprite& sprite : game.getSpritesByY() | game.spriteView()) { |
| 116 | const SpriteFrame& frame = sprite.getFrame(); | 113 | const SpriteFrame& frame = sprite.getFrame(); |
| @@ -119,13 +116,17 @@ void Renderer::render(Game& game) { | |||
| 119 | SDL_RenderCopy(ren_.get(), textures_.at(sprite.getTextureId()).get(), &src, &dest); | 116 | SDL_RenderCopy(ren_.get(), textures_.at(sprite.getTextureId()).get(), &src, &dest); |
| 120 | } | 117 | } |
| 121 | 118 | ||
| 122 | { | 119 | SDL_RenderCopy(ren_.get(), renLay0_.get(), nullptr, nullptr); |
| 123 | SDL_Rect dest { -80, -80, mapBounds.w(), mapBounds.h() }; | 120 | |
| 124 | SDL_RenderCopy(ren_.get(), renLay0_.get(), nullptr, &dest); | 121 | SDL_Rect cameraField { |
| 125 | } | 122 | game.getCameraPosition().x(), |
| 123 | game.getCameraPosition().y(), | ||
| 124 | game.getFieldOfView().w(), | ||
| 125 | game.getFieldOfView().h() | ||
| 126 | }; | ||
| 126 | 127 | ||
| 127 | SDL_SetRenderTarget(ren_.get(), nullptr); | 128 | SDL_SetRenderTarget(ren_.get(), nullptr); |
| 128 | SDL_RenderCopy(ren_.get(), canvas.get(), nullptr, nullptr); | 129 | SDL_RenderCopy(ren_.get(), canvas.get(), &cameraField, nullptr); |
| 129 | SDL_RenderPresent(ren_.get()); | 130 | SDL_RenderPresent(ren_.get()); |
| 130 | } | 131 | } |
| 131 | 132 | ||
