diff options
Diffstat (limited to 'src/test/testrender.c')
-rw-r--r-- | src/test/testrender.c | 34 |
1 files changed, 21 insertions, 13 deletions
diff --git a/src/test/testrender.c b/src/test/testrender.c index a8fba18..ec82e41 100644 --- a/src/test/testrender.c +++ b/src/test/testrender.c @@ -4,9 +4,8 @@ #include "utils.h" #define DATA_BASEPATH "./data" -#define MAX_RENDERLIST_LEN 256 -int buildTestRL(gameRess_t *gRess, int rlMaxLen, renderItem_t renderList[]); +int buildTestRL(gameRess_t *gRess, gameState_t *gState, int rlMaxLen, renderItem_t renderList[]); int main(int argc, char **argv) { gameIni_t gIni; @@ -21,10 +20,15 @@ int main(int argc, char **argv) { int res, mainLoopEnd, uiTick; - SDL_Rect winPos = { .x=SDL_WINDOWPOS_UNDEFINED, .y=SDL_WINDOWPOS_UNDEFINED, .w=MPL_WIN_W, .h=MPL_WIN_H }; Uint32 initFlags = SDL_INIT_TIMER|SDL_INIT_VIDEO; Uint32 winFlags = SDL_WINDOW_SHOWN; Uint32 rendFlags = SDL_RENDERER_ACCELERATED; // | SDL_RENDERER_PRESENTVSYNC; + SDL_Rect winPos = { + .x=SDL_WINDOWPOS_UNDEFINED, + .y=SDL_WINDOWPOS_UNDEFINED, + .w=MPL_WIN_W, + .h=MPL_WIN_H + }; if (argc != 3) { fprintf(stderr, "Usage %s <levelpack_name> <level_ini_name>\n", argv[0]); @@ -46,9 +50,9 @@ int main(int argc, char **argv) { res=loadStyleRes(rend, &gIni, &gRess); if (res!=0) exit(res); res=paintTerrain(&gIni, &gRess, &gState); if (res!=0) exit(res); + res=renderTerrainToTexture(rend, &gState); if (res!=0) exit(res); - gState.renderListSize=buildTestRL(&gRess, MAX_RENDERLIST_LEN, gState.renderList); - + gState.renderListSize=buildTestRL(&gRess, &gState, MAX_RENDERLIST_SIZE, gState.renderList); gState.cameraX = gIni.level.xPos; @@ -65,8 +69,9 @@ int main(int argc, char **argv) { } } + (void) renderTerrainToTexture(rend, &gState); + SDL_RenderClear(rend); - (void) renderTerrain(rend, &gState); (void) renderSprites(rend, &gState); SDL_RenderPresent(rend); @@ -98,9 +103,13 @@ int addRLitem(renderItem_t list[], sprite_t *it, int rlMaxLen) { static int cur=0, curr_x=0, curr_y=0, tmp_h=0; if (it == NULL) { - curr_y += tmp_h; + if (cur>1) curr_y += tmp_h; curr_x = tmp_h = 0; return cur; + } else if (curr_x >= 640) { + curr_x = 0; + curr_y += tmp_h; + tmp_h=0; } if (cur > rlMaxLen || it->t == NULL) return cur; @@ -108,6 +117,7 @@ int addRLitem(renderItem_t list[], sprite_t *it, int rlMaxLen) { list[cur].x = curr_x; list[cur].y = curr_y; list[cur].currframe = 0; + list[cur].absolute = 1; if (it->frames > 1) { list[cur].animate = 1; /* By defaut, animate */ @@ -116,18 +126,16 @@ int addRLitem(renderItem_t list[], sprite_t *it, int rlMaxLen) { if (tmp_h < it->size.h) tmp_h = it->size.h; cur++; - if (curr_x >= 640) { - curr_x = 0; - curr_y += tmp_h; - tmp_h=0; - } return cur; } -int buildTestRL(gameRess_t *gRess, int rlMaxLen, renderItem_t renderList[]) { +int buildTestRL(gameRess_t *gRess, gameState_t *gState, int rlMaxLen, renderItem_t renderList[]) { int i, rlLen; + rlLen=addRLitem(renderList, &gState->terrainSprite, rlMaxLen); + rlLen=addRLitem(renderList, NULL, rlMaxLen); + for (i=0; i<MAX_LEMMANIM_COUNT; i++) { rlLen=addRLitem(renderList, &gRess->lemmingAnims[i], rlMaxLen); } |