summaryrefslogtreecommitdiff
path: root/src/test/testrender.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/testrender.c')
-rw-r--r--src/test/testrender.c34
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);
}