diff options
author | heavydemon21 <nielsstunnebrink1@gmail.com> | 2024-09-22 10:58:21 +0200 |
---|---|---|
committer | heavydemon21 <nielsstunnebrink1@gmail.com> | 2024-09-22 10:58:21 +0200 |
commit | 765485ced528ca2f4cf644a1503b9446c5826731 (patch) | |
tree | e9d35c04a8768afb38873daa31d1b47a3da93e54 /resource-manager/spritesheet.cpp | |
parent | 507a97739726feb74ffa91e317ead1773183ccbf (diff) |
spritesheet werkt
Diffstat (limited to 'resource-manager/spritesheet.cpp')
-rw-r--r-- | resource-manager/spritesheet.cpp | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/resource-manager/spritesheet.cpp b/resource-manager/spritesheet.cpp new file mode 100644 index 0000000..c8e1b70 --- /dev/null +++ b/resource-manager/spritesheet.cpp @@ -0,0 +1,38 @@ + + +#include "spritesheet.h" + +#include <SDL2/SDL.h> +#include <SDL_image.h> +#include <SDL_render.h> +#include <SDL_surface.h> +#include <cstdlib> +#include <string> + + +SpriteSheet::SpriteSheet(const std::string& path, SDL_Renderer& renderer, const int row, const int column){ + m_spritesheet_image = IMG_Load(path.c_str()); + texture = SDL_CreateTextureFromSurface(&renderer, m_spritesheet_image); + m_clip.w = m_spritesheet_image->w / column; + m_clip.h = m_spritesheet_image->h / row; + +} + +SpriteSheet::~SpriteSheet(){ + SDL_DestroyTexture(texture); + SDL_FreeSurface(m_spritesheet_image); +} + +void SpriteSheet::select_sprite(const int x, const int y){ + m_clip.x = x * m_clip.w; + m_clip.y = y * m_clip.h; +} + +void SpriteSheet::draw_selected_sprite(SDL_Renderer* window_surface, SDL_Rect* position){ + SDL_RenderCopy(window_surface, texture, &m_clip, position); +} + + +SDL_Surface* SpriteSheet::getSurface() const { + return m_spritesheet_image; +} |