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.c118
1 files changed, 51 insertions, 67 deletions
diff --git a/src/test/testrender.c b/src/test/testrender.c
index 6493507..634f16d 100644
--- a/src/test/testrender.c
+++ b/src/test/testrender.c
@@ -1,19 +1,22 @@
+#include "gameui.h"
#include "graphic.h"
-#include "parser.h"
#include "loader.h"
+#include "parser.h"
#include "utils.h"
#define DATA_BASEPATH "./data"
#define MAX_RENDERLIST_LEN 256
-int buildTestRL(gameRess_t *gRess, int rlMaxLen, render_item_t render_list[]);
+int buildTestRL(gameRess_t *gRess, int rlMaxLen, renderItem_t renderList[]);
int main(int argc, char **argv) {
int res;
char filepath[MAX_PATH_LEN];
gameIni_t gIni;
gameRess_t gRess;
- render_item_t render_list[MAX_RENDERLIST_LEN];
+ gameState_t gState;
+
+ //renderItem_t renderList[MAX_RENDERLIST_LEN];
if (argc != 3) {
fprintf(stderr, "Usage %s <levelpack_name> <level_ini_name>\n", argv[0]);
@@ -22,6 +25,8 @@ int main(int argc, char **argv) {
// Setting default values
SDL_memset(&gIni,0,sizeof(gameIni_t));
+ SDL_memset(&gRess,0,sizeof(gameRess_t));
+ SDL_memset(&gState,0,sizeof(gameState_t));
// Loading levelpack.ini
SDL_snprintf(filepath, MAX_PATH_LEN, "%s/level/%s/levelpack.ini", DATA_BASEPATH, argv[1]);
@@ -35,7 +40,7 @@ int main(int argc, char **argv) {
// Check if we found a "style =" line in level ini file
MPL_CHECK(
- gIni.level.style,
+ gIni.level.style[0] != '\0',
{ exit(1); },
SDL_LOG_PRIORITY_CRITICAL,
"No valid style detected in level ini file"
@@ -52,70 +57,70 @@ int main(int argc, char **argv) {
if (res!=0) exit(res);
*/
- SDL_Window *sdl_win;
- SDL_Renderer *sdl_rend;
- SDL_RendererInfo sdl_rend_info;
- SDL_Rect sdl_viewport;
-
- SDL_Event sdl_ev;
- int rlLen, mainloop_end, tick;
+ SDL_Window *win;
+ SDL_Renderer *rend;
+ SDL_RendererInfo rendInfo;
+ SDL_Rect viewport;
- SDL_Rect win_pos = { .x=SDL_WINDOWPOS_UNDEFINED, .y=SDL_WINDOWPOS_UNDEFINED, .w=MPL_WIN_W, .h=MPL_WIN_H };
- Uint32 init_flags = SDL_INIT_TIMER|SDL_INIT_VIDEO;
- Uint32 win_flags = SDL_WINDOW_SHOWN;
- Uint32 rend_flags = SDL_RENDERER_ACCELERATED; // | SDL_RENDERER_PRESENTVSYNC;
+ SDL_Event uiEvent;
+ int mainLoopEnd;
- my_SDL_init_or_die(__FILE__, win_pos, init_flags, win_flags, rend_flags, &sdl_win, &sdl_rend, &sdl_rend_info, &sdl_viewport);
+ 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;
- // Setting default values
- SDL_memset(&gRess,0,sizeof(gameRess_t));
+ res=mySDLInit(__FILE__, winPos, initFlags, winFlags, rendFlags, &win, &rend, &rendInfo, &viewport);
+ if (res!=0) exit(res);
- res=loadMiscRes(sdl_rend, DATA_BASEPATH, &gRess);
+ res=loadMiscRes(rend, DATA_BASEPATH, &gRess);
if (res!=0) exit(res);
- res=loadStyleRes(sdl_rend, &gIni, DATA_BASEPATH, &gRess);
+ res=loadStyleRes(rend, &gIni, DATA_BASEPATH, &gRess);
if (res!=0) exit(res);
- res=paint_terrain(&gIni, &gRess);
+ res=paintTerrain(&gIni, &gRess, &gState);
if (res!=0) exit(res);
- rlLen=buildTestRL(&gRess, MAX_RENDERLIST_LEN, render_list);
+ gState.renderListSize=buildTestRL(&gRess, MAX_RENDERLIST_LEN, gState.renderList);
+
+ gState.cameraX = gIni.level.xPos;
/* Main render loop */
- mainloop_end = tick = 0;
- while (!mainloop_end && tick<16) {
+ mainLoopEnd = 0;
+ while (!mainLoopEnd) {
int i;
/* Check for events */
- while (SDL_PollEvent(&sdl_ev)) {
- if (sdl_ev.type == SDL_QUIT) {
- mainloop_end = 1;
+ while (SDL_PollEvent(&uiEvent)) {
+ if (uiEvent.type == SDL_QUIT) {
+ mainLoopEnd = 1;
}
}
- SDL_RenderClear(sdl_rend);
- (void) render_terrain(sdl_rend, gRess.terrain, gIni.level.xPos);
- (void) render_sprites(sdl_rend, render_list, rlLen);
- SDL_RenderPresent(sdl_rend);
+ SDL_RenderClear(rend);
+ (void) renderTerrain(rend, &gState);
+ (void) renderSprites(rend, &gState);
+ SDL_RenderPresent(rend);
- for (i=0;i<rlLen;i++) {
- render_item_t *it = &render_list[i];
+ for (i=0;i<gState.renderListSize;i++) {
+ renderItem_t *it = &gState.renderList[i];
if (it->animate==1) {
it->currframe = (it->currframe + 1) % it->sprite->frames;
}
}
SDL_Delay(100);
-// tick++;
}
+ disposeRenderList(&gState);
unloadStyleRes(&gRess);
unloadMiscRes(&gRess);
- SDL_DestroyRenderer(sdl_rend);
- SDL_DestroyWindow(sdl_win);
+ SDL_DestroyRenderer(rend);
+ SDL_DestroyWindow(win);
SDL_Quit();
return 0;
}
-int addRLitem(render_item_t list[], sprite_t *it, int rlMaxLen) {
+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) {
@@ -146,45 +151,24 @@ int addRLitem(render_item_t list[], sprite_t *it, int rlMaxLen) {
return cur;
}
-int buildTestRL(gameRess_t *gRess, int rlMaxLen, render_item_t render_list[]) {
+int buildTestRL(gameRess_t *gRess, int rlMaxLen, renderItem_t renderList[]) {
int i, rlLen;
for (i=0; i<MAX_LEMMANIM_COUNT; i++) {
- rlLen=addRLitem(render_list, &gRess->lemmingAnims[i], rlMaxLen);
- }
- rlLen=addRLitem(render_list, NULL, rlMaxLen);
-
- for (i=0; i<MAX_LEMMANIM_COUNT; i++) {
- rlLen=addRLitem(render_list, &gRess->lemmingMasks[i], rlMaxLen);
- }
- rlLen=addRLitem(render_list, NULL, rlMaxLen);
-
- for (i=0; i<MAX_LEMMANIM_COUNT; i++) {
- rlLen=addRLitem(render_list, &gRess->lemmingIMasks[i], rlMaxLen);
+ rlLen=addRLitem(renderList, &gRess->lemmingAnims[i], rlMaxLen);
}
- rlLen=addRLitem(render_list, NULL, rlMaxLen);
+ rlLen=addRLitem(renderList, NULL, rlMaxLen);
for (i=0; i<MAX_OBJECTS_COUNT; i++) {
- rlLen=addRLitem(render_list, &gRess->objects[i], rlMaxLen);
+ rlLen=addRLitem(renderList, &gRess->objects[i], rlMaxLen);
}
- rlLen=addRLitem(render_list, NULL, rlMaxLen);
+ rlLen=addRLitem(renderList, NULL, rlMaxLen);
- for (i=0; i<MAX_OBJECTS_COUNT; i++) {
- rlLen=addRLitem(render_list, &gRess->objectMasks[i], rlMaxLen);
- }
- rlLen=addRLitem(render_list, NULL, rlMaxLen);
-
- rlLen=addRLitem(render_list, &gRess->font1, rlMaxLen);
- rlLen=addRLitem(render_list, &gRess->font2, rlMaxLen);
- rlLen=addRLitem(render_list, &gRess->countdown, rlMaxLen);
- rlLen=addRLitem(render_list, &gRess->cursor, rlMaxLen);
+ rlLen=addRLitem(renderList, &gRess->font1, rlMaxLen);
+ rlLen=addRLitem(renderList, &gRess->font2, rlMaxLen);
+ rlLen=addRLitem(renderList, &gRess->countdown, rlMaxLen);
+ rlLen=addRLitem(renderList, &gRess->cursor, rlMaxLen);
- /* No more textues but surface (for custom one time blitting)
- for (i=0; i<MAX_TILES_COUNT; i++) {
- rlLen=addRLitem(render_list, &gRess->tiles[i], rlMaxLen);
- }
- rlLen=addRLitem(render_list, NULL, rlMaxLen);
- */
return rlLen;
}