diff options
Diffstat (limited to 'src/graphic.c')
-rw-r--r-- | src/graphic.c | 35 |
1 files changed, 18 insertions, 17 deletions
diff --git a/src/graphic.c b/src/graphic.c index 54a7bd1..8c995b3 100644 --- a/src/graphic.c +++ b/src/graphic.c @@ -204,11 +204,11 @@ int paintTerrain(gameIni_t *gIni, gameRess_t *gRess, gameState_t *gState) { return 0; } -int renderTerrainToTexture(SDL_Renderer *rend, gameState_t *gState) { +int renderTerrainToTextures(SDL_Renderer *rend, SDL_Surface *terrain, gameUI_t *gUI) { int res, pitch; SDL_Rect src_rect, dst_rect; SDL_Surface *tmp_surf; - SDL_PixelFormat *pf = gState->terrain->format; + SDL_PixelFormat *pf = terrain->format; Uint32 *pixels; tmp_surf = SDL_CreateRGBSurface(0,MPL_WIN_W, LEVEL_HEIGHT, @@ -221,7 +221,7 @@ int renderTerrainToTexture(SDL_Renderer *rend, gameState_t *gState) { "Can't SDL_CreateRGBSurface() for converting terrain" ); - src_rect.x=gState->cameraX; + src_rect.x=gUI->cameraX; src_rect.y=0; src_rect.w=MPL_WIN_W; src_rect.h=LEVEL_HEIGHT; @@ -229,7 +229,7 @@ int renderTerrainToTexture(SDL_Renderer *rend, gameState_t *gState) { dst_rect=src_rect; dst_rect.x=0; - res = SDL_BlitSurface(gState->terrain, &src_rect, tmp_surf, &dst_rect); + res = SDL_BlitSurface(terrain, &src_rect, tmp_surf, &dst_rect); MPL_CHECK( res==0, { SDL_FreeSurface(tmp_surf); return 2; }, @@ -237,23 +237,23 @@ int renderTerrainToTexture(SDL_Renderer *rend, gameState_t *gState) { "Can't SDL_BlitSurface(terrain,...)" ); - if (gState->terrainSprite.t == NULL) { - gState->terrainSprite.t = SDL_CreateTexture(rend, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_STREAMING, dst_rect.w, dst_rect.h); + if (gUI->terrainSprite.t == NULL) { + gUI->terrainSprite.t = SDL_CreateTexture(rend, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_STREAMING, dst_rect.w, dst_rect.h); MPL_CHECK( - gState->terrainSprite.t, + gUI->terrainSprite.t, { SDL_FreeSurface(tmp_surf); return 3; }, SDL_LOG_PRIORITY_CRITICAL, "Can't SDL_CreateTexture for terrainSprite" ); - gState->terrainSprite.size = dst_rect; - gState->terrainSprite.frames = 1; + gUI->terrainSprite.size = dst_rect; + gUI->terrainSprite.frames = 1; } - res=SDL_LockTexture(gState->terrainSprite.t, NULL, (void **)&pixels, &pitch); + res=SDL_LockTexture(gUI->terrainSprite.t, NULL, (void **)&pixels, &pitch); MPL_CHECK( (res==0) && (pitch == dst_rect.w * sizeof(Uint32)), { SDL_FreeSurface(tmp_surf); - SDL_UnlockTexture(gState->terrainSprite.t); + SDL_UnlockTexture(gUI->terrainSprite.t); return 3; }, SDL_LOG_PRIORITY_CRITICAL, @@ -261,27 +261,28 @@ int renderTerrainToTexture(SDL_Renderer *rend, gameState_t *gState) { ); (void) SDL_memcpy(pixels, tmp_surf->pixels, dst_rect.h * pitch); - SDL_UnlockTexture(gState->terrainSprite.t); + SDL_UnlockTexture(gUI->terrainSprite.t); SDL_FreeSurface(tmp_surf); -// SDL_DestroyTexture(gState->terrainSprite.t); //TODO mais pas ici !! +// SDL_DestroyTexture(gUI->terrainSprite.t); //TODO mais pas ici !! + //TODO : faire le rendu de la minimap aussi return 0; } -int renderSprites(SDL_Renderer *rend, gameState_t *gState) { +int renderSprites(SDL_Renderer *rend, gameUI_t *gUI) { int i, res; SDL_Rect src,dst; - renderItem_t *renderList = gState->renderList; + renderItem_t *renderList = gUI->renderList; - for(i=0,res=0 ; i < gState->renderListSize && res==0 ; i++) { + for(i=0,res=0 ; i < gUI->renderListSize && res==0 ; i++) { src = dst = renderList[i].sprite->size; src.y = src.h * renderList[i].currframe; if ( renderList[i].absolute ) { dst.x = renderList[i].x; } else { - dst.x = renderList[i].x - gState->cameraX; + dst.x = renderList[i].x - gUI->cameraX; } dst.y = renderList[i].y; res=SDL_RenderCopy(rend, renderList[i].sprite->t, &src, &dst); |