diff options
Diffstat (limited to 'src/graphic.c')
-rw-r--r-- | src/graphic.c | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/src/graphic.c b/src/graphic.c index c12b399..c6acf4f 100644 --- a/src/graphic.c +++ b/src/graphic.c @@ -190,3 +190,59 @@ int paintTerrain(gameIni_t *gIni, gameRess_t *gRess, gameGraphics_t *gGraph) { return 0; } + +int repaint(gameGraphSurfaces_t *srcSurfs, SDL_Rect *srcRect, SDL_Surface *dstSurf, SDL_Rect dstRect) { + int objToRepaintCount, i, res; + gameGraphObjState_t *objToRepaint; + SDL_Surface *tmpSurf; + + tmpSurf=createSurface(srcRect->w, srcRect->h); + + if (tmpSurf==NULL) { + logs(LOG_ERROR, "repain(), createSurface() has failed"); + return 1; + } + objToRepaintCount=findAndZSortObjects(srcSurfs->objectsStat, srcRect, &objToRepaint); + + for(i=0;i<objToRepaintCount;++i) { + if(objToRepaint[i].zOrder>0) break; + res=paintObject(objToRepaint+i, srcRect, tmpSurf); + if ( res!=0 ) { + logs(LOG_DEBUG, "repaint(), paintObject() failed"); + } + } + + res=SDL_BlitSurface(srcSurfs->terrain, srcRect, tmpSurf, NULL); + if ( res!=0 ) { + logs2(LOG_DEBUG, "repaint(), SDL_BlitSurface()", SDL_GetError()); + } + + for(;i<objToRepaintCount;++i) { + res=paintObject(objToRepaint+i, srcRect, tmpSurf); + if ( res!=0 ) { + logs(LOG_DEBUG, "repaint(), paintObject() failed"); + } + } + + res=SDL_BlitSurface(tmpSurf, NULL, dstSurf, &dstRect); + if ( res!=0 ) { + logs2(LOG_DEBUG, "repaint(), SDL_BlitSurface()", SDL_GetError()); + } + + free(objToRepaint); + SDL_FreeSurface(tmpSurf); + return res; +} + +int findAndZSortObjects(gameGraphObjState_t *objectsStat, SDL_Rect *offsetRect, gameGraphObjState_t **objectsFound) { + //TODO + fprintf(stderr, "TODO findAndZSortObjects(%p, %p, %p)\n", (void *)objectsStat,(void *)offsetRect,(void *)objectsFound); + *objectsFound=NULL; + return 0; +} + +int paintObject(gameGraphObjState_t *obj, SDL_Rect *srcRect, SDL_Surface *dstSurf) { + //TODO + fprintf(stderr, "TODO paintObject(%p, %p, %p)\n", (void *)obj,(void *)srcRect,(void *)dstSurf); + return 0; +} |