Skip to content
Snippets Groups Projects
Commit a70e683d authored by David Maul's avatar David Maul :crab:
Browse files

fix tiles not rendering bug

parent 532fe773
Branches
No related tags found
1 merge request!2Basic spritesheet
......@@ -36,11 +36,11 @@ Engine::Engine(Window &window) : window(window), quit(false) {
void Engine::set_scene(Scene &scene) { this->scene = &scene; }
void Engine::set_spritesheet(Spritesheet spritesheet) {
this->spritesheet = spritesheet;
void Engine::set_spritesheet(Spritesheet &spritesheet) {
this->spritesheet = &spritesheet;
}
Spritesheet &Engine::get_spritesheet() { return spritesheet.value(); }
Spritesheet *Engine::get_spritesheet() { return spritesheet.value(); }
void Engine::pump() {
SDL_Event e;
......
......@@ -26,9 +26,9 @@ public:
void set_scene(Scene &scene);
void set_spritesheet(Spritesheet spritesheet);
void set_spritesheet(Spritesheet &spritesheet);
Spritesheet &get_spritesheet();
Spritesheet *get_spritesheet();
void render();
......@@ -40,7 +40,7 @@ private:
Window &window;
SDL_Renderer *sdl_renderer;
std::optional<Scene *> scene;
std::optional<Spritesheet> spritesheet;
std::optional<Spritesheet *> spritesheet;
std::vector<SDL_Event> events;
bool quit;
};
......
......@@ -29,15 +29,15 @@ void Level::render(Engine &engine, std::vector<SDL_Event> &events) {
for (int y = 0; y < this->height; y++) {
for (int x = 0; x < this->width; x++) {
Spritesheet &spritesheet = engine.get_spritesheet();
Spritesheet *spritesheet = engine.get_spritesheet();
SDL_Rect dst;
dst.x = x * spritesheet.get_tile_width();
dst.y = y * spritesheet.get_tile_height();
dst.w = spritesheet.get_tile_width();
dst.h = spritesheet.get_tile_height();
dst.x = x * spritesheet->get_tile_width();
dst.y = y * spritesheet->get_tile_height();
dst.w = spritesheet->get_tile_width();
dst.h = spritesheet->get_tile_height();
if (spritesheet.render_tile(engine.renderer(), 0, 0, &dst) == 0) {
if (spritesheet->render_tile(engine.renderer(), 0, 0, &dst) != 0) {
throw std::runtime_error("error while rendering a tile: " +
std::string(SDL_GetError()));
}
......
#include "spritesheet.hpp"
#include "SDL_render.h"
#include "SDL_stdinc.h"
#include "SDL_surface.h"
#include "engine.hpp"
#include <SDL_image.h>
#include <iostream>
#include <ostream>
#include <stdexcept>
namespace advanced_wars {
......@@ -52,18 +49,10 @@ int Spritesheet::render_tile(SDL_Renderer *renderer, int tile, int step,
src.w = tile_width;
src.h = tile_height;
/*
std::cout << rect->x << " " << rect->y << " " << rect->w << " " << rect->h
<< std::endl;
Uint32 format = 0;
int width = 0;
int height = 0;
int access = 0;
SDL_QueryTexture(texture, &format, &access, &width, &height);
std::cout << format << " " << width << " " << height << " " << access
<< std::endl;
*/
return SDL_RenderCopyEx(renderer, texture, &src, rect, 0, NULL,
SDL_FLIP_NONE);
......
......@@ -16,6 +16,10 @@ public:
~Spritesheet();
Spritesheet(const Spritesheet &) = delete;
Spritesheet &operator=(const Spritesheet &) = delete;
// Tiles
int get_tile_steps(int tile);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment