Changeset 576
- Timestamp:
- May 2, 2011, 2:28:20 PM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
abuse/trunk/src/game.cpp
r575 r576 1162 1162 extern int start_doubled; 1163 1163 1164 static template<int N> Fade(image *im, int steps) 1165 { 1164 template<int N> static void Fade(image *im, int steps) 1165 { 1166 /* 25ms per step */ 1167 float const duration = 25.f; 1168 1166 1169 palette *old_pal = pal->copy(); 1167 1170 … … 1173 1176 } 1174 1177 1175 for (int i = 0; i < steps; i++) 1176 { 1178 for (Timer total; total.PollMs() < duration * steps; ) 1179 { 1180 Timer frame; 1177 1181 uint8_t *sl1 = (uint8_t *)pal->addr(); 1178 1182 uint8_t *sl2 = (uint8_t *)old_pal->addr(); 1183 int i = (int)(total.PollMs() / duration); 1179 1184 int v = (N ? i + 1 : steps - i) * 256 / steps; 1180 for (int j = 0; j < 256; j++) 1181 { 1182 *sl1 = (int)*sl2++ * v / 256; 1183 *sl1 = (int)*sl2++ * v / 256; 1184 *sl1 = (int)*sl2++ * v / 256; 1185 } 1185 1186 for (int j = 0; j < 3 * 256; j++) 1187 *sl1++ = (int)*sl2++ * v / 256; 1188 1186 1189 pal->load(); 1187 1190 wm->flush_screen(); 1188 milli_wait(25);1191 frame.WaitMs(duration); 1189 1192 } 1190 1193 … … 1201 1204 void fade_in(image *im, int steps) 1202 1205 { 1203 Fade<1>( NULL, steps);1206 Fade<1>(im, steps); 1204 1207 } 1205 1208 … … 1249 1252 milli_wait(100); 1250 1253 1251 int i;1252 1254 char *str = lstring_value(LSymbol::FindOrCreate("plot_start")->Eval()); 1253 1255 … … 1264 1266 1265 1267 char nm[20]; 1266 for (i = 0; i < 5; i++)1268 for (int i = 0; i < 5; i++) 1267 1269 { 1268 1270 sprintf(nm, "smoke%04d.pcx", i + 1); … … 1279 1281 fade_in(NULL, 16); 1280 1282 uint8_t cmap[32]; 1281 for(i = 0; i < 32; i++)1283 for(int i = 0; i < 32; i++) 1282 1284 cmap[i] = pal->find_closest(i * 256 / 32, i * 256 / 32, i * 256 / 32); 1283 1285 1284 1286 event ev; 1285 1287 ev.type = EV_SPURIOUS; 1286 time_marker start; 1287 1288 for(i = 0; i < 320 && (ev.type != EV_KEY && ev.type != EV_MOUSE_BUTTON); i++) 1289 { 1288 Timer total; 1289 1290 while (ev.type != EV_KEY && ev.type != EV_MOUSE_BUTTON) 1291 { 1292 Timer frame; 1293 1294 // 100 ms per step 1295 int i = (int)(total.PollMs() / 100.f); 1296 if (i >= 320) 1297 break; 1298 1290 1299 gray->put_image(screen, dx, dy); 1291 1300 smoke[i % 5]->put_image(screen, dx + 24, dy + 5); … … 1294 1303 time_marker now; 1295 1304 1296 while(now.diff_time(&start) < 0.18)1297 {1298 milli_wait(20); // ECS - Added the wait, so CPU utilization stays low during the story1299 now.get_time();1300 }1301 1302 start.get_time();1303 1304 1305 while(wm->event_waiting() && ev.type != EV_KEY) 1305 {1306 1306 wm->get_event(ev); 1307 } 1307 1308 1308 if((i % 5) == 0 && DEFINEDP(space_snd) && (sound_avail & SFX_INITIALIZED)) 1309 {1310 1309 cache.sfx(lnumber_value(space_snd))->play(sfx_volume * 90 / 127); 1311 } 1310 1311 frame.WaitMs(25.f); 1312 1312 } 1313 1313 … … 1316 1316 fade_out(16); 1317 1317 1318 for (i = 0; i < 5; i++)1318 for (int i = 0; i < 5; i++) 1319 1319 delete smoke[i]; 1320 1320 delete gray;
Note: See TracChangeset
for help on using the changeset viewer.