summary refs log tree commit diff stats
path: root/src/renderer.cpp
diff options
context:
space:
mode:
authorKelly Rauchenberger <fefferburbia@gmail.com>2021-02-02 16:51:22 -0500
committerKelly Rauchenberger <fefferburbia@gmail.com>2021-02-02 16:51:22 -0500
commitb628c80f988c1fb250b94b17dca8e082bc4c1d0b (patch)
treeb4de344e1d8d28a88aa1a1dbc381e07f03707fff /src/renderer.cpp
parenta475b843e7d37f128ce30140d193f0312aa70c9c (diff)
downloadtanetane-b628c80f988c1fb250b94b17dca8e082bc4c1d0b.tar.gz
tanetane-b628c80f988c1fb250b94b17dca8e082bc4c1d0b.tar.bz2
tanetane-b628c80f988c1fb250b94b17dca8e082bc4c1d0b.zip
Added moving camera
Diffstat (limited to 'src/renderer.cpp')
-rw-r--r--src/renderer.cpp27
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