diff --git a/include/akgl/SDL_GameControllerDB.h b/include/akgl/SDL_GameControllerDB.h index 31d8a5e..b033fbe 100644 --- a/include/akgl/SDL_GameControllerDB.h +++ b/include/akgl/SDL_GameControllerDB.h @@ -1,9 +1,9 @@ #ifndef _SDL_GAMECONTROLLERDB_H_ #define _SDL_GAMECONTROLLERDB_H_ -// Taken from https://raw.githubusercontent.com/mdqinc/SDL_GameControllerDB/refs/heads/master/gamecontrollerdb.txt on Tue May 26 04:12:10 PM EDT 2026 +// Taken from https://raw.githubusercontent.com/mdqinc/SDL_GameControllerDB/refs/heads/master/gamecontrollerdb.txt on Tue Jun 2 01:14:32 PM EDT 2026 -#define AKGL_SDL_GAMECONTROLLER_DB_LEN 2228 +#define AKGL_SDL_GAMECONTROLLER_DB_LEN 2229 const char *SDL_GAMECONTROLLER_DB[] = { "03000000300f00000a01000000000000,3 In 1 Conversion Box,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b8,x:b3,y:b0,platform:Windows", @@ -708,7 +708,7 @@ const char *SDL_GAMECONTROLLER_DB[] = { "03000000730700000601000000000000,Sega Saturn Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b9,x:b3,y:b4,platform:Windows", "03000000b40400000a01000000000000,Sega Saturn Controller,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b5,righttrigger:b2,start:b8,x:b3,y:b4,platform:Windows", "030000003b07000004a1000000000000,SFX,a:b0,b:b2,back:b7,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b9,righttrigger:b5,start:b8,x:b1,y:b3,platform:Windows", - "03000000632500002705000000000000,ShanWan Q36,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,rightshoulder:b7,righttrigger:b9,start:b11,x:b3,y:b4,platform:Windows", + "03000000632500002705000000000000,ShanWan Gamepad,a:b0,b:b1,x:b3,y:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,-lefty:-a1,+lefty:+a2,leftshoulder:b6,lefttrigger:b8,rightshoulder:b7,righttrigger:b9,start:b11,leftstick:b13,rightstick:b14,platform:Windows", "03000000f82100001900000000000000,Shogun Bros Chameleon X1,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows", "03000000120c00001c1e000000000000,SnakeByte 4S PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows", "03000000140300000918000000000000,SNES Controller,a:b0,b:b1,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Windows", @@ -780,6 +780,7 @@ const char *SDL_GAMECONTROLLER_DB[] = { "030000005f140000c501000000000000,Trust Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows", "03000000b80500000210000000000000,Trust Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows", "030000005f1400002a01000000000000,Trust Predator GM1200,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b5,righttrigger:b2,x:b3,y:b4,platform:Windows", + "03000000580400000a10000000000000,Trust Sight Fighter,a:b0,b:b1,x:b3,y:b4,back:b5,start:b2,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,lefttrigger:b8,righttrigger:b9,platform:Windows", "030000004f04000087b6000000000000,TWCS Throttle,dpdown:b8,dpleft:b9,dpright:b7,dpup:b6,leftstick:b5,lefttrigger:-a5,leftx:a0,lefty:a1,righttrigger:+a5,platform:Windows", "03000000411200000450000000000000,Twin Shock,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a3,righty:a4,start:b11,x:b3,y:b0,platform:Windows", "03000000d90400000200000000000000,TwinShock PS2 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows", diff --git a/include/akgl/game.h b/include/akgl/game.h index 17650ad..e67c65d 100644 --- a/include/akgl/game.h +++ b/include/akgl/game.h @@ -44,14 +44,19 @@ typedef struct { } akgl_Game; extern SDL_Window *window; -extern akgl_Tilemap gamemap; extern MIX_Audio *bgm; extern MIX_Mixer *akgl_mixer; extern MIX_Track *akgl_tracks[AKGL_GAME_AUDIO_MAX_TRACKS]; -extern SDL_FRect camera; +extern SDL_FRect _akgl_camera; extern akgl_Game game; -extern akgl_RenderBackend renderer; -extern akgl_PhysicsBackend physics; +extern akgl_RenderBackend _akgl_renderer; +extern akgl_PhysicsBackend _akgl_physics; +extern akgl_Tilemap _akgl_gamemap; + +extern akgl_Tilemap *gamemap; +extern akgl_RenderBackend *renderer; +extern akgl_PhysicsBackend *physics; +extern SDL_FRect *camera; #define AKGL_BITMASK_HAS(x, y) (x & y) == y #define AKGL_BITMASK_HASNOT(x, y) (x & y) != y diff --git a/include/akgl/physics.h b/include/akgl/physics.h index 19659ae..e5e33ca 100644 --- a/include/akgl/physics.h +++ b/include/akgl/physics.h @@ -19,8 +19,7 @@ typedef struct akgl_PhysicsBackend { double gravity_y; double gravity_z; SDL_Time gravity_time; - SDL_Time timer_gravity; - + SDL_Time timer_gravity; } akgl_PhysicsBackend; akerr_ErrorContext AKERR_NOIGNORE *akgl_physics_null_gravity(akgl_PhysicsBackend *self, akgl_Actor *actor, float32_t dt); @@ -29,10 +28,11 @@ akerr_ErrorContext AKERR_NOIGNORE *akgl_physics_null_move(akgl_PhysicsBackend *s akerr_ErrorContext AKERR_NOIGNORE *akgl_physics_init_null(akgl_PhysicsBackend *self); -akerr_ErrorContext AKERR_NOIGNORE *akgl_physics_ss_gravity(akgl_PhysicsBackend *self, akgl_Actor *actor, float32_t dt); -akerr_ErrorContext AKERR_NOIGNORE *akgl_physics_ss_collide(akgl_PhysicsBackend *self, akgl_Actor *a1, akgl_Actor *a2); -akerr_ErrorContext AKERR_NOIGNORE *akgl_physics_ss_move(akgl_PhysicsBackend *self, akgl_Actor *actor, float32_t dt); -akerr_ErrorContext AKERR_NOIGNORE *akgl_physics_init_sidescroller(akgl_PhysicsBackend *self); +akerr_ErrorContext AKERR_NOIGNORE *akgl_physics_arcade_gravity(akgl_PhysicsBackend *self, akgl_Actor *actor, float32_t dt); +akerr_ErrorContext AKERR_NOIGNORE *akgl_physics_arcade_collide(akgl_PhysicsBackend *self, akgl_Actor *a1, akgl_Actor *a2); +akerr_ErrorContext AKERR_NOIGNORE *akgl_physics_arcade_move(akgl_PhysicsBackend *self, akgl_Actor *actor, float32_t dt); +akerr_ErrorContext AKERR_NOIGNORE *akgl_physics_init_arcade(akgl_PhysicsBackend *self); + akerr_ErrorContext AKERR_NOIGNORE *akgl_physics_simulate(akgl_PhysicsBackend *self, akgl_Iterator *opflags); diff --git a/src/actor.c b/src/actor.c index 39de9e7..10e26aa 100644 --- a/src/actor.c +++ b/src/actor.c @@ -210,7 +210,7 @@ akerr_ErrorContext *akgl_actor_render(akgl_Actor *obj) ATTEMPT { CATCH(errctx, akgl_character_sprite_get(obj->basechar, obj->state, &curSprite)); - CATCH(errctx, actor_visible(obj, &camera, &visible)); + CATCH(errctx, actor_visible(obj, camera, &visible)); } CLEANUP { } PROCESS(errctx) { } HANDLE(errctx, AKERR_KEY) { @@ -242,16 +242,16 @@ akerr_ErrorContext *akgl_actor_render(akgl_Actor *obj) } FINISH(errctx, true); if ( obj->parent != NULL ) { - dest.x = (obj->parent->x + obj->x - camera.x); - dest.y = (obj->parent->y + obj->y - camera.y); + dest.x = (obj->parent->x + obj->x - camera->x); + dest.y = (obj->parent->y + obj->y - camera->y); } else { - dest.x = (obj->x - camera.x); - dest.y = (obj->y - camera.y); + dest.x = (obj->x - camera->x); + dest.y = (obj->y - camera->y); } dest.w = curSprite->width * obj->scale; dest.h = curSprite->width * obj->scale; - PASS(errctx, renderer.draw_texture(&renderer, curSprite->sheet->texture, &src, &dest, 0, NULL, SDL_FLIP_NONE)); + PASS(errctx, renderer->draw_texture(renderer, curSprite->sheet->texture, &src, &dest, 0, NULL, SDL_FLIP_NONE)); SUCCEED_RETURN(errctx); } diff --git a/src/draw.c b/src/draw.c index ad4f9a4..9bb3a03 100644 --- a/src/draw.c +++ b/src/draw.c @@ -20,11 +20,11 @@ void akgl_draw_background(int w, int h) for (x = 0; x < w; x += dx) { /* use an 8x8 checkerboard pattern */ i = (((x ^ y) >> 3) & 1); - SDL_SetRenderDrawColor(renderer.sdl_renderer, col[i].r, col[i].g, col[i].b, col[i].a); + SDL_SetRenderDrawColor(renderer->sdl_renderer, col[i].r, col[i].g, col[i].b, col[i].a); rect.x = (float)x; rect.y = (float)y; - SDL_RenderFillRect(renderer.sdl_renderer, &rect); + SDL_RenderFillRect(renderer->sdl_renderer, &rect); } } } diff --git a/src/game.c b/src/game.c index b2b350f..e2d1dea 100644 --- a/src/game.c +++ b/src/game.c @@ -19,17 +19,22 @@ #include SDL_Window *window = NULL; -akgl_RenderBackend renderer; -akgl_PhysicsBackend physics; -akgl_Frame ball; -akgl_Frame paddle1; -akgl_Frame paddle2; -akgl_Frame table; -akgl_Tilemap gamemap; + +// Currently active objects +akgl_RenderBackend *renderer; +akgl_PhysicsBackend *physics; +SDL_FRect *camera; +akgl_Tilemap *gamemap; + +// Default objects +akgl_RenderBackend _akgl_renderer; +akgl_PhysicsBackend _akgl_physics; +SDL_FRect _akgl_camera; +akgl_Tilemap _akgl_gamemap; + MIX_Audio *bgm = NULL; MIX_Mixer *akgl_mixer = NULL; MIX_Track *akgl_tracks[AKGL_GAME_AUDIO_MAX_TRACKS]; -SDL_FRect camera; akgl_Game game; void akgl_game_lowfps(void) @@ -45,31 +50,26 @@ akerr_ErrorContext AKERR_NOIGNORE *akgl_game_init() int i = 0; PREPARE_ERROR(e); - ATTEMPT { - strncpy((char *)&game.libversion, AKGL_VERSION, 32); - game.gameStartTime = SDL_GetTicksNS(); - game.lastIterTime = game.gameStartTime; - game.lastFPSTime = game.gameStartTime; - game.lowfpsfunc = &akgl_game_lowfps; - game.statelock = SDL_CreateMutex(); - FAIL_ZERO_RETURN(e, game.statelock, AKGL_ERR_SDL, "%s", SDL_GetError()); - CATCH(e, akgl_game_state_lock()); - FAIL_ZERO_BREAK(e, strlen((char *)&game.name), AKERR_NULLPOINTER, "Must provide game name"); - FAIL_ZERO_BREAK(e, strlen((char *)&game.version), AKERR_NULLPOINTER, "Must provide game version"); - FAIL_ZERO_BREAK(e, strlen((char *)&game.uri), AKERR_NULLPOINTER, "Must provide game uri"); - CATCH(e, akgl_heap_init()); - CATCH(e, akgl_registry_init_actor()); - CATCH(e, akgl_registry_init_sprite()); - CATCH(e, akgl_registry_init_spritesheet()); - CATCH(e, akgl_registry_init_character()); - CATCH(e, akgl_registry_init_font()); - CATCH(e, akgl_registry_init_music()); - CATCH(e, akgl_registry_init_properties()); - CATCH(e, akgl_registry_init_actor_state_strings()); - } CLEANUP { - //IGNORE(akgl_game_state_unlock()); - } PROCESS(e) { - } FINISH(e, true) + strncpy((char *)&game.libversion, AKGL_VERSION, 32); + game.gameStartTime = SDL_GetTicksNS(); + game.lastIterTime = game.gameStartTime; + game.lastFPSTime = game.gameStartTime; + game.lowfpsfunc = &akgl_game_lowfps; + game.statelock = SDL_CreateMutex(); + FAIL_ZERO_RETURN(e, game.statelock, AKGL_ERR_SDL, "%s", SDL_GetError()); + PASS(e, akgl_game_state_lock()); + FAIL_ZERO_RETURN(e, strlen((char *)&game.name), AKERR_NULLPOINTER, "Must provide game name"); + FAIL_ZERO_RETURN(e, strlen((char *)&game.version), AKERR_NULLPOINTER, "Must provide game version"); + FAIL_ZERO_RETURN(e, strlen((char *)&game.uri), AKERR_NULLPOINTER, "Must provide game uri"); + PASS(e, akgl_heap_init()); + PASS(e, akgl_registry_init_actor()); + PASS(e, akgl_registry_init_sprite()); + PASS(e, akgl_registry_init_spritesheet()); + PASS(e, akgl_registry_init_character()); + PASS(e, akgl_registry_init_font()); + PASS(e, akgl_registry_init_music()); + PASS(e, akgl_registry_init_properties()); + PASS(e, akgl_registry_init_actor_state_strings()); SDL_SetAppMetadata(game.name, game.version, game.uri); @@ -113,6 +113,12 @@ akerr_ErrorContext AKERR_NOIGNORE *akgl_game_init() AKGL_ERR_SDL, "Couldn't initialize front engine: %s", SDL_GetError()); + + camera = &_akgl_camera; + renderer = &_akgl_renderer; + physics = &_akgl_physics; + gamemap = &_akgl_gamemap; + PASS(e, akgl_game_state_unlock()); SUCCEED_RETURN(e); } @@ -432,15 +438,15 @@ akerr_ErrorContext AKERR_NOIGNORE *akgl_game_update(akgl_Iterator *opflags) continue; } if ( AKGL_BITMASK_HAS(opflags->flags, AKGL_ITERATOR_OP_TILEMAPSCALE) ) { - PASS(e, akgl_tilemap_scale_actor(&gamemap, actor)); + PASS(e, akgl_tilemap_scale_actor(gamemap, actor)); } else { actor->scale = 1.0; } PASS(e, actor->updatefunc(actor)); } } - PASS(e, physics.simulate(&physics, NULL)); - PASS(e, renderer.draw_world(&renderer, NULL)); + PASS(e, physics->simulate(physics, NULL)); + PASS(e, renderer->draw_world(renderer, NULL)); PASS(e, akgl_game_state_unlock()); SUCCEED_RETURN(e); } diff --git a/src/physics.c b/src/physics.c index 10477b7..af2e6d9 100644 --- a/src/physics.c +++ b/src/physics.c @@ -42,7 +42,7 @@ akerr_ErrorContext AKERR_NOIGNORE *akgl_physics_init_null(akgl_PhysicsBackend *s } -akerr_ErrorContext AKERR_NOIGNORE *akgl_physics_ss_gravity(akgl_PhysicsBackend *self, akgl_Actor *actor, float32_t dt) +akerr_ErrorContext AKERR_NOIGNORE *akgl_physics_arcade_gravity(akgl_PhysicsBackend *self, akgl_Actor *actor, float32_t dt) { PREPARE_ERROR(e); FAIL_ZERO_RETURN(e, self, AKERR_NULLPOINTER, "self"); @@ -58,7 +58,7 @@ akerr_ErrorContext AKERR_NOIGNORE *akgl_physics_ss_gravity(akgl_PhysicsBackend * SUCCEED_RETURN(e); } -akerr_ErrorContext AKERR_NOIGNORE *akgl_physics_ss_collide(akgl_PhysicsBackend *self, akgl_Actor *a1, akgl_Actor *a2) +akerr_ErrorContext AKERR_NOIGNORE *akgl_physics_arcade_collide(akgl_PhysicsBackend *self, akgl_Actor *a1, akgl_Actor *a2) { PREPARE_ERROR(e); FAIL_ZERO_RETURN(e, self, AKERR_NULLPOINTER, "self"); @@ -66,7 +66,7 @@ akerr_ErrorContext AKERR_NOIGNORE *akgl_physics_ss_collide(akgl_PhysicsBackend * SUCCEED_RETURN(e); } -akerr_ErrorContext AKERR_NOIGNORE *akgl_physics_ss_move(struct akgl_PhysicsBackend *self, akgl_Actor *actor, float32_t dt) +akerr_ErrorContext AKERR_NOIGNORE *akgl_physics_arcade_move(struct akgl_PhysicsBackend *self, akgl_Actor *actor, float32_t dt) { PREPARE_ERROR(e); FAIL_ZERO_RETURN(e, self, AKERR_NULLPOINTER, "self"); @@ -77,16 +77,16 @@ akerr_ErrorContext AKERR_NOIGNORE *akgl_physics_ss_move(struct akgl_PhysicsBacke SUCCEED_RETURN(e); } -akerr_ErrorContext AKERR_NOIGNORE *akgl_physics_init_sidescroller(akgl_PhysicsBackend *self) +akerr_ErrorContext AKERR_NOIGNORE *akgl_physics_init_arcade(akgl_PhysicsBackend *self) { akgl_String *tmp; PREPARE_ERROR(e); FAIL_ZERO_RETURN(e, self, AKERR_NULLPOINTER, "self"); PASS(e, akgl_heap_next_string(&tmp)); - self->gravity = akgl_physics_ss_gravity; - self->collide = akgl_physics_ss_collide; - self->move = akgl_physics_ss_move; + self->gravity = akgl_physics_arcade_gravity; + self->collide = akgl_physics_arcade_collide; + self->move = akgl_physics_arcade_move; self->simulate = akgl_physics_simulate; ATTEMPT { diff --git a/src/renderer.c b/src/renderer.c index 4822b69..3c14382 100644 --- a/src/renderer.c +++ b/src/renderer.c @@ -33,10 +33,10 @@ akerr_ErrorContext AKERR_NOIGNORE *akgl_render_init2d(akgl_RenderBackend *self) "Couldn't create window/renderer: %s", SDL_GetError()); - camera.x = 0; - camera.y = 0; - camera.w = screenwidth; - camera.h = screenheight; + camera->x = 0; + camera->y = 0; + camera->w = screenwidth; + camera->h = screenheight; self->shutdown = &akgl_render_2d_shutdown; self->frame_start = &akgl_render_2d_frame_start; @@ -117,8 +117,8 @@ akerr_ErrorContext AKERR_NOIGNORE *akgl_render_2d_draw_world(akgl_RenderBackend PASS(e, aksl_memset((void *)opflags, 0x00, sizeof(akgl_Iterator))); } for ( int i = 0; i < AKGL_TILEMAP_MAX_LAYERS ; i++ ) { - if ( i < gamemap.numlayers ) { - PASS(e, akgl_tilemap_draw((akgl_Tilemap *)&gamemap, &camera, i)); + if ( i < gamemap->numlayers ) { + PASS(e, akgl_tilemap_draw(gamemap, camera, i)); } for ( int j = 0; j < AKGL_MAX_HEAP_ACTOR ; j++ ) { actor = &HEAP_ACTOR[j]; diff --git a/src/sprite.c b/src/sprite.c index 3739ddc..e1c0880 100644 --- a/src/sprite.c +++ b/src/sprite.c @@ -174,7 +174,7 @@ akerr_ErrorContext *akgl_spritesheet_initialize(akgl_SpriteSheet *sheet, int spr strncpy((char *)&sheet->name, filename, AKGL_SPRITE_SHEET_MAX_FILENAME_LENGTH); //snprintf((char *)&tmpstr->data, AKGL_MAX_STRING_LENGTH, "%s%s", SDL_GetBasePath(), filename); - sheet->texture = IMG_LoadTexture(renderer.sdl_renderer, filename); + sheet->texture = IMG_LoadTexture(renderer->sdl_renderer, filename); FAIL_ZERO_BREAK(errctx, sheet->texture, AKGL_ERR_SDL, "Failed loading asset %s : %s", filename, SDL_GetError()); FAIL_ZERO_BREAK( diff --git a/src/text.c b/src/text.c index 25b0106..996b212 100644 --- a/src/text.c +++ b/src/text.c @@ -49,12 +49,12 @@ akerr_ErrorContext AKERR_NOIGNORE *akgl_text_rendertextat(TTF_Font *font, char * color); } FAIL_ZERO_RETURN(errctx, textsurf, AKERR_NULLPOINTER, "%s", SDL_GetError()); - texture = SDL_CreateTextureFromSurface(renderer.sdl_renderer, textsurf); + texture = SDL_CreateTextureFromSurface(renderer->sdl_renderer, textsurf); FAIL_ZERO_RETURN(errctx, texture, AKERR_NULLPOINTER, "%s", SDL_GetError()); dest.x = x; dest.y = y; SDL_GetTextureSize(texture, &dest.w, &dest.h); - PASS(errctx, renderer.draw_texture(&renderer, texture, NULL, &dest, 0, NULL, SDL_FLIP_NONE)); + PASS(errctx, renderer->draw_texture(renderer, texture, NULL, &dest, 0, NULL, SDL_FLIP_NONE)); SDL_DestroyTexture(texture); SDL_DestroySurface(textsurf); SUCCEED_RETURN(errctx); diff --git a/src/tilemap.c b/src/tilemap.c index 22c4a55..810c4a6 100644 --- a/src/tilemap.c +++ b/src/tilemap.c @@ -152,7 +152,7 @@ akerr_ErrorContext *akgl_tilemap_load_tilesets_each(json_t *tileset, akgl_Tilema } PROCESS(e) { } FINISH(e, true); - dest->tilesets[tsidx].texture = IMG_LoadTexture(renderer.sdl_renderer, (char *)&dest->tilesets[tsidx].imagefilename); + dest->tilesets[tsidx].texture = IMG_LoadTexture(renderer->sdl_renderer, (char *)&dest->tilesets[tsidx].imagefilename); FAIL_ZERO_RETURN(e, dest->tilesets[tsidx].texture, AKERR_NULLPOINTER, "Failed loading tileset image : %s", SDL_GetError()); SUCCEED_RETURN(e); @@ -389,7 +389,7 @@ akerr_ErrorContext *akgl_tilemap_load_layer_image(akgl_Tilemap *dest, json_t *ro ); RESTORE_GCC_WARNINGS - dest->layers[layerid].texture = IMG_LoadTexture(renderer.sdl_renderer, (char *)fpath->data); + dest->layers[layerid].texture = IMG_LoadTexture(renderer->sdl_renderer, (char *)fpath->data); FAIL_ZERO_BREAK(errctx, dest->layers[layerid].texture, AKGL_ERR_SDL, "%s", SDL_GetError()); dest->layers[layerid].width = dest->layers[layerid].texture->w; dest->layers[layerid].height = dest->layers[layerid].texture->h; @@ -573,7 +573,7 @@ akerr_ErrorContext *akgl_tilemap_draw(akgl_Tilemap *map, SDL_FRect *viewport, in src.h = map->layers[layeridx].height; dest.w = map->layers[layeridx].width; dest.h = map->layers[layeridx].height; - PASS(errctx, renderer.draw_texture(&renderer, map->layers[layeridx].texture, &src, &dest, 0, NULL, SDL_FLIP_NONE)); + PASS(errctx, renderer->draw_texture(renderer, map->layers[layeridx].texture, &src, &dest, 0, NULL, SDL_FLIP_NONE)); SUCCEED_RETURN(errctx); } @@ -628,7 +628,7 @@ akerr_ErrorContext *akgl_tilemap_draw(akgl_Tilemap *map, SDL_FRect *viewport, in dest.y, dest.w, dest.h);*/ - PASS(errctx, renderer.draw_texture(&renderer, map->tilesets[tilesetidx].texture, &src, &dest, 0, NULL, SDL_FLIP_NONE)); + PASS(errctx, renderer->draw_texture(renderer, map->tilesets[tilesetidx].texture, &src, &dest, 0, NULL, SDL_FLIP_NONE)); } } dest.x += map->tilewidth; @@ -683,7 +683,7 @@ akerr_ErrorContext *akgl_tilemap_draw_tileset(akgl_Tilemap *map, int tilesetidx) dest.y, dest.w, dest.h);*/ - PASS(errctx, renderer.draw_texture(&renderer, map->tilesets[tilesetidx].texture, &src, &dest, 0, NULL, SDL_FLIP_NONE)); + PASS(errctx, renderer->draw_texture(renderer, map->tilesets[tilesetidx].texture, &src, &dest, 0, NULL, SDL_FLIP_NONE)); } SUCCEED_RETURN(errctx); } diff --git a/src/util.c b/src/util.c index 28ff3d5..0f2fc32 100644 --- a/src/util.c +++ b/src/util.c @@ -202,9 +202,9 @@ akerr_ErrorContext *akgl_render_and_compare(SDL_Texture *t1, SDL_Texture *t2, in FAIL_ZERO_BREAK(errctx, t2, AKERR_NULLPOINTER, "NULL texture"); CATCH(errctx, akgl_heap_next_string(&tmpstring)); - SDL_RenderClear(renderer.sdl_renderer); - CATCH(errctx, renderer.draw_texture(&renderer, t1, &src, &dest, 0, NULL, SDL_FLIP_NONE)); - s1 = SDL_RenderReadPixels(renderer.sdl_renderer, &read); + SDL_RenderClear(renderer->sdl_renderer); + CATCH(errctx, renderer->draw_texture(renderer, t1, &src, &dest, 0, NULL, SDL_FLIP_NONE)); + s1 = SDL_RenderReadPixels(renderer->sdl_renderer, &read); FAIL_ZERO_BREAK(errctx, s1, AKGL_ERR_SDL, "Failed to read pixels from renderer"); if ( writeout != NULL ) { @@ -218,10 +218,10 @@ akerr_ErrorContext *akgl_render_and_compare(SDL_Texture *t1, SDL_Texture *t2, in SDL_GetError()); } - SDL_RenderClear(renderer.sdl_renderer); + SDL_RenderClear(renderer->sdl_renderer); - CATCH(errctx, renderer.draw_texture(&renderer, t1, &src, &dest, 0, NULL, SDL_FLIP_NONE)); - s2 = SDL_RenderReadPixels(renderer.sdl_renderer, &read); + CATCH(errctx, renderer->draw_texture(renderer, t1, &src, &dest, 0, NULL, SDL_FLIP_NONE)); + s2 = SDL_RenderReadPixels(renderer->sdl_renderer, &read); FAIL_ZERO_BREAK(errctx, s2, AKGL_ERR_SDL, "Failed to read pixels from renderer"); CATCH(errctx, akgl_compare_sdl_surfaces(s1, s2));