Mercurial > hg > dmlib
comparison src/dmsimple.c @ 2586:9807ae37ad69
Require stdbool.h, we require C11 now.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Thu, 08 Dec 2022 15:59:22 +0200 |
parents | 69a5af2eb1ea |
children |
comparison
equal
deleted
inserted
replaced
2585:ef6c826c5b7a | 2586:9807ae37ad69 |
---|---|
23 static const char *setupDataName = "SetupData.txt"; | 23 static const char *setupDataName = "SetupData.txt"; |
24 static const char *setupFontName = "SetupFont.dmf"; | 24 static const char *setupFontName = "SetupFont.dmf"; |
25 static DMVector | 25 static DMVector |
26 setupMenuPos, setupMenuDim, setupText1Pos, setupText2Pos, | 26 setupMenuPos, setupMenuDim, setupText1Pos, setupText2Pos, |
27 setupMenuBarOffs, setupMenuBarDimAdj; | 27 setupMenuBarOffs, setupMenuBarDimAdj; |
28 static BOOL setupMenuCenter, setupTextCondensed; | 28 static bool setupMenuCenter, setupTextCondensed; |
29 static char | 29 static char |
30 setupTextFullscreen[setupTextFieldLen], | 30 setupTextFullscreen[setupTextFieldLen], |
31 setupTextWindowed[setupTextFieldLen], | 31 setupTextWindowed[setupTextFieldLen], |
32 setupTextPrefix[setupTextFieldLen], | 32 setupTextPrefix[setupTextFieldLen], |
33 setupTextEnterToStart[setupTextFieldLen], | 33 setupTextEnterToStart[setupTextFieldLen], |
54 dmPrintBanner(stdout, dmProgName, "[options]"); | 54 dmPrintBanner(stdout, dmProgName, "[options]"); |
55 dmArgsPrintHelp(stdout, optList, optListN, 0); | 55 dmArgsPrintHelp(stdout, optList, optListN, 0); |
56 } | 56 } |
57 | 57 |
58 | 58 |
59 static BOOL argHandleOpt(const int optN, char *optArg, char *currArg) | 59 static bool argHandleOpt(const int optN, char *optArg, char *currArg) |
60 { | 60 { |
61 (void) optArg; | 61 (void) optArg; |
62 (void) currArg; | 62 (void) currArg; |
63 | 63 |
64 switch (optN) | 64 switch (optN) |
72 dmVerbosity++; | 72 dmVerbosity++; |
73 break; | 73 break; |
74 | 74 |
75 default: | 75 default: |
76 dmErrorDBGMsg("Unknown option '%s'.\n", currArg); | 76 dmErrorDBGMsg("Unknown option '%s'.\n", currArg); |
77 return FALSE; | 77 return false; |
78 } | 78 } |
79 | 79 |
80 return TRUE; | 80 return true; |
81 } | 81 } |
82 | 82 |
83 | 83 |
84 static inline void dmFillRect(SDL_Surface *screen, | 84 static inline void dmFillRect(SDL_Surface *screen, |
85 const int x0, const int y0, | 85 const int x0, const int y0, |
139 | 139 |
140 | 140 |
141 static int engineLoadResources() | 141 static int engineLoadResources() |
142 { | 142 { |
143 int err, loaded = 0, total = 0; | 143 int err, loaded = 0, total = 0; |
144 BOOL first = TRUE; | 144 bool first = true; |
145 | 145 |
146 do | 146 do |
147 { | 147 { |
148 // Show a nice progress bar while loading | 148 // Show a nice progress bar while loading |
149 if ((err = engineShowProgress(loaded, total)) != DMERR_OK) | 149 if ((err = engineShowProgress(loaded, total)) != DMERR_OK) |
150 return err; | 150 return err; |
151 | 151 |
152 err = dmResourcesPreload(engine.resources, first, &loaded, &total); | 152 err = dmResourcesPreload(engine.resources, first, &loaded, &total); |
153 first = FALSE; | 153 first = false; |
154 } | 154 } |
155 while (err == DMERR_PROGRESS); | 155 while (err == DMERR_PROGRESS); |
156 | 156 |
157 return err; | 157 return err; |
158 } | 158 } |
159 | 159 |
160 | 160 |
161 static BOOL engineGenInitializeVideo(int width, int height, int depth, Uint32 flags) | 161 static bool engineGenInitializeVideo(int width, int height, int depth, Uint32 flags) |
162 { | 162 { |
163 dmPrint(1, "Initializing SDL video %d x %d x %dbpp, flags=0x%08x\n", | 163 dmPrint(1, "Initializing SDL video %d x %d x %dbpp, flags=0x%08x\n", |
164 width, height, depth, flags); | 164 width, height, depth, flags); |
165 | 165 |
166 SDL_SetWindowTitle(engine.window, dmProgDesc); | 166 SDL_SetWindowTitle(engine.window, dmProgDesc); |
167 | 167 |
168 return TRUE; | 168 return true; |
169 } | 169 } |
170 | 170 |
171 | 171 |
172 static BOOL engineInitializeVideo() | 172 static bool engineInitializeVideo() |
173 { | 173 { |
174 return engineGenInitializeVideo(engine.optVidWidth, engine.optVidHeight, | 174 return engineGenInitializeVideo(engine.optVidWidth, engine.optVidHeight, |
175 engine.optVidDepth, engine.optVFlags); | 175 engine.optVidDepth, engine.optVFlags); |
176 } | 176 } |
177 | 177 |
326 { | 326 { |
327 DMBitmapFont *menuFont = NULL; | 327 DMBitmapFont *menuFont = NULL; |
328 DMResource *file = NULL; | 328 DMResource *file = NULL; |
329 SDL_Surface *menuBgImage = NULL, *menuBarImage = NULL; | 329 SDL_Surface *menuBgImage = NULL, *menuBarImage = NULL; |
330 int result, menuState = -1; | 330 int result, menuState = -1; |
331 BOOL menuFullScreen = TRUE; | 331 bool menuFullScreen = true; |
332 | 332 |
333 // Compute a list of valid modes | 333 // Compute a list of valid modes |
334 if (!engineGenInitializeVideo(DM_VSETUP_WIDTH, DM_VSETUP_HEIGHT, engine.optVidDepth, engine.optVFlags)) | 334 if (!engineGenInitializeVideo(DM_VSETUP_WIDTH, DM_VSETUP_HEIGHT, engine.optVidDepth, engine.optVFlags)) |
335 goto out; | 335 goto out; |
336 | 336 |
506 if (menuOffset + menuIndex < nengineModeList - 1) | 506 if (menuOffset + menuIndex < nengineModeList - 1) |
507 menuOffset++; | 507 menuOffset++; |
508 break; | 508 break; |
509 | 509 |
510 case SDLK_LEFT: | 510 case SDLK_LEFT: |
511 menuFullScreen = FALSE; | 511 menuFullScreen = false; |
512 break; | 512 break; |
513 | 513 |
514 case SDLK_RIGHT: | 514 case SDLK_RIGHT: |
515 menuFullScreen = TRUE; | 515 menuFullScreen = true; |
516 break; | 516 break; |
517 | 517 |
518 case SDLK_SPACE: | 518 case SDLK_SPACE: |
519 menuFullScreen = !menuFullScreen; | 519 menuFullScreen = !menuFullScreen; |
520 break; | 520 break; |
623 | 623 |
624 | 624 |
625 int main(int argc, char *argv[]) | 625 int main(int argc, char *argv[]) |
626 { | 626 { |
627 int err; | 627 int err; |
628 BOOL initSDL = FALSE; | 628 bool initSDL = false; |
629 | 629 |
630 memset(&engine, 0, sizeof(engine)); | 630 memset(&engine, 0, sizeof(engine)); |
631 | 631 |
632 // Pre-initialization | 632 // Pre-initialization |
633 if ((err = demoPreInit(&engine)) != DMERR_OK) | 633 if ((err = demoPreInit(&engine)) != DMERR_OK) |
681 dmError(DMERR_INIT_FAIL, | 681 dmError(DMERR_INIT_FAIL, |
682 "Could not initialize SDL: %s\n", | 682 "Could not initialize SDL: %s\n", |
683 SDL_GetError()); | 683 SDL_GetError()); |
684 goto out; | 684 goto out; |
685 } | 685 } |
686 initSDL = TRUE; | 686 initSDL = true; |
687 | 687 |
688 // Set start time | 688 // Set start time |
689 engine.startTimeAudio = -1; | 689 engine.startTimeAudio = -1; |
690 engine.startTime = -1; | 690 engine.startTime = -1; |
691 | 691 |
856 { | 856 { |
857 case SDL_KEYDOWN: | 857 case SDL_KEYDOWN: |
858 switch (engine.event.key.keysym.sym) | 858 switch (engine.event.key.keysym.sym) |
859 { | 859 { |
860 case SDLK_ESCAPE: | 860 case SDLK_ESCAPE: |
861 engine.exitFlag = TRUE; | 861 engine.exitFlag = true; |
862 break; | 862 break; |
863 | 863 |
864 case SDLK_SPACE: | 864 case SDLK_SPACE: |
865 engine.pauseFlag = !engine.pauseFlag; | 865 engine.pauseFlag = !engine.pauseFlag; |
866 break; | 866 break; |
888 | 888 |
889 case SDL_VIDEOEXPOSE: | 889 case SDL_VIDEOEXPOSE: |
890 break; | 890 break; |
891 | 891 |
892 case SDL_QUIT: | 892 case SDL_QUIT: |
893 engine.exitFlag = TRUE; | 893 engine.exitFlag = true; |
894 break; | 894 break; |
895 } | 895 } |
896 | 896 |
897 // Draw frame | 897 // Draw frame |
898 engine.frameTime = SDL_GetTicks(); | 898 engine.frameTime = SDL_GetTicks(); |
952 #endif | 952 #endif |
953 | 953 |
954 if (engine.audioSimThread != NULL) | 954 if (engine.audioSimThread != NULL) |
955 { | 955 { |
956 dmMutexLock(engine.audioStreamMutex); | 956 dmMutexLock(engine.audioStreamMutex); |
957 engine.audioSimDone = TRUE; | 957 engine.audioSimDone = true; |
958 dmMutexUnlock(engine.audioStreamMutex); | 958 dmMutexUnlock(engine.audioStreamMutex); |
959 SDL_WaitThread(engine.audioSimThread, NULL); | 959 SDL_WaitThread(engine.audioSimThread, NULL); |
960 } | 960 } |
961 | 961 |
962 SDL_UnlockAudio(); | 962 SDL_UnlockAudio(); |