bool xmas_prompt( void ) { const char *xmas_text[] = { "Christmas has been detected.", "Activate Christmas?", "Yes", "No" }; JE_updateColorsFast(palettes[0]); JE_outTextAdjust(JE_fontCenter(xmas_text[0], SMALL_FONT_SHAPES), 85, xmas_text[0], 4, -2, SMALL_FONT_SHAPES, true); JE_outTextAdjust(JE_fontCenter(xmas_text[1], SMALL_FONT_SHAPES), 100, xmas_text[1], 2, -2, SMALL_FONT_SHAPES, false); int selection = 0; bool decided = false; while (!decided) { JE_outTextAdjust(JE_fontCenter(xmas_text[2], SMALL_FONT_SHAPES) - 20, 120, xmas_text[2], 15, (selection == 0) ? -2 : -4, SMALL_FONT_SHAPES, true); JE_outTextAdjust(JE_fontCenter(xmas_text[3], SMALL_FONT_SHAPES) + 20, 120, xmas_text[3], 15, (selection == 1) ? -2 : -4, SMALL_FONT_SHAPES, true); JE_showVGA(); JE_word temp = 0; JE_textMenuWait(&temp, false); if (newkey) { switch (lastkey_sym) { case SDLK_LEFT: if (selection == 0) selection = 2; selection--; break; case SDLK_RIGHT: selection++; selection %= 2; break; case SDLK_RETURN: decided = true; break; case SDLK_ESCAPE: return false; default: break; } } } return (selection == 0); }
void JE_zPal( unsigned int pal ) { JE_updateColorsFast(palettes[pal-1]); }
void load_palette( unsigned int pal_num, bool set_colors ) { Palette& pal = palettes[pal_num]; std::copy(pal, pal+256, colors); if (set_colors) JE_updateColorsFast(colors); }
void JE_jukeboxGo( void ) { JE_boolean weirdMusic, weirdCurrent; JE_byte weirdSpeed = 0; char tempStr[64]; JE_byte lastSong; JE_byte tempVolume; JE_boolean youStopped, drawText, quit, fade; weirdMusic = false; weirdCurrent = true; drawText = true; fx = false; fxNum = 1; lastSong = currentJukeboxSong; JE_fadeBlack(10); SDL_FillRect(VGAScreenSeg, NULL, 0x0); JE_showVGA(); JE_updateColorsFast(vga_palette); //JE_fadeColor(10); JE_starlib_init(); quit = false; fade = false; repeatedFade = false; tempVolume = tyrMusicVolume; youStopped = false; JE_wipeKey(); do { tempScreenSeg = VGAScreenSeg; if (weirdMusic) { if (delaycount2() == 0) { setjasondelay2(weirdSpeed); if (weirdCurrent) { JE_setVol(tempVolume / 2, fxVolume); } else { JE_setVol(tempVolume, fxVolume); } weirdCurrent = !weirdCurrent; } } if (repeated && !repeatedFade) { fade = true; repeatedFade = true; } if ( ( (repeated && !fade) || !playing) && !youStopped) { currentJukeboxSong = ( mt_rand() % MUSIC_NUM ); JE_playNewSong(); } setdelay(1); push_joysticks_as_keyboard(); service_SDL_events(true); JE_starlib_main(); if (lastSong != currentJukeboxSong) { lastSong = currentJukeboxSong; JE_bar(50, 190, 250, 198, 0); } if (drawText) { tempScreenSeg = VGAScreenSeg; if (fx) { sprintf(tempStr, "%d %s", fxNum, soundTitle[fxNum - 1]); JE_bar(50, 190, 250, 198, 0); JE_outText(JE_fontCenter(tempStr, TINY_FONT), 190, tempStr, 1, 4); } else { sprintf(tempStr, "%d %s", currentJukeboxSong, musicTitle[currentJukeboxSong - 1]); JE_outText(JE_fontCenter(tempStr, TINY_FONT), 190, tempStr, 1, 4); } tempScreenSeg = VGAScreenSeg; JE_outText(JE_fontCenter("Press ESC to quit the jukebox.", TINY_FONT), 170, "Press ESC to quit the jukebox.", 1, 0); tempScreenSeg = VGAScreenSeg; JE_outText(JE_fontCenter("Arrow keys change the song being played.", TINY_FONT), 180, "Arrow keys change the song being played.", 1, 0); } JE_showVGA(); wait_delay(); if (fade) { if (volumeActive) { if (tempVolume > 5) { tempVolume -= 2; JE_setVol(tempVolume, fxVolume); } else { fade = false; } } else if (speed < 0xE000) { speed += 0x800; } else { speed = 0xE000; fade = false; } JE_resetTimerInt(); JE_setTimerInt(); } if (JE_mousePosition(&x, &y) > 0 || button[0]) { quit = true; JE_wipeKey(); } if (newkey) { JE_newSpeed(); switch (lastkey_sym) { case SDLK_ESCAPE: /* quit jukebox */ case SDLK_q: quit = true; break; case SDLK_r: /* restart song */ JE_jukebox_selectSong(1); break; case SDLK_n: /* toggle continuous play */ continuousPlay = !continuousPlay; break; case SDLK_v: volumeActive = !volumeActive; break; case SDLK_t: /* No idea what this is doing -- possibly resetting to default speed? */ speed = 0x4300; JE_resetTimerInt(); JE_setTimerInt(); break; case SDLK_f: fade = !fade; break; case SDLK_COMMA: /* dec sound effect */ fxNum = (fxNum - 1 < 1) ? SOUND_NUM + 9 : fxNum - 1; break; case SDLK_PERIOD: /* inc sound effect */ fxNum = (fxNum + 1 > SOUND_NUM + 9) ? 1 : fxNum + 1; break; case SDLK_SLASH: /* switch to sfx mode */ fx = !fx; break; case SDLK_SEMICOLON: JE_playSampleNum(fxNum); break; case SDLK_RETURN: currentJukeboxSong++; JE_playNewSong(); youStopped = false; break; case SDLK_s: JE_jukebox_selectSong(0); youStopped = true; break; case SDLK_w: if (!weirdMusic) { weirdMusic = true; weirdSpeed = 10; } else if (weirdSpeed > 1) { weirdSpeed--; } else { weirdMusic = false; if (!fade) { JE_setVol(tempVolume, fxVolume); } } break; case SDLK_SPACE: drawText = !drawText; if (!drawText) { JE_bar(30, 170, 270, 198, 0); } break; case SDLK_LEFT: case SDLK_UP: currentJukeboxSong--; JE_playNewSong(); youStopped = false; break; case SDLK_RIGHT: case SDLK_DOWN: currentJukeboxSong++; JE_playNewSong(); youStopped = false; break; default: break; } } } while (!quit); JE_updateColorsFast(black); //JE_fadeBlack(10); JE_setVol(255, fxVolume); }