Mercurial > hg > dmlib
annotate dmsimple.c @ 616:ed4536641796
A bit slower screen update rate.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Fri, 12 Apr 2013 12:35:44 +0300 |
parents | 024bc22c54d7 |
children | 35c4fecad3fc |
rev | line source |
---|---|
310
713c8018c3ce
Fix includes in the dmsimple engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
278
diff
changeset
|
1 #include <SDL.h> |
342
c6ec970dc3cf
Separate some demo engine parts to two different modules.
Matti Hamalainen <ccr@tnsp.org>
parents:
336
diff
changeset
|
2 #include "dmengine.h" |
310
713c8018c3ce
Fix includes in the dmsimple engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
278
diff
changeset
|
3 #include "dmargs.h" |
593 | 4 #include "dmtext.h" |
5 #include "dmimage.h" | |
591
f165883c2ea6
#include the default setup image and font.
Matti Hamalainen <ccr@tnsp.org>
parents:
578
diff
changeset
|
6 #include "setupfont.h" |
f165883c2ea6
#include the default setup image and font.
Matti Hamalainen <ccr@tnsp.org>
parents:
578
diff
changeset
|
7 #include "setupimage.h" |
608 | 8 #include "setupmenubar.h" |
591
f165883c2ea6
#include the default setup image and font.
Matti Hamalainen <ccr@tnsp.org>
parents:
578
diff
changeset
|
9 |
603
36b544eb6f4b
Fixes in resource management.
Matti Hamalainen <ccr@tnsp.org>
parents:
600
diff
changeset
|
10 static const char *engineSetupImageName = "SetupImage.png"; |
608 | 11 static const char *engineSetupMenuBarName = "SetupMenuBar.png"; |
603
36b544eb6f4b
Fixes in resource management.
Matti Hamalainen <ccr@tnsp.org>
parents:
600
diff
changeset
|
12 static const char *engineSetupFontName = "SetupFont.dmf"; |
32
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
13 |
366
38e10b5f4e09
Work towards base engine re-entrancy.
Matti Hamalainen <ccr@tnsp.org>
parents:
361
diff
changeset
|
14 static DMEngineData engine; |
38e10b5f4e09
Work towards base engine re-entrancy.
Matti Hamalainen <ccr@tnsp.org>
parents:
361
diff
changeset
|
15 |
121
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
16 static DMOptArg optList[] = |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
17 { |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
18 { 0, '?', "help", "Show this help", OPT_NONE }, |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
19 { 1, 'v', "verbose", "Be more verbose", OPT_NONE }, |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
20 { 2, 'f', "fs", "Fullscreen", OPT_NONE }, |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
21 }; |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
22 |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
23 const int optListN = sizeof(optList) / sizeof(optList[0]); |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
24 |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
25 |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
26 |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
27 static void argShowHelp() |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
28 { |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
29 dmPrintBanner(stdout, dmProgName, "[options]"); |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
30 dmArgsPrintHelp(stdout, optList, optListN); |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
31 } |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
32 |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
33 |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
34 static BOOL argHandleOpt(const int optN, char *optArg, char *currArg) |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
35 { |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
36 (void) optArg; |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
37 |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
38 switch (optN) |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
39 { |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
40 case 0: |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
41 argShowHelp(); |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
42 exit(0); |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
43 break; |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
44 |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
45 case 1: |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
46 dmVerbosity++; |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
47 break; |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
48 |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
49 case 2: |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
50 engine.optVFlags |= SDL_FULLSCREEN; |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
51 break; |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
52 |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
53 default: |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
54 dmError("Unknown option '%s'.\n", currArg); |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
55 return FALSE; |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
56 } |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
57 |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
58 return TRUE; |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
59 } |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
60 |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
61 |
342
c6ec970dc3cf
Separate some demo engine parts to two different modules.
Matti Hamalainen <ccr@tnsp.org>
parents:
336
diff
changeset
|
62 static void engineAudioCallback(void *userdata, Uint8 *stream, int len) |
c6ec970dc3cf
Separate some demo engine parts to two different modules.
Matti Hamalainen <ccr@tnsp.org>
parents:
336
diff
changeset
|
63 { |
c6ec970dc3cf
Separate some demo engine parts to two different modules.
Matti Hamalainen <ccr@tnsp.org>
parents:
336
diff
changeset
|
64 (void) userdata; |
c6ec970dc3cf
Separate some demo engine parts to two different modules.
Matti Hamalainen <ccr@tnsp.org>
parents:
336
diff
changeset
|
65 |
c6ec970dc3cf
Separate some demo engine parts to two different modules.
Matti Hamalainen <ccr@tnsp.org>
parents:
336
diff
changeset
|
66 if (engine.paused) |
c6ec970dc3cf
Separate some demo engine parts to two different modules.
Matti Hamalainen <ccr@tnsp.org>
parents:
336
diff
changeset
|
67 { |
c6ec970dc3cf
Separate some demo engine parts to two different modules.
Matti Hamalainen <ccr@tnsp.org>
parents:
336
diff
changeset
|
68 memset(stream, 0, len); |
c6ec970dc3cf
Separate some demo engine parts to two different modules.
Matti Hamalainen <ccr@tnsp.org>
parents:
336
diff
changeset
|
69 } |
c6ec970dc3cf
Separate some demo engine parts to two different modules.
Matti Hamalainen <ccr@tnsp.org>
parents:
336
diff
changeset
|
70 else |
c6ec970dc3cf
Separate some demo engine parts to two different modules.
Matti Hamalainen <ccr@tnsp.org>
parents:
336
diff
changeset
|
71 #ifdef DM_USE_JSS |
c6ec970dc3cf
Separate some demo engine parts to two different modules.
Matti Hamalainen <ccr@tnsp.org>
parents:
336
diff
changeset
|
72 { |
c6ec970dc3cf
Separate some demo engine parts to two different modules.
Matti Hamalainen <ccr@tnsp.org>
parents:
336
diff
changeset
|
73 if (engine.dev != NULL) |
c6ec970dc3cf
Separate some demo engine parts to two different modules.
Matti Hamalainen <ccr@tnsp.org>
parents:
336
diff
changeset
|
74 jvmRenderAudio(engine.dev, stream, len / jvmGetSampleSize(engine.dev)); |
c6ec970dc3cf
Separate some demo engine parts to two different modules.
Matti Hamalainen <ccr@tnsp.org>
parents:
336
diff
changeset
|
75 } |
c6ec970dc3cf
Separate some demo engine parts to two different modules.
Matti Hamalainen <ccr@tnsp.org>
parents:
336
diff
changeset
|
76 #endif |
c6ec970dc3cf
Separate some demo engine parts to two different modules.
Matti Hamalainen <ccr@tnsp.org>
parents:
336
diff
changeset
|
77 #ifdef DM_USE_TREMOR |
361 | 78 if (engine.audioPos + len >= engine.audioRes->rdataSize) |
342
c6ec970dc3cf
Separate some demo engine parts to two different modules.
Matti Hamalainen <ccr@tnsp.org>
parents:
336
diff
changeset
|
79 { |
c6ec970dc3cf
Separate some demo engine parts to two different modules.
Matti Hamalainen <ccr@tnsp.org>
parents:
336
diff
changeset
|
80 engine.exitFlag = TRUE; |
c6ec970dc3cf
Separate some demo engine parts to two different modules.
Matti Hamalainen <ccr@tnsp.org>
parents:
336
diff
changeset
|
81 } |
c6ec970dc3cf
Separate some demo engine parts to two different modules.
Matti Hamalainen <ccr@tnsp.org>
parents:
336
diff
changeset
|
82 else |
c6ec970dc3cf
Separate some demo engine parts to two different modules.
Matti Hamalainen <ccr@tnsp.org>
parents:
336
diff
changeset
|
83 { |
361 | 84 memcpy(stream, engine.audioRes->rdata + engine.audioPos, len); |
342
c6ec970dc3cf
Separate some demo engine parts to two different modules.
Matti Hamalainen <ccr@tnsp.org>
parents:
336
diff
changeset
|
85 engine.audioPos += len; |
c6ec970dc3cf
Separate some demo engine parts to two different modules.
Matti Hamalainen <ccr@tnsp.org>
parents:
336
diff
changeset
|
86 } |
c6ec970dc3cf
Separate some demo engine parts to two different modules.
Matti Hamalainen <ccr@tnsp.org>
parents:
336
diff
changeset
|
87 #endif |
c6ec970dc3cf
Separate some demo engine parts to two different modules.
Matti Hamalainen <ccr@tnsp.org>
parents:
336
diff
changeset
|
88 } |
c6ec970dc3cf
Separate some demo engine parts to two different modules.
Matti Hamalainen <ccr@tnsp.org>
parents:
336
diff
changeset
|
89 |
c6ec970dc3cf
Separate some demo engine parts to two different modules.
Matti Hamalainen <ccr@tnsp.org>
parents:
336
diff
changeset
|
90 |
c6ec970dc3cf
Separate some demo engine parts to two different modules.
Matti Hamalainen <ccr@tnsp.org>
parents:
336
diff
changeset
|
91 static int engineShowProgress(int loaded, int total) |
40 | 92 { |
93 int dx = 60, | |
94 dh = 20, | |
95 dw = engine.screen->w - (2 * dx), | |
96 dy = (engine.screen->h - dh) / 2; | |
97 | |
98 if (SDL_MUSTLOCK(engine.screen) != 0 && SDL_LockSurface(engine.screen) != 0) | |
99 return DMERR_INIT_FAIL; | |
100 | |
101 // Draw the progress bar | |
102 dmClearSurface(engine.screen, dmMapRGBA(engine.screen, 0,0,0,0)); | |
103 dmFillRect(engine.screen, dx, dy, dx+dw, dy+dh, dmMapRGB(engine.screen, 255,255,255)); | |
104 dmFillRect(engine.screen, dx+1, dy+1, dx+dw-1, dy+dh-1, dmMapRGB(engine.screen, 0,0,0)); | |
105 | |
106 if (total > 0) | |
107 { | |
108 dmFillRect(engine.screen, | |
109 dx+3, dy+3, | |
110 dx + 3 + ((dw - 3) * loaded) / total, | |
111 dy + dh - 3, | |
112 dmMapRGB(engine.screen, 200,200,200)); | |
113 } | |
114 | |
115 // Flip screen | |
116 if (SDL_MUSTLOCK(engine.screen) != 0) | |
117 SDL_UnlockSurface(engine.screen); | |
118 | |
119 SDL_Flip(engine.screen); | |
120 return DMERR_OK; | |
121 } | |
122 | |
123 | |
342
c6ec970dc3cf
Separate some demo engine parts to two different modules.
Matti Hamalainen <ccr@tnsp.org>
parents:
336
diff
changeset
|
124 static int engineLoadResources() |
32
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
125 { |
578
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
126 int err, loaded = 0, total = 0; |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
127 |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
128 // First preload outside of the loop |
359
59045853853d
Make resource management re-entrant.
Matti Hamalainen <ccr@tnsp.org>
parents:
354
diff
changeset
|
129 err = dmres_preload(engine.resources, TRUE, &loaded, &total); |
32
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
130 |
359
59045853853d
Make resource management re-entrant.
Matti Hamalainen <ccr@tnsp.org>
parents:
354
diff
changeset
|
131 while ((err = dmres_preload(engine.resources, FALSE, &loaded, &total)) == DMERR_PROGRESS) |
32
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
132 { |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
133 // Show a nice progress bar while loading |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
134 if (total > 0 && (loaded % 2) == 0) |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
135 { |
40 | 136 if ((err = engineShowProgress(loaded, total)) != DMERR_OK) |
137 return err; | |
32
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
138 } |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
139 } |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
140 |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
141 return err; |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
142 } |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
143 |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
144 |
578
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
145 static BOOL engineGenInitializeVideo(int width, int height, int depth, Uint32 flags) |
332
d4802335cbbc
Clean up video (re)initialization.
Matti Hamalainen <ccr@tnsp.org>
parents:
316
diff
changeset
|
146 { |
d4802335cbbc
Clean up video (re)initialization.
Matti Hamalainen <ccr@tnsp.org>
parents:
316
diff
changeset
|
147 dmPrint(1, "Initializing SDL video %d x %d x %dbpp, flags=0x%08x\n", |
578
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
148 width, height, depth, flags); |
332
d4802335cbbc
Clean up video (re)initialization.
Matti Hamalainen <ccr@tnsp.org>
parents:
316
diff
changeset
|
149 |
d4802335cbbc
Clean up video (re)initialization.
Matti Hamalainen <ccr@tnsp.org>
parents:
316
diff
changeset
|
150 SDL_FreeSurface(engine.screen); |
d4802335cbbc
Clean up video (re)initialization.
Matti Hamalainen <ccr@tnsp.org>
parents:
316
diff
changeset
|
151 |
578
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
152 engine.screen = SDL_SetVideoMode(width, height, depth, flags); |
332
d4802335cbbc
Clean up video (re)initialization.
Matti Hamalainen <ccr@tnsp.org>
parents:
316
diff
changeset
|
153 if (engine.screen == NULL) |
d4802335cbbc
Clean up video (re)initialization.
Matti Hamalainen <ccr@tnsp.org>
parents:
316
diff
changeset
|
154 { |
d4802335cbbc
Clean up video (re)initialization.
Matti Hamalainen <ccr@tnsp.org>
parents:
316
diff
changeset
|
155 dmError("Can't SDL_SetVideoMode(): %s\n", SDL_GetError()); |
d4802335cbbc
Clean up video (re)initialization.
Matti Hamalainen <ccr@tnsp.org>
parents:
316
diff
changeset
|
156 return FALSE; |
d4802335cbbc
Clean up video (re)initialization.
Matti Hamalainen <ccr@tnsp.org>
parents:
316
diff
changeset
|
157 } |
578
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
158 |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
159 SDL_WM_SetCaption(dmProgDesc, dmProgName); |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
160 |
332
d4802335cbbc
Clean up video (re)initialization.
Matti Hamalainen <ccr@tnsp.org>
parents:
316
diff
changeset
|
161 return TRUE; |
d4802335cbbc
Clean up video (re)initialization.
Matti Hamalainen <ccr@tnsp.org>
parents:
316
diff
changeset
|
162 } |
d4802335cbbc
Clean up video (re)initialization.
Matti Hamalainen <ccr@tnsp.org>
parents:
316
diff
changeset
|
163 |
d4802335cbbc
Clean up video (re)initialization.
Matti Hamalainen <ccr@tnsp.org>
parents:
316
diff
changeset
|
164 |
593 | 165 static BOOL engineInitializeVideo() |
578
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
166 { |
593 | 167 return engineGenInitializeVideo(engine.optVidWidth, engine.optVidHeight, |
168 engine.optVidDepth, engine.optVFlags); | |
578
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
169 } |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
170 |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
171 |
603
36b544eb6f4b
Fixes in resource management.
Matti Hamalainen <ccr@tnsp.org>
parents:
600
diff
changeset
|
172 |
578
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
173 int engineVideoSetup() |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
174 { |
597
8a9361179a1a
More work on the video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
595
diff
changeset
|
175 DMBitmapFont *menuFont = NULL; |
578
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
176 DMResource *file = NULL; |
608 | 177 SDL_Surface *menuBgImage = NULL, *menuBarImage = NULL; |
593 | 178 int result, menuState = -1, nmenuList, menuChoice = 0; |
603
36b544eb6f4b
Fixes in resource management.
Matti Hamalainen <ccr@tnsp.org>
parents:
600
diff
changeset
|
179 char menuStr[64]; |
578
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
180 |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
181 // Compute a list of valid modes |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
182 |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
183 |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
184 // Open video temporarily |
593 | 185 if (!engineGenInitializeVideo(DM_VSETUP_WIDTH, DM_VSETUP_HEIGHT, 32, SDL_SWSURFACE | SDL_DOUBLEBUF)) |
578
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
186 goto out; |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
187 |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
188 // Fetch and decompress setup image, try regular resources first |
603
36b544eb6f4b
Fixes in resource management.
Matti Hamalainen <ccr@tnsp.org>
parents:
600
diff
changeset
|
189 file = dmf_open(engine.resources, engineSetupImageName); |
578
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
190 if (file == NULL) |
603
36b544eb6f4b
Fixes in resource management.
Matti Hamalainen <ccr@tnsp.org>
parents:
600
diff
changeset
|
191 file = dmf_create_memio(NULL, engineSetupImageName, engineSetupImage, sizeof(engineSetupImage)); |
578
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
192 |
593 | 193 menuBgImage = dmLoadImage(file); |
578
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
194 dmf_close(file); |
603
36b544eb6f4b
Fixes in resource management.
Matti Hamalainen <ccr@tnsp.org>
parents:
600
diff
changeset
|
195 |
608 | 196 file = dmf_open(engine.resources, engineSetupMenuBarName); |
197 if (file == NULL) | |
198 file = dmf_create_memio(NULL, engineSetupMenuBarName, engineSetupMenuBar, sizeof(engineSetupMenuBar)); | |
199 | |
200 menuBarImage = dmLoadImage(file); | |
201 dmf_close(file); | |
202 | |
203 if (menuBgImage == NULL || menuBarImage == NULL) | |
578
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
204 { |
608 | 205 dmError("Could not instantiate setup screen images, %d: %s\n", |
578
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
206 result, dmErrorStr(result)); |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
207 goto out; |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
208 } |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
209 |
593 | 210 if (menuBgImage->w != DM_VSETUP_WIDTH || |
211 menuBgImage->h != DM_VSETUP_HEIGHT) | |
578
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
212 { |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
213 dmError("Setup screen background image does not match " |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
214 "required dimensions (%dx%d vs %dx%d)\n", |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
215 menuBgImage->w, menuBgImage->h, |
593 | 216 DM_VSETUP_WIDTH, DM_VSETUP_HEIGHT); |
578
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
217 goto out; |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
218 } |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
219 |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
220 |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
221 // Load up the bitmap font |
603
36b544eb6f4b
Fixes in resource management.
Matti Hamalainen <ccr@tnsp.org>
parents:
600
diff
changeset
|
222 file = dmf_open(engine.resources, engineSetupFontName); |
578
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
223 if (file == NULL) |
603
36b544eb6f4b
Fixes in resource management.
Matti Hamalainen <ccr@tnsp.org>
parents:
600
diff
changeset
|
224 file = dmf_create_memio(NULL, engineSetupFontName, engineSetupFont, sizeof(engineSetupFont)); |
578
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
225 |
597
8a9361179a1a
More work on the video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
595
diff
changeset
|
226 result = dmLoadBitmapFont(file, &menuFont); |
578
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
227 dmf_close(file); |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
228 if (result != DMERR_OK) |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
229 { |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
230 dmError("Could not instantiate setup screen font, %d: %s\n", |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
231 result, dmErrorStr(result)); |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
232 goto out; |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
233 } |
614
eed8d6abd89b
Pre-convert/scale menu background and use direct blitting.
Matti Hamalainen <ccr@tnsp.org>
parents:
608
diff
changeset
|
234 |
eed8d6abd89b
Pre-convert/scale menu background and use direct blitting.
Matti Hamalainen <ccr@tnsp.org>
parents:
608
diff
changeset
|
235 SDL_Surface *tmp = dmConvertScaledSurface(menuBgImage, |
eed8d6abd89b
Pre-convert/scale menu background and use direct blitting.
Matti Hamalainen <ccr@tnsp.org>
parents:
608
diff
changeset
|
236 engine.screen->format, engine.screen->flags, |
eed8d6abd89b
Pre-convert/scale menu background and use direct blitting.
Matti Hamalainen <ccr@tnsp.org>
parents:
608
diff
changeset
|
237 engine.screen->w, engine.screen->h); |
eed8d6abd89b
Pre-convert/scale menu background and use direct blitting.
Matti Hamalainen <ccr@tnsp.org>
parents:
608
diff
changeset
|
238 if (tmp == NULL) |
eed8d6abd89b
Pre-convert/scale menu background and use direct blitting.
Matti Hamalainen <ccr@tnsp.org>
parents:
608
diff
changeset
|
239 { |
eed8d6abd89b
Pre-convert/scale menu background and use direct blitting.
Matti Hamalainen <ccr@tnsp.org>
parents:
608
diff
changeset
|
240 dmError("Could not convert setup screen background image.\n"); |
eed8d6abd89b
Pre-convert/scale menu background and use direct blitting.
Matti Hamalainen <ccr@tnsp.org>
parents:
608
diff
changeset
|
241 goto out; |
eed8d6abd89b
Pre-convert/scale menu background and use direct blitting.
Matti Hamalainen <ccr@tnsp.org>
parents:
608
diff
changeset
|
242 } |
eed8d6abd89b
Pre-convert/scale menu background and use direct blitting.
Matti Hamalainen <ccr@tnsp.org>
parents:
608
diff
changeset
|
243 |
eed8d6abd89b
Pre-convert/scale menu background and use direct blitting.
Matti Hamalainen <ccr@tnsp.org>
parents:
608
diff
changeset
|
244 SDL_FreeSurface(menuBgImage); |
eed8d6abd89b
Pre-convert/scale menu background and use direct blitting.
Matti Hamalainen <ccr@tnsp.org>
parents:
608
diff
changeset
|
245 menuBgImage = tmp; |
eed8d6abd89b
Pre-convert/scale menu background and use direct blitting.
Matti Hamalainen <ccr@tnsp.org>
parents:
608
diff
changeset
|
246 |
597
8a9361179a1a
More work on the video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
595
diff
changeset
|
247 SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL); |
614
eed8d6abd89b
Pre-convert/scale menu background and use direct blitting.
Matti Hamalainen <ccr@tnsp.org>
parents:
608
diff
changeset
|
248 |
597
8a9361179a1a
More work on the video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
595
diff
changeset
|
249 int menuEntryHeight = menuFont->height + 1, |
8a9361179a1a
More work on the video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
595
diff
changeset
|
250 menuHeight = DM_VSETUP_MENU_HEIGHT / menuEntryHeight; |
578
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
251 |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
252 // Enter the main loop of the menu |
608 | 253 engine.startTime = SDL_GetTicks(); |
593 | 254 menuState = 0; |
578
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
255 while (!menuState) |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
256 { |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
257 while (SDL_PollEvent(&engine.event)) |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
258 switch (engine.event.type) |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
259 { |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
260 case SDL_KEYDOWN: |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
261 switch (engine.event.key.keysym.sym) |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
262 { |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
263 case SDLK_ESCAPE: |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
264 menuState = -1; |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
265 break; |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
266 |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
267 case SDLK_SPACE: |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
268 case SDLK_RETURN: |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
269 menuState = 1; |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
270 break; |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
271 |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
272 case SDLK_UP: |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
273 if (menuChoice > 0) |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
274 menuChoice--; |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
275 break; |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
276 |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
277 case SDLK_DOWN: |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
278 if (menuChoice < nmenuList - 1) |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
279 menuChoice++; |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
280 break; |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
281 |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
282 default: |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
283 break; |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
284 } |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
285 |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
286 break; |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
287 |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
288 case SDL_QUIT: |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
289 menuState = -1; |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
290 break; |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
291 } |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
292 |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
293 // Draw frame |
608 | 294 engine.frameTime = SDL_GetTicks(); |
578
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
295 if (SDL_MUSTLOCK(engine.screen) != 0 && SDL_LockSurface(engine.screen) != 0) |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
296 { |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
297 dmError("Can't lock surface.\n"); |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
298 goto out; |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
299 } |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
300 |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
301 // Render the menu |
614
eed8d6abd89b
Pre-convert/scale menu background and use direct blitting.
Matti Hamalainen <ccr@tnsp.org>
parents:
608
diff
changeset
|
302 dmDirectBlitSurface(menuBgImage, engine.screen); |
578
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
303 |
597
8a9361179a1a
More work on the video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
595
diff
changeset
|
304 // XXX/TODO: Some hardcoded bits here ... |
608 | 305 float t = engineGetTimeDT(&engine); |
603
36b544eb6f4b
Fixes in resource management.
Matti Hamalainen <ccr@tnsp.org>
parents:
600
diff
changeset
|
306 int entry; |
597
8a9361179a1a
More work on the video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
595
diff
changeset
|
307 nmenuList = 5; |
608 | 308 dmScaledBlitSurface32to32TransparentGA(menuBarImage, |
597
8a9361179a1a
More work on the video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
595
diff
changeset
|
309 DM_VSETUP_MENU_XC, |
8a9361179a1a
More work on the video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
595
diff
changeset
|
310 DM_VSETUP_MENU_YC + (menuChoice * menuEntryHeight), |
608 | 311 DM_VSETUP_MENU_WIDTH, menuEntryHeight + 2, |
312 engine.screen, | |
313 200 + sin(t * 10.0) * 50); | |
615 | 314 |
597
8a9361179a1a
More work on the video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
595
diff
changeset
|
315 for (entry = 0; entry < nmenuList && entry < menuHeight; entry++) |
8a9361179a1a
More work on the video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
595
diff
changeset
|
316 { |
608 | 317 snprintf(menuStr, sizeof(menuStr), "%4d X %4d", 640 * (entry + 1), 480 * (entry + 1)); |
597
8a9361179a1a
More work on the video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
595
diff
changeset
|
318 dmDrawBMTextConst( |
8a9361179a1a
More work on the video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
595
diff
changeset
|
319 engine.screen, menuFont, DMD_TRANSPARENT, |
8a9361179a1a
More work on the video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
595
diff
changeset
|
320 DM_VSETUP_MENU_XC + 2, |
8a9361179a1a
More work on the video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
595
diff
changeset
|
321 DM_VSETUP_MENU_YC + 2 + entry * menuEntryHeight, |
8a9361179a1a
More work on the video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
595
diff
changeset
|
322 menuStr); |
8a9361179a1a
More work on the video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
595
diff
changeset
|
323 } |
8a9361179a1a
More work on the video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
595
diff
changeset
|
324 |
578
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
325 |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
326 // Flip screen |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
327 if (SDL_MUSTLOCK(engine.screen) != 0) |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
328 SDL_UnlockSurface(engine.screen); |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
329 |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
330 SDL_Flip(engine.screen); |
616
ed4536641796
A bit slower screen update rate.
Matti Hamalainen <ccr@tnsp.org>
parents:
615
diff
changeset
|
331 SDL_Delay(25); |
578
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
332 } |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
333 |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
334 out: |
608 | 335 SDL_FreeSurface(menuBgImage); |
336 SDL_FreeSurface(menuBarImage); | |
337 dmFreeBitmapFont(menuFont); | |
338 | |
578
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
339 return menuState; |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
340 } |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
341 |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
342 |
593 | 343 int engineGetVideoAspect(int width, int height) |
344 { | |
345 if (width > 0 && height > 0) | |
346 return (width * 1000) / height; | |
347 else | |
348 return 1; | |
349 } | |
350 | |
351 | |
32
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
352 int main(int argc, char *argv[]) |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
353 { |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
354 int err; |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
355 BOOL initSDL = FALSE; |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
356 |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
357 memset(&engine, 0, sizeof(engine)); |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
358 |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
359 // Pre-initialization |
366
38e10b5f4e09
Work towards base engine re-entrancy.
Matti Hamalainen <ccr@tnsp.org>
parents:
361
diff
changeset
|
360 if ((err = demoPreInit(&engine)) != DMERR_OK) |
32
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
361 goto error_exit; |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
362 |
121
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
363 if (!dmArgsProcess(argc, argv, optList, optListN, |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
364 argHandleOpt, NULL, FALSE)) |
16fc6e6cf3b5
Move option handling to the simple demo engine.
Matti Hamalainen <ccr@tnsp.org>
parents:
113
diff
changeset
|
365 return DMERR_INIT_FAIL; |
123
6f7356f3b91c
Add engine startup messages showing prod name and "TNSP simple demoengine blurb".
Matti Hamalainen <ccr@tnsp.org>
parents:
122
diff
changeset
|
366 |
6f7356f3b91c
Add engine startup messages showing prod name and "TNSP simple demoengine blurb".
Matti Hamalainen <ccr@tnsp.org>
parents:
122
diff
changeset
|
367 dmPrint(0, |
6f7356f3b91c
Add engine startup messages showing prod name and "TNSP simple demoengine blurb".
Matti Hamalainen <ccr@tnsp.org>
parents:
122
diff
changeset
|
368 "%s\n" |
312 | 369 "%s\n" |
370 "TNSP simple demoengine initializing.\n", | |
123
6f7356f3b91c
Add engine startup messages showing prod name and "TNSP simple demoengine blurb".
Matti Hamalainen <ccr@tnsp.org>
parents:
122
diff
changeset
|
371 dmProgDesc, dmProgAuthor); |
125
5102ec9e9bce
Add a blurb about used features/3rd party code (zlib, Tremor, SDL).
Matti Hamalainen <ccr@tnsp.org>
parents:
123
diff
changeset
|
372 |
5102ec9e9bce
Add a blurb about used features/3rd party code (zlib, Tremor, SDL).
Matti Hamalainen <ccr@tnsp.org>
parents:
123
diff
changeset
|
373 dmPrint(0, |
5102ec9e9bce
Add a blurb about used features/3rd party code (zlib, Tremor, SDL).
Matti Hamalainen <ccr@tnsp.org>
parents:
123
diff
changeset
|
374 "Using libSDL, " |
578
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
375 #ifdef DM_USE_PACKFS |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
376 "zlib, " |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
377 #endif |
125
5102ec9e9bce
Add a blurb about used features/3rd party code (zlib, Tremor, SDL).
Matti Hamalainen <ccr@tnsp.org>
parents:
123
diff
changeset
|
378 #ifdef DM_USE_TREMOR |
5102ec9e9bce
Add a blurb about used features/3rd party code (zlib, Tremor, SDL).
Matti Hamalainen <ccr@tnsp.org>
parents:
123
diff
changeset
|
379 "Tremor Vorbis codec" |
5102ec9e9bce
Add a blurb about used features/3rd party code (zlib, Tremor, SDL).
Matti Hamalainen <ccr@tnsp.org>
parents:
123
diff
changeset
|
380 #endif |
5102ec9e9bce
Add a blurb about used features/3rd party code (zlib, Tremor, SDL).
Matti Hamalainen <ccr@tnsp.org>
parents:
123
diff
changeset
|
381 " and modified stb_image.\n" |
5102ec9e9bce
Add a blurb about used features/3rd party code (zlib, Tremor, SDL).
Matti Hamalainen <ccr@tnsp.org>
parents:
123
diff
changeset
|
382 "See README.txt for more information.\n"); |
5102ec9e9bce
Add a blurb about used features/3rd party code (zlib, Tremor, SDL).
Matti Hamalainen <ccr@tnsp.org>
parents:
123
diff
changeset
|
383 |
32
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
384 // Initialize resource subsystem |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
385 dmPrint(1, "Initializing resources subsystem.\n"); |
600 | 386 if ((err = dmres_init(&engine.resources, engine.optPackFilename, |
387 engine.optDataPath, engine.optResFlags, engineClassifier)) != DMERR_OK) | |
32
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
388 { |
574 | 389 dmError("Could not initialize resource manager, #%d: %s.\n", err, dmErrorStr(err)); |
32
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
390 goto error_exit; |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
391 } |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
392 |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
393 // Initialize SDL components |
122
5ba672ebe014
Add some verbose engine startup messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
121
diff
changeset
|
394 dmPrint(1, "Initializing libSDL.\n"); |
32
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
395 if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER) != 0) |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
396 { |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
397 dmError("Could not initialize SDL: %s\n", SDL_GetError()); |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
398 goto error_exit; |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
399 } |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
400 initSDL = TRUE; |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
401 |
578
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
402 |
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
403 // Present video mode selector |
593 | 404 if (engine.optVidAspect <= 0) |
405 engine.optVidAspect = engineGetVideoAspect(engine.optVidWidth, engine.optVidHeight); | |
406 | |
578
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
407 if (engine.optVidSetup) |
593 | 408 { |
409 if ((err = engineVideoSetup()) <= 0) | |
410 goto error_exit; | |
411 } | |
578
cf5d44b36851
Add some initial code for video setup screen.
Matti Hamalainen <ccr@tnsp.org>
parents:
574
diff
changeset
|
412 |
122
5ba672ebe014
Add some verbose engine startup messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
121
diff
changeset
|
413 // Initialize audio parts |
126
97488948215c
Allow setting audio format settings.
Matti Hamalainen <ccr@tnsp.org>
parents:
125
diff
changeset
|
414 if (engine.optAfmt.freq == 0 && engine.optAfmt.channels == 0) |
97488948215c
Allow setting audio format settings.
Matti Hamalainen <ccr@tnsp.org>
parents:
125
diff
changeset
|
415 { |
97488948215c
Allow setting audio format settings.
Matti Hamalainen <ccr@tnsp.org>
parents:
125
diff
changeset
|
416 // Defaults, if none seem to be set |
97488948215c
Allow setting audio format settings.
Matti Hamalainen <ccr@tnsp.org>
parents:
125
diff
changeset
|
417 engine.optAfmt.freq = 44100; |
97488948215c
Allow setting audio format settings.
Matti Hamalainen <ccr@tnsp.org>
parents:
125
diff
changeset
|
418 engine.optAfmt.format = AUDIO_S16SYS; |
97488948215c
Allow setting audio format settings.
Matti Hamalainen <ccr@tnsp.org>
parents:
125
diff
changeset
|
419 engine.optAfmt.channels = 2; |
316 | 420 engine.optAfmt.samples = engine.optAfmt.freq / 16; |
126
97488948215c
Allow setting audio format settings.
Matti Hamalainen <ccr@tnsp.org>
parents:
125
diff
changeset
|
421 } |
105
d5d27f262227
Beging merging of dmsimple2-fork into the main "engine".
Matti Hamalainen <ccr@tnsp.org>
parents:
94
diff
changeset
|
422 |
d5d27f262227
Beging merging of dmsimple2-fork into the main "engine".
Matti Hamalainen <ccr@tnsp.org>
parents:
94
diff
changeset
|
423 #ifdef DM_USE_JSS |
32
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
424 jssInit(); |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
425 |
105
d5d27f262227
Beging merging of dmsimple2-fork into the main "engine".
Matti Hamalainen <ccr@tnsp.org>
parents:
94
diff
changeset
|
426 switch (engine.optAfmt.format) |
d5d27f262227
Beging merging of dmsimple2-fork into the main "engine".
Matti Hamalainen <ccr@tnsp.org>
parents:
94
diff
changeset
|
427 { |
110
8db49a23b393
Fixes to make the JSS audio subsystem support work again in the engine framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
109
diff
changeset
|
428 case AUDIO_S16SYS: engine.jss_format = JSS_AUDIO_S16; break; |
8db49a23b393
Fixes to make the JSS audio subsystem support work again in the engine framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
109
diff
changeset
|
429 case AUDIO_U16SYS: engine.jss_format = JSS_AUDIO_U16; break; |
8db49a23b393
Fixes to make the JSS audio subsystem support work again in the engine framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
109
diff
changeset
|
430 case AUDIO_S8: engine.jss_format = JSS_AUDIO_S8; break; |
8db49a23b393
Fixes to make the JSS audio subsystem support work again in the engine framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
109
diff
changeset
|
431 case AUDIO_U8: engine.jss_format = JSS_AUDIO_U8; break; |
105
d5d27f262227
Beging merging of dmsimple2-fork into the main "engine".
Matti Hamalainen <ccr@tnsp.org>
parents:
94
diff
changeset
|
432 } |
32
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
433 |
105
d5d27f262227
Beging merging of dmsimple2-fork into the main "engine".
Matti Hamalainen <ccr@tnsp.org>
parents:
94
diff
changeset
|
434 dmPrint(1, "Initializing miniJSS mixer with fmt=%d, chn=%d, freq=%d\n", |
110
8db49a23b393
Fixes to make the JSS audio subsystem support work again in the engine framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
109
diff
changeset
|
435 engine.jss_format, engine.optAfmt.channels, engine.optAfmt.freq); |
32
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
436 |
110
8db49a23b393
Fixes to make the JSS audio subsystem support work again in the engine framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
109
diff
changeset
|
437 if ((engine.dev = jvmInit(engine.jss_format, engine.optAfmt.channels, engine.optAfmt.freq, JMIX_AUTO)) == NULL) |
32
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
438 { |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
439 dmError("jvmInit() returned NULL, voi perkele.\n"); |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
440 goto error_exit; |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
441 } |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
442 |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
443 if ((engine.plr = jmpInit(engine.dev)) == NULL) |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
444 { |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
445 dmError("jmpInit() returned NULL\n"); |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
446 goto error_exit; |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
447 } |
105
d5d27f262227
Beging merging of dmsimple2-fork into the main "engine".
Matti Hamalainen <ccr@tnsp.org>
parents:
94
diff
changeset
|
448 #endif |
32
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
449 |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
450 // Initialize SDL audio |
105
d5d27f262227
Beging merging of dmsimple2-fork into the main "engine".
Matti Hamalainen <ccr@tnsp.org>
parents:
94
diff
changeset
|
451 dmPrint(1, "Trying to init SDL audio with: fmt=%d, chn=%d, freq=%d\n", |
d5d27f262227
Beging merging of dmsimple2-fork into the main "engine".
Matti Hamalainen <ccr@tnsp.org>
parents:
94
diff
changeset
|
452 engine.optAfmt.format, engine.optAfmt.channels, engine.optAfmt.freq); |
32
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
453 |
342
c6ec970dc3cf
Separate some demo engine parts to two different modules.
Matti Hamalainen <ccr@tnsp.org>
parents:
336
diff
changeset
|
454 engine.optAfmt.callback = engineAudioCallback; |
32
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
455 |
105
d5d27f262227
Beging merging of dmsimple2-fork into the main "engine".
Matti Hamalainen <ccr@tnsp.org>
parents:
94
diff
changeset
|
456 if (SDL_OpenAudio(&engine.optAfmt, NULL) < 0) |
32
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
457 { |
122
5ba672ebe014
Add some verbose engine startup messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
121
diff
changeset
|
458 dmError("Couldn't open SDL audio: %s\n", SDL_GetError()); |
595
695a623eed63
Add a comment about no-sound support to the relevant part in audio setup
Matti Hamalainen <ccr@tnsp.org>
parents:
593
diff
changeset
|
459 // We'll let this pass, as we want to support no-sound. |
695a623eed63
Add a comment about no-sound support to the relevant part in audio setup
Matti Hamalainen <ccr@tnsp.org>
parents:
593
diff
changeset
|
460 // goto error_exit; |
32
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
461 } |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
462 |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
463 // Initialize SDL video |
127
ab4086db7dad
Various improvements in modularity.
Matti Hamalainen <ccr@tnsp.org>
parents:
126
diff
changeset
|
464 if (engine.demoInitPreVideo != NULL && |
366
38e10b5f4e09
Work towards base engine re-entrancy.
Matti Hamalainen <ccr@tnsp.org>
parents:
361
diff
changeset
|
465 (err = engine.demoInitPreVideo(&engine)) != DMERR_OK) |
127
ab4086db7dad
Various improvements in modularity.
Matti Hamalainen <ccr@tnsp.org>
parents:
126
diff
changeset
|
466 { |
574 | 467 dmError("demoInitPreVideo() failed, #%d: %s\n", err, dmErrorStr(err)); |
127
ab4086db7dad
Various improvements in modularity.
Matti Hamalainen <ccr@tnsp.org>
parents:
126
diff
changeset
|
468 goto error_exit; |
ab4086db7dad
Various improvements in modularity.
Matti Hamalainen <ccr@tnsp.org>
parents:
126
diff
changeset
|
469 } |
ab4086db7dad
Various improvements in modularity.
Matti Hamalainen <ccr@tnsp.org>
parents:
126
diff
changeset
|
470 |
332
d4802335cbbc
Clean up video (re)initialization.
Matti Hamalainen <ccr@tnsp.org>
parents:
316
diff
changeset
|
471 if (!engineInitializeVideo()) |
32
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
472 goto error_exit; |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
473 |
127
ab4086db7dad
Various improvements in modularity.
Matti Hamalainen <ccr@tnsp.org>
parents:
126
diff
changeset
|
474 if (engine.demoInitPostVideo != NULL && |
366
38e10b5f4e09
Work towards base engine re-entrancy.
Matti Hamalainen <ccr@tnsp.org>
parents:
361
diff
changeset
|
475 (err = engine.demoInitPostVideo(&engine)) != DMERR_OK) |
127
ab4086db7dad
Various improvements in modularity.
Matti Hamalainen <ccr@tnsp.org>
parents:
126
diff
changeset
|
476 { |
574 | 477 dmError("demoInitPostVideo() failed, #%d: %s\n", err, dmErrorStr(err)); |
127
ab4086db7dad
Various improvements in modularity.
Matti Hamalainen <ccr@tnsp.org>
parents:
126
diff
changeset
|
478 goto error_exit; |
ab4086db7dad
Various improvements in modularity.
Matti Hamalainen <ccr@tnsp.org>
parents:
126
diff
changeset
|
479 } |
32
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
480 |
593 | 481 // Hide cursor |
482 SDL_ShowCursor(SDL_DISABLE); | |
483 | |
32
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
484 // Load resources |
122
5ba672ebe014
Add some verbose engine startup messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
121
diff
changeset
|
485 dmPrint(1, "Loading resources, please wait...\n"); |
32
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
486 if ((err = engineLoadResources()) != DMERR_OK) |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
487 { |
574 | 488 dmError("Error loading resources, #%d: %s.\n", |
32
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
489 err, dmErrorStr(err)); |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
490 goto error_exit; |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
491 } |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
492 |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
493 // Final initializations |
366
38e10b5f4e09
Work towards base engine re-entrancy.
Matti Hamalainen <ccr@tnsp.org>
parents:
361
diff
changeset
|
494 if ((err = engine.demoInit(&engine)) != DMERR_OK) |
354 | 495 { |
574 | 496 dmError("Failure in demoInit(), #%d: %s\n", |
354 | 497 err, dmErrorStr(err)); |
32
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
498 goto error_exit; |
354 | 499 } |
500 | |
501 // Initialize effects | |
369 | 502 if ((err = engineInitializeEffects(&engine)) != DMERR_OK) |
354 | 503 { |
574 | 504 dmError("Effects initialization failed, #%d: %s\n", |
354 | 505 err, dmErrorStr(err)); |
506 goto error_exit; | |
507 } | |
508 | |
509 // Use a timeline, if set | |
573
14640d0688d3
Make timeline stuff optional.
Matti Hamalainen <ccr@tnsp.org>
parents:
571
diff
changeset
|
510 #ifdef DM_USE_TIMELINE |
354 | 511 if (engine.timeline != NULL) |
512 { | |
513 if ((err = dmLoadTimeline(engine.timeline, &engine.tl)) != DMERR_OK) | |
514 { | |
574 | 515 dmError("Error loading timeline, #%d: %s\n", err, |
354 | 516 dmErrorStr(err)); |
517 goto error_exit; | |
518 } | |
519 | |
520 if ((err = dmPrepareTimeline(engine.tl, engine.ptl)) != DMERR_OK) | |
521 { | |
574 | 522 dmError("Error creating prepared timeline, #%d: %s\n", |
354 | 523 err, dmErrorStr(err)); |
524 goto error_exit; | |
525 } | |
526 } | |
573
14640d0688d3
Make timeline stuff optional.
Matti Hamalainen <ccr@tnsp.org>
parents:
571
diff
changeset
|
527 #endif |
32
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
528 |
122
5ba672ebe014
Add some verbose engine startup messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
121
diff
changeset
|
529 dmPrint(1, "Starting up.\n"); |
278 | 530 |
531 SDL_LockAudio(); | |
41
780300a8d322
Move SDL_PauseAudio(0) to the "engine" instead of the demo code.
Matti Hamalainen <ccr@tnsp.org>
parents:
40
diff
changeset
|
532 SDL_PauseAudio(0); |
278 | 533 SDL_UnlockAudio(); |
534 | |
32
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
535 engine.startTime = SDL_GetTicks(); |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
536 |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
537 while (!engine.exitFlag) |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
538 { |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
539 while (SDL_PollEvent(&engine.event)) |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
540 switch (engine.event.type) |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
541 { |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
542 case SDL_KEYDOWN: |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
543 switch (engine.event.key.keysym.sym) |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
544 { |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
545 case SDLK_ESCAPE: |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
546 engine.exitFlag = TRUE; |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
547 break; |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
548 |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
549 case SDLK_SPACE: |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
550 engine.pauseFlag = !engine.pauseFlag; |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
551 break; |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
552 |
336
13dba73cf28e
Add 'F' key to fullscreen toggling, in addition to alt+enter.
Matti Hamalainen <ccr@tnsp.org>
parents:
335
diff
changeset
|
553 case SDLK_f: |
13dba73cf28e
Add 'F' key to fullscreen toggling, in addition to alt+enter.
Matti Hamalainen <ccr@tnsp.org>
parents:
335
diff
changeset
|
554 engine.optVFlags ^= SDL_FULLSCREEN; |
13dba73cf28e
Add 'F' key to fullscreen toggling, in addition to alt+enter.
Matti Hamalainen <ccr@tnsp.org>
parents:
335
diff
changeset
|
555 if (!engineInitializeVideo()) |
13dba73cf28e
Add 'F' key to fullscreen toggling, in addition to alt+enter.
Matti Hamalainen <ccr@tnsp.org>
parents:
335
diff
changeset
|
556 goto error_exit; |
13dba73cf28e
Add 'F' key to fullscreen toggling, in addition to alt+enter.
Matti Hamalainen <ccr@tnsp.org>
parents:
335
diff
changeset
|
557 break; |
13dba73cf28e
Add 'F' key to fullscreen toggling, in addition to alt+enter.
Matti Hamalainen <ccr@tnsp.org>
parents:
335
diff
changeset
|
558 |
109
3de6301dcfe1
Implement fullscrene toggling via alt+enter
Matti Hamalainen <ccr@tnsp.org>
parents:
105
diff
changeset
|
559 case SDLK_RETURN: |
3de6301dcfe1
Implement fullscrene toggling via alt+enter
Matti Hamalainen <ccr@tnsp.org>
parents:
105
diff
changeset
|
560 if (engine.event.key.keysym.mod & KMOD_ALT) |
3de6301dcfe1
Implement fullscrene toggling via alt+enter
Matti Hamalainen <ccr@tnsp.org>
parents:
105
diff
changeset
|
561 { |
332
d4802335cbbc
Clean up video (re)initialization.
Matti Hamalainen <ccr@tnsp.org>
parents:
316
diff
changeset
|
562 engine.optVFlags ^= SDL_FULLSCREEN; |
d4802335cbbc
Clean up video (re)initialization.
Matti Hamalainen <ccr@tnsp.org>
parents:
316
diff
changeset
|
563 if (!engineInitializeVideo()) |
d4802335cbbc
Clean up video (re)initialization.
Matti Hamalainen <ccr@tnsp.org>
parents:
316
diff
changeset
|
564 goto error_exit; |
109
3de6301dcfe1
Implement fullscrene toggling via alt+enter
Matti Hamalainen <ccr@tnsp.org>
parents:
105
diff
changeset
|
565 } |
3de6301dcfe1
Implement fullscrene toggling via alt+enter
Matti Hamalainen <ccr@tnsp.org>
parents:
105
diff
changeset
|
566 break; |
93
15fdd5573344
Add simple (and buggy / not really working) debug mode.
Matti Hamalainen <ccr@tnsp.org>
parents:
42
diff
changeset
|
567 |
32
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
568 default: |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
569 break; |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
570 } |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
571 |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
572 break; |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
573 |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
574 case SDL_VIDEOEXPOSE: |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
575 break; |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
576 |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
577 case SDL_QUIT: |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
578 engine.exitFlag = TRUE; |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
579 break; |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
580 } |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
581 |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
582 // Draw frame |
361 | 583 engine.frameTime = SDL_GetTicks(); |
93
15fdd5573344
Add simple (and buggy / not really working) debug mode.
Matti Hamalainen <ccr@tnsp.org>
parents:
42
diff
changeset
|
584 if (engine.pauseFlag != engine.paused) |
15fdd5573344
Add simple (and buggy / not really working) debug mode.
Matti Hamalainen <ccr@tnsp.org>
parents:
42
diff
changeset
|
585 { |
15fdd5573344
Add simple (and buggy / not really working) debug mode.
Matti Hamalainen <ccr@tnsp.org>
parents:
42
diff
changeset
|
586 engine.paused = engine.pauseFlag; |
367 | 587 engine.pauseTime = engineGetTick(&engine); |
93
15fdd5573344
Add simple (and buggy / not really working) debug mode.
Matti Hamalainen <ccr@tnsp.org>
parents:
42
diff
changeset
|
588 } |
15fdd5573344
Add simple (and buggy / not really working) debug mode.
Matti Hamalainen <ccr@tnsp.org>
parents:
42
diff
changeset
|
589 |
15fdd5573344
Add simple (and buggy / not really working) debug mode.
Matti Hamalainen <ccr@tnsp.org>
parents:
42
diff
changeset
|
590 if (engine.paused) |
15fdd5573344
Add simple (and buggy / not really working) debug mode.
Matti Hamalainen <ccr@tnsp.org>
parents:
42
diff
changeset
|
591 { |
361 | 592 engine.startTime = engine.frameTime - engine.pauseTime; |
93
15fdd5573344
Add simple (and buggy / not really working) debug mode.
Matti Hamalainen <ccr@tnsp.org>
parents:
42
diff
changeset
|
593 } |
32
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
594 |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
595 if (SDL_MUSTLOCK(engine.screen) != 0 && SDL_LockSurface(engine.screen) != 0) |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
596 { |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
597 dmError("Can't lock surface.\n"); |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
598 goto error_exit; |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
599 } |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
600 |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
601 // Call main tick |
345
cac13f180169
Work towards timeline support.
Matti Hamalainen <ccr@tnsp.org>
parents:
342
diff
changeset
|
602 if (engine.demoRender != NULL) |
cac13f180169
Work towards timeline support.
Matti Hamalainen <ccr@tnsp.org>
parents:
342
diff
changeset
|
603 { |
366
38e10b5f4e09
Work towards base engine re-entrancy.
Matti Hamalainen <ccr@tnsp.org>
parents:
361
diff
changeset
|
604 if ((err = engine.demoRender(&engine)) != DMERR_OK) |
345
cac13f180169
Work towards timeline support.
Matti Hamalainen <ccr@tnsp.org>
parents:
342
diff
changeset
|
605 goto error_exit; |
cac13f180169
Work towards timeline support.
Matti Hamalainen <ccr@tnsp.org>
parents:
342
diff
changeset
|
606 } |
573
14640d0688d3
Make timeline stuff optional.
Matti Hamalainen <ccr@tnsp.org>
parents:
571
diff
changeset
|
607 #ifdef DM_USE_TIMELINE |
345
cac13f180169
Work towards timeline support.
Matti Hamalainen <ccr@tnsp.org>
parents:
342
diff
changeset
|
608 else |
cac13f180169
Work towards timeline support.
Matti Hamalainen <ccr@tnsp.org>
parents:
342
diff
changeset
|
609 { |
366
38e10b5f4e09
Work towards base engine re-entrancy.
Matti Hamalainen <ccr@tnsp.org>
parents:
361
diff
changeset
|
610 if ((err = dmExecuteTimeline(engine.ptl, engine.screen, engineGetTick(&engine))) != DMERR_OK) |
345
cac13f180169
Work towards timeline support.
Matti Hamalainen <ccr@tnsp.org>
parents:
342
diff
changeset
|
611 goto error_exit; |
cac13f180169
Work towards timeline support.
Matti Hamalainen <ccr@tnsp.org>
parents:
342
diff
changeset
|
612 } |
573
14640d0688d3
Make timeline stuff optional.
Matti Hamalainen <ccr@tnsp.org>
parents:
571
diff
changeset
|
613 #endif |
32
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
614 |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
615 // Flip screen |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
616 if (SDL_MUSTLOCK(engine.screen) != 0) |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
617 SDL_UnlockSurface(engine.screen); |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
618 |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
619 SDL_Flip(engine.screen); |
105
d5d27f262227
Beging merging of dmsimple2-fork into the main "engine".
Matti Hamalainen <ccr@tnsp.org>
parents:
94
diff
changeset
|
620 SDL_Delay(engine.paused ? 100 : 20); |
32
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
621 |
361 | 622 engine.frameCount++; |
32
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
623 } |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
624 |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
625 // Print benchmark results |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
626 engine.endTime = SDL_GetTicks(); |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
627 dmPrint(1, "%d frames in %d ms, fps = %1.3f\n", |
361 | 628 engine.frameCount, engine.endTime - engine.startTime, |
629 (float) (engine.frameCount * 1000.0f) / (float) (engine.endTime - engine.startTime)); | |
32
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
630 |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
631 |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
632 error_exit: |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
633 |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
634 dmPrint(1, "Shutting down.\n"); |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
635 SDL_ShowCursor(SDL_ENABLE); |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
636 |
278 | 637 SDL_LockAudio(); |
638 SDL_PauseAudio(1); | |
105
d5d27f262227
Beging merging of dmsimple2-fork into the main "engine".
Matti Hamalainen <ccr@tnsp.org>
parents:
94
diff
changeset
|
639 #ifdef DM_USE_JSS |
32
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
640 jmpClose(engine.plr); |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
641 jvmClose(engine.dev); |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
642 jssClose(); |
278 | 643 #endif |
32
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
644 SDL_UnlockAudio(); |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
645 |
573
14640d0688d3
Make timeline stuff optional.
Matti Hamalainen <ccr@tnsp.org>
parents:
571
diff
changeset
|
646 #ifdef DM_USE_TIMELINE |
354 | 647 dmFreeTimeline(engine.tl); |
648 dmFreePreparedTimelineData(engine.ptl); | |
573
14640d0688d3
Make timeline stuff optional.
Matti Hamalainen <ccr@tnsp.org>
parents:
571
diff
changeset
|
649 #endif |
14640d0688d3
Make timeline stuff optional.
Matti Hamalainen <ccr@tnsp.org>
parents:
571
diff
changeset
|
650 |
369 | 651 engineShutdownEffects(&engine); |
359
59045853853d
Make resource management re-entrant.
Matti Hamalainen <ccr@tnsp.org>
parents:
354
diff
changeset
|
652 dmres_close(engine.resources); |
32
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
653 |
127
ab4086db7dad
Various improvements in modularity.
Matti Hamalainen <ccr@tnsp.org>
parents:
126
diff
changeset
|
654 if (engine.demoShutdown != NULL) |
366
38e10b5f4e09
Work towards base engine re-entrancy.
Matti Hamalainen <ccr@tnsp.org>
parents:
361
diff
changeset
|
655 engine.demoShutdown(&engine); |
94
4bbfc0274b29
Change some function names, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
93
diff
changeset
|
656 |
32
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
657 if (initSDL) |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
658 SDL_Quit(); |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
659 |
127
ab4086db7dad
Various improvements in modularity.
Matti Hamalainen <ccr@tnsp.org>
parents:
126
diff
changeset
|
660 if (engine.demoQuit != NULL) |
366
38e10b5f4e09
Work towards base engine re-entrancy.
Matti Hamalainen <ccr@tnsp.org>
parents:
361
diff
changeset
|
661 engine.demoQuit(&engine); |
32
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
662 |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
663 return 0; |
d1a6833a5d67
Added a simple demo engine core.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
664 } |