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 | ||