diff options
author | Ludovic Pouzenc <lpouzenc@gmail.com> | 2013-07-23 20:48:22 +0200 |
---|---|---|
committer | Ludovic Pouzenc <lpouzenc@gmail.com> | 2013-07-23 20:48:22 +0200 |
commit | 5bd7068586d82cf8d11c9751b86062c2ab031946 (patch) | |
tree | ea8a7de0944543bb7ed5a46b8b27e1fad5949a35 /src/test | |
parent | 8d9a2b8fd5d2088d699c2bceb3a54592c33b7b84 (diff) | |
download | mplemmings-5bd7068586d82cf8d11c9751b86062c2ab031946.tar.gz mplemmings-5bd7068586d82cf8d11c9751b86062c2ab031946.tar.bz2 mplemmings-5bd7068586d82cf8d11c9751b86062c2ab031946.zip |
Gros refactoring alors que j'ai oublié de faire un git pull avant, ça va etre sympa...
Diffstat (limited to 'src/test')
-rw-r--r-- | src/test/testrender.c | 118 |
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; } |