color keying for sprite sheets and properly keyed texture map params
This commit is contained in:
@@ -24,27 +24,27 @@ void SdlRenderer::initialize(RendererParams params) {
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
else {
|
||||
this->window = sdl_window;
|
||||
SDL_Renderer* sdl_renderer = SDL_CreateRenderer(this->window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
|
||||
this->renderer = sdl_renderer;
|
||||
this->window = std::unique_ptr<SDL_Window, SDL_WindowDeleter>(sdl_window);
|
||||
SDL_Renderer* sdl_renderer = SDL_CreateRenderer(this->window.get(), -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
|
||||
this->renderer = std::shared_ptr<SDL_Renderer>(sdl_renderer, SDL_DestroyRenderer);
|
||||
|
||||
this->texture_manager = std::make_unique<SdlTextureManager>(this->renderer);
|
||||
this->font_manager = std::make_unique<SdlFontManager>();
|
||||
this->renderer_params = params;
|
||||
|
||||
SDL_RenderClear(this->renderer);
|
||||
SDL_RenderClear(this->renderer.get());
|
||||
}
|
||||
}
|
||||
|
||||
void SdlRenderer::flush() {
|
||||
SDL_RenderPresent(this->renderer);
|
||||
SDL_SetRenderDrawColor(this->renderer, COLOR_BLACK.r, COLOR_BLACK.g, COLOR_BLACK.b, COLOR_BLACK.a);
|
||||
SDL_RenderClear(this->renderer);
|
||||
SDL_RenderPresent(this->renderer.get());
|
||||
SDL_SetRenderDrawColor(this->renderer.get(), COLOR_BLACK.r, COLOR_BLACK.g, COLOR_BLACK.b, COLOR_BLACK.a);
|
||||
SDL_RenderClear(this->renderer.get());
|
||||
}
|
||||
|
||||
void SdlRenderer::draw_point(int x, int y, Color color) {
|
||||
SDL_SetRenderDrawColor(this->renderer, color.r, color.g, color.b, color.a);
|
||||
SDL_RenderDrawPoint(this->renderer, x, y);
|
||||
SDL_SetRenderDrawColor(this->renderer.get(), color.r, color.g, color.b, color.a);
|
||||
SDL_RenderDrawPoint(this->renderer.get(), x, y);
|
||||
}
|
||||
|
||||
void SdlRenderer::draw_text(TextRenderDetails details, std::string text, int x, int y) {
|
||||
@@ -54,12 +54,6 @@ void SdlRenderer::draw_text(TextRenderDetails details, std::string text, int x,
|
||||
}
|
||||
|
||||
SdlRenderer::~SdlRenderer() {
|
||||
// destroy components
|
||||
SDL_DestroyRenderer(this->renderer);
|
||||
this->renderer = nullptr;
|
||||
SDL_DestroyWindow(this->window);
|
||||
this->window = nullptr;
|
||||
|
||||
// exit subsystems
|
||||
IMG_Quit();
|
||||
TTF_Quit();
|
||||
@@ -76,12 +70,13 @@ void SdlRenderer::render_texture(int x, int y, const std::shared_ptr<SDL_Texture
|
||||
h = src->h;
|
||||
}
|
||||
SDL_Rect rect = {x,y,w,h};
|
||||
SDL_RenderCopy(this->renderer, texture.get(), src, &rect);
|
||||
SDL_RenderCopy(this->renderer.get(), texture.get(), src, &rect);
|
||||
}
|
||||
|
||||
void SdlRenderer::draw_sprite(Sprite sprite, int x, int y) {
|
||||
SpriteSheet *sprite_sheet = sprite.sprite_sheet;
|
||||
std::shared_ptr<SDL_Texture> texture = this->texture_manager->fetch_resource(sprite_sheet->path);
|
||||
TextureManagerFetchArgs args = TextureManagerFetchArgs {sprite_sheet->path, sprite_sheet->color_key};
|
||||
std::shared_ptr<SDL_Texture> texture = this->texture_manager->fetch_resource(args);
|
||||
int w, h;
|
||||
SDL_QueryTexture(texture.get(), nullptr, nullptr, &w, &h);
|
||||
int l = (sprite_sheet->sprite_width * sprite.index) / w;
|
||||
|
||||
Reference in New Issue
Block a user