// text callback void text_callback(GLFWwindow* window, unsigned int key) { view_params* view = (view_params*)glfwGetWindowUserPointer(window); switch (key) { case ' ': view->simulating = !view->simulating; break; case '/': { for (int i = 0; i < view->scene->shapes.size(); i++) { view->scene->shapes[i].xform = ym_identity_affine3f; ysr_set_transform(view->rigid_scene, i, ym_identity_frame3f); } } break; case '.': simulate_step(view); break; case '[': view->exposure -= 1; break; case ']': view->exposure += 1; break; case '{': view->gamma -= 0.1f; break; case '}': view->gamma += 0.1f; break; case 'e': view->view_edges = !view->view_edges; break; case 'h': view->view_hull = !view->view_hull; break; case 'b': view->background = (view->background + 1) % 4; break; case 's': save_screenshot(window, view); break; case 'c': view->camera_lights = !view->camera_lights; break; case 'C': view->cur_camera = (view->cur_camera + 1) % view->scene->cameras.size(); break; default: printf("unsupported key\n"); break; } }
void KX_BlenderCanvas::MakeScreenShot(const char *filename) { ScrArea area_dummy= {0}; bScreen *screen = m_win->screen; unsigned int *dumprect; int dumpsx, dumpsy; area_dummy.totrct.xmin = m_frame_rect.GetLeft(); area_dummy.totrct.xmax = m_frame_rect.GetRight(); area_dummy.totrct.ymin = m_frame_rect.GetBottom(); area_dummy.totrct.ymax = m_frame_rect.GetTop(); dumprect = screenshot(&area_dummy, &dumpsx, &dumpsy); if (!dumprect) { std::cerr << "KX_BlenderCanvas: Unable to take screenshot!" << std::endl; return; } /* initialize image file format data */ Scene *scene = (screen)? screen->scene: NULL; ImageFormatData *im_format = (ImageFormatData *)MEM_mallocN(sizeof(ImageFormatData), "im_format"); if (scene) *im_format = scene->r.im_format; else BKE_imformat_defaults(im_format); /* save_screenshot() frees dumprect and im_format */ save_screenshot(filename, dumpsx, dumpsy, dumprect, im_format); }
void keypressed(unsigned char key, int x, int y) { if (key == 's') { viewer->pos[2]+=0.05; } if (key == 'w') { viewer->pos[2]-=0.05; } if (key == 'a') { viewer->pos[0]-=0.05; } if (key == 'd') { viewer->pos[0]+=0.05; } if (key == 'b') { viewer->pos[1]+=0.05; } if (key == 'n') { viewer->pos[1]-=0.05; } if (key == 'z') { save_screenshot("a.tga",WIDTH,HEIGHT); } if( key == 'r') {rotate_try(X_axis);} if( key == 't') {rotate_try(Y_axis);} if( key == 'y') {rotate_try(Z_axis);} if (key == 'x') { printf("\n\nYour total score is %d\n",tetris_board->score ); exit(0); } if( key == ' ') { move_block_max_down(); } if (key=='m') { if(music==0){ alSourceStop(source); music=1; } else { loadSound("./wav/theme.wav"); alSourcePlay(source); music=0; } } }
void player_death(void) { /* Try to make a player ghost template */ add_player_ghost_entry(); /* Retire in the town in a good state */ if (p_ptr->total_winner) { p_ptr->depth = 0; p_ptr->died_from = "Ripe Old Age"; p_ptr->exp = p_ptr->max_exp; p_ptr->lev = p_ptr->max_lev; p_ptr->au += 10000000L; display_winner(); } QDate today = QDate::currentDate(); QTime right_now = QTime::currentTime(); QString long_day = QString("%1 at %2") .arg(today.toString()) .arg(right_now.toString()); write_death_note(long_day); print_tomb(); death_knowledge(); enter_score(long_day); /* Save dead player */ if (!save_player()) { message(QString("death save failed!")); } // Hack - update everything onscreen ui_redraw_all(); // Automatic character dump if (death_char_dump) { save_character_file(); save_screenshot(FALSE); } p_ptr->in_death_menu = TRUE; PlayerDeathDialog(); p_ptr->in_death_menu = FALSE; }
void handle_events(bool &running, SDL_Window *window) { SDL_Event event; while (SDL_PollEvent(&event)) { gui::poll_events(event); switch (event.type) { case SDL_KEYUP: if (event.key.keysym.sym == SDLK_ESCAPE) running = false; if (event.key.keysym.sym == SDLK_PRINTSCREEN) save_screenshot(window); on_key_up(event.key.keysym.mod, event.key.keysym.sym); break; case SDL_KEYDOWN: on_key_down(event.key.keysym.mod, event.key.keysym.sym); break; case SDL_MOUSEMOTION: if (event.motion.state & SDL_BUTTON_LMASK) on_mouse_dragged(SDL_BUTTON_LEFT, event.motion.x, event.motion.y, event.motion.xrel, event.motion.yrel); else if (event.motion.state & SDL_BUTTON_MMASK) on_mouse_dragged(SDL_BUTTON_MIDDLE, event.motion.x, event.motion.y, event.motion.xrel, event.motion.yrel); else if (event.motion.state & SDL_BUTTON_RMASK) on_mouse_dragged(SDL_BUTTON_RIGHT, event.motion.x, event.motion.y, event.motion.xrel, event.motion.yrel); else on_mouse_moved(event.motion.x, event.motion.y, event.motion.xrel, event.motion.yrel); break; case SDL_MOUSEBUTTONDOWN: on_mouse_pressed(event.button.button, event.button.x, event.button.y); break; case SDL_MOUSEBUTTONUP: on_mouse_released(event.button.button, event.button.x, event.button.y); break; case SDL_QUIT: running = false; break; } } }
void asdf_multiplat_t::on_event(SDL_Event* event) { switch (event->type) { case SDL_QUIT: running = false; break; case SDL_KEYDOWN: if (event->key.keysym.sym == SDLK_F4) { if (event->key.keysym.mod & KMOD_ALT) running = false; } else if (event->key.keysym.sym == SDLK_F12) { save_screenshot("screenshot_test.bmp"); } break; case SDL_MOUSEMOTION: event->motion.x -= settings.resolution_width / 2; event->motion.y = settings.resolution_height / 2 - event->motion.y; break; case SDL_MOUSEBUTTONDOWN: case SDL_MOUSEBUTTONUP: event->button.x -= settings.resolution_width / 2; event->motion.y = settings.resolution_height / 2 - event->motion.y; break; case SDL_MOUSEWHEEL: break; case SDL_WINDOWEVENT: break; } process_sdl_mouse_events(mouse_state, event); specific->on_event(event); main_view->on_event(event, glm::vec3(), glm::mat3()); }
void View::save_numbered_screenshot(const char* format, int number, bool high_quality) { char buffer[1000]; sprintf(buffer, format, number); save_screenshot(buffer, high_quality); }
void menu_loop(void) { bool8_32 exit_loop = false; char fname[256], ext[8]; char snapscreen_tmp[17120]; uint8 *keyssnes = 0; SaveSlotNum_old = -1; Scale_org = Scale; highres_current=Settings.SupportHiRes; capt_screenshot(); memcpy(snapscreen_tmp,snapscreen,17120); Scale = false; Settings.SupportHiRes=FALSE; S9xDeinitDisplay(); S9xInitDisplay(0, 0); menu_dispupdate(); sys_sleep(100000); SDL_Event event; do { while(SDL_PollEvent(&event)==1) { //PANDORA & DINGOO & WIN32 ----------------------------------------------------- keyssnes = SDL_GetKeyState(NULL); if(keyssnes[sfc_key[UP_1]] == SDL_PRESSED) cursor--; else if(keyssnes[sfc_key[DOWN_1]] == SDL_PRESSED) cursor++; else if( (keyssnes[sfc_key[A_1]] == SDL_PRESSED) || (keyssnes[sfc_key[LEFT_1]] == SDL_PRESSED) || (keyssnes[sfc_key[RIGHT_1]] == SDL_PRESSED) ) { switch(cursor) { case 2: //exit snes9x if (keyssnes[sfc_key[A_1]] == SDL_PRESSED) S9xExit(); break; case 3: //reset snes9x if ((keyssnes[sfc_key[A_1]] == SDL_PRESSED)) { //make sure the sram is stored before resetting the console //it should work without, but better safe than sorry... Memory.SaveSRAM (S9xGetFilename (".srm")); S9xReset(); exit_loop = TRUE; } break; case 4: if (keyssnes[sfc_key[A_1]] == SDL_PRESSED) ShowCredit(); break; case 6: //save state if (keyssnes[sfc_key[A_1]] == SDL_PRESSED) { memcpy(snapscreen,snapscreen_tmp,16050); show_screenshot(); strcpy(fname," Saving..."); S9xDisplayString (temp, GFX.Screen +320/*280*/, 640,80/*204*/); S9xDeinitUpdate (320, 240); sprintf(ext, ".s0%d", SaveSlotNum); strcpy(fname, S9xGetFilename (ext)); save_screenshot(fname); sprintf(ext, ".00%d", SaveSlotNum); strcpy(fname, S9xGetFilename (ext)); S9xFreezeGame (fname); sync(); exit_loop = TRUE; } break; case 7: //load state if (keyssnes[sfc_key[A_1]] == SDL_PRESSED) { sprintf(ext, ".00%d", SaveSlotNum); strcpy(fname, S9xGetFilename (ext)); S9xLoadSnapshot (fname); exit_loop = TRUE; } break; case 8: //select save state slot if (keyssnes[sfc_key[LEFT_1]] == SDL_PRESSED) { if ( SaveSlotNum == 0 ) SaveSlotNum = MAX_SAVE_SLOTS-1; // slots start at 0, so 10 slots means slot 0 to 9 else --SaveSlotNum; } else if (keyssnes[sfc_key[RIGHT_1]] == SDL_PRESSED) { if ( SaveSlotNum == MAX_SAVE_SLOTS-1 ) // slots start at 0, so 10 slots means slot 0 to 9 SaveSlotNum = 0; else ++SaveSlotNum; } break; case 10: // rotate through scalers if (keyssnes[sfc_key[RIGHT_1]] == SDL_PRESSED) { do { g_scale = (blit_scaler_e) ( ( g_scale + 1 ) % bs_max ); } while ( ( blit_scalers [ g_scale ].valid == bs_invalid ) || ( highres_current && !(blit_scalers [ g_scale ].support_hires) ) ); } else if (keyssnes[sfc_key[LEFT_1]] == SDL_PRESSED) { do { g_scale = (blit_scaler_e) ( g_scale - 1 ); if (g_scale < 1) g_scale = (blit_scaler_e)(bs_max-1); } while ( ( blit_scalers [ g_scale ].valid == bs_invalid ) || ( highres_current && !(blit_scalers [ g_scale ].support_hires) ) ); } // now force update the display, so that the new scaler is directly used (fixes some glitches) S9xDeinitDisplay(); S9xInitDisplay(0, 0); break; case 11: // set frameskip if (Settings.SkipFrames == AUTO_FRAMERATE) Settings.SkipFrames = 10; if (keyssnes[sfc_key[LEFT_1]] == SDL_PRESSED) Settings.SkipFrames--; else Settings.SkipFrames++; if(Settings.SkipFrames<=0 || Settings.SkipFrames==10) Settings.SkipFrames = AUTO_FRAMERATE; else if (Settings.SkipFrames>=11) Settings.SkipFrames = 1; break; case 12: // set vsync if (g_vsync) g_vsync = 0; else g_vsync = 1; break; case 13: // set display fps Settings.DisplayFrameRate = !Settings.DisplayFrameRate; break; case 14: // set transparency Settings.Transparency = !Settings.Transparency; break; case 15: // cut lines from top if (keyssnes[sfc_key[RIGHT_1]] == SDL_PRESSED) cut_top++; else if (keyssnes[sfc_key[LEFT_1]] == SDL_PRESSED && cut_top>0) cut_top--; // now force update the display, so that the new scaler is directly used (fixes some glitches) S9xDeinitDisplay(); S9xInitDisplay(0, 0); break; case 16: // cut lines from bottom if (keyssnes[sfc_key[RIGHT_1]] == SDL_PRESSED) cut_bottom++; else if (keyssnes[sfc_key[LEFT_1]] == SDL_PRESSED && cut_bottom>0) cut_bottom--; S9xDeinitDisplay(); S9xInitDisplay(0, 0); break; case 17: // cut from the left if (keyssnes[sfc_key[RIGHT_1]] == SDL_PRESSED) cut_left++; else if (keyssnes[sfc_key[LEFT_1]] == SDL_PRESSED && cut_left>0) cut_left--; S9xDeinitDisplay(); S9xInitDisplay(0, 0); break; case 18: // cut from the right if (keyssnes[sfc_key[RIGHT_1]] == SDL_PRESSED) cut_right++; else if (keyssnes[sfc_key[LEFT_1]] == SDL_PRESSED && cut_right>0) cut_right--; S9xDeinitDisplay(); S9xInitDisplay(0, 0); break; case 20: //offer an option to change to alternative sample decoding //cf. http://www.gp32x.com/board/index.php?/topic/55378-snes9x4d4p-another-new-build-now-with-hi-res-and-new-rom-picker/page__view__findpost__p__958860 if (Settings.AltSampleDecode) Settings.AltSampleDecode = 0; else Settings.AltSampleDecode = 1; break; } } if(cursor==1) cursor=20; else if(cursor==21) cursor=2; if(cursor==5 || cursor==9 || cursor==19) { if(keyssnes[sfc_key[UP_1]] == SDL_PRESSED) cursor--; else if(keyssnes[sfc_key[DOWN_1]] == SDL_PRESSED) cursor++; } menu_dispupdate(); sys_sleep(1000); break; } } while( exit_loop!=TRUE && keyssnes[sfc_key[B_1]] != SDL_PRESSED ); Scale = Scale_org; Settings.SupportHiRes=highres_current; S9xDeinitDisplay(); S9xInitDisplay(0, 0); }
void commands_angband_keyset(int key_press, bool shift_key, bool alt_key, bool ctrl_key, bool meta_key) { bool using_mods = FALSE; if (shift_key || alt_key || ctrl_key || meta_key) using_mods = TRUE; // Normal mode switch (key_press) { // ESCAPE case Qt::Key_Escape: { ui_center(p_ptr->py, p_ptr->px); break; } // Move down case Qt::Key_2: case Qt::Key_Down: { process_move_key(2, shift_key, alt_key, ctrl_key, meta_key); break; } // Move up case Qt::Key_8: case Qt::Key_Up: { process_move_key(8, shift_key, alt_key, ctrl_key, meta_key); break; } // Move left case Qt::Key_4: case Qt::Key_Left: { process_move_key(4, shift_key, alt_key, ctrl_key, meta_key); break; } // Move right case Qt::Key_6: case Qt::Key_Right: { process_move_key(6, shift_key, alt_key, ctrl_key, meta_key); break; } // Move diagonally left and up case Qt::Key_7: case Qt::Key_Home: { process_move_key(7, shift_key, alt_key, ctrl_key, meta_key); break; } // Move diagonally right and up case Qt::Key_9: case Qt::Key_PageUp: { process_move_key(9, shift_key, alt_key, ctrl_key, meta_key); break; } // Move diagonally left and down case Qt::Key_1: case Qt::Key_End: { process_move_key(1, shift_key, alt_key, ctrl_key, meta_key); break; } // Move diagonally right and down case Qt::Key_3: case Qt::Key_PageDown: { process_move_key(3, shift_key, alt_key, ctrl_key, meta_key); break; } case Qt::Key_5: case Qt::Key_Clear: { do_cmd_hold(); break; } case Qt::Key_A: { if (alt_key) do_cmd_wizard_mode(); else if (shift_key) do_cmd_activate(); else if (!using_mods) do_cmd_aim_wand(); break; } case Qt::Key_B: { if (shift_key) do_cmd_bash(DIR_UNKNOWN); else if (!using_mods) do_cmd_browse(-1); break; } case Qt::Key_C: { if (shift_key && alt_key) save_character_file(); else if (shift_key) do_cmd_character_screen(); else if (!using_mods) do_cmd_close(DIR_UNKNOWN); break; } case Qt::Key_D: { if (shift_key) do_cmd_disarm(DIR_UNKNOWN); else if (!using_mods) do_cmd_drop(); break; } case Qt::Key_E: { if (shift_key) do_cmd_eat_food(); else if (!using_mods) do_cmd_all_objects(TAB_EQUIP); break; } case Qt::Key_F: { if (ctrl_key) do_cmd_feeling(); else if (shift_key) do_cmd_refuel(); else if (!using_mods) do_cmd_fire(); break; } case Qt::Key_G: { if (shift_key) do_cmd_study(-1); else if (!using_mods) do_cmd_pickup_from_pile(FALSE, TRUE); break; } case Qt::Key_H: { if (!using_mods) do_cmd_fire_at_nearest(); break; } case Qt::Key_I: { if (shift_key) do_cmd_examine(); else if (!using_mods) do_cmd_all_objects(TAB_INVEN); break; } case Qt::Key_J: { if (!using_mods) do_cmd_spike(DIR_UNKNOWN); break; } case Qt::Key_K: { if (!using_mods) do_cmd_destroy(); break; } case Qt::Key_L: { if (shift_key) ui_center(p_ptr->py, p_ptr->px); else if (!using_mods) do_cmd_look(); break; } case Qt::Key_M: { if (shift_key) break; // TODO - MAP else if (!using_mods) do_cmd_cast(-1); break; } case Qt::Key_N: case Qt::Key_0: case Qt::Key_Insert: { if (!using_mods) do_cmd_repeat(); break; } case Qt::Key_O: { if (shift_key) do_cmd_make_trap(DIR_UNKNOWN); else if (!using_mods) do_cmd_open(DIR_UNKNOWN); break; } case Qt::Key_P: { if (ctrl_key) display_message_log(); else if (!using_mods) do_cmd_cast(-1); break; } case Qt::Key_Q: { if (alt_key) do_cmd_quest_desc(); else if (shift_key) do_cmd_suicide(); else if (!using_mods) do_cmd_quaff_potion(); break; } case Qt::Key_R: { if (ctrl_key) ui_redraw_all(); else if (shift_key) do_cmd_rest(); else if (!using_mods) do_cmd_read_scroll(); break; } case Qt::Key_S: { if (shift_key) do_cmd_toggle_search(); else if (!using_mods) do_cmd_search(); break; } case Qt::Key_T: { if (shift_key) do_cmd_tunnel(DIR_UNKNOWN); else if (!using_mods) do_cmd_takeoff(); break; } case Qt::Key_U: { if (!using_mods) do_cmd_use_staff(); break; } case Qt::Key_V: { if (!using_mods) do_cmd_throw(); break; } case Qt::Key_W: { if (!using_mods) do_cmd_wield(); break; } case Qt::Key_X: { if (!using_mods) do_cmd_swap_weapon(); break; } case Qt::Key_Y: { break; } case Qt::Key_Z: { if (!using_mods) do_cmd_zap_rod(); break; } case Qt::Key_Apostrophe: case Qt::Key_Asterisk: { target_set_closest(TARGET_KILL); break; } case Qt::Key_BraceLeft: { do_cmd_inscribe(); break; } case Qt::Key_BraceRight: { do_cmd_uninscribe(); break; } case Qt::Key_Greater: { do_cmd_go_down(); break; } case Qt::Key_Less: { do_cmd_go_up(); break; } case Qt::Key_Period: { do_cmd_run(DIR_UNKNOWN); break; } case Qt::Key_Plus: { do_cmd_alter(DIR_UNKNOWN); break; } case Qt::Key_Minus: { do_cmd_walk(DIR_UNKNOWN, TRUE); break; } case Qt::Key_Underscore: case Qt::Key_Comma: { do_cmd_hold(); break; } case Qt::Key_Semicolon: { do_cmd_walk(DIR_UNKNOWN, FALSE); break; } case Qt::Key_Colon: { do_cmd_write_note(); break; } case Qt::Key_ParenRight: { save_screenshot(FALSE); break; } case Qt::Key_ParenLeft: { save_screenshot(TRUE); break; } case Qt::Key_AsciiTilde: { do_cmd_knowledge_screens(); break; } default: { break; } } }
// Show a menu. Returns the action taken. int show_menu(int menu_id) { // Initialize int action = 0; int menu_item = MENU_START; back_anim = 0.0f; bx_roll = RANDF(0,1); by_roll = RANDF(0,1); bx_roll_dir = RANDF(-0.001f,0.001f); by_roll_dir = RANDF(-0.001f,0.001f); mid_fade_amount = 0.0f; mid_fade_dir = 1; mid_state = 1; mid_state_wait = WAIT_BEFORE_FADE_IN * FADE_WAIT_FACTOR; memset(key, 0, sizeof(key)); setting_key = false; key_to_set = NULL; whose_keys = 0; prev_key = 0; // Load the hiscores hiscore_1.load(get_hiscore_location(1)); hiscore_2.load(get_hiscore_location(2)); // Fade in fading = 1; fade_amount = 1.0f; SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL); // Menu loop bool menu_loop = true; timer_count = 0; while(menu_loop) { // Handle events SDL_Event event; while(SDL_PollEvent(&event)) { switch(event.type) { case SDL_QUIT: // Quit menu_loop = false; action = MENU_EXIT; break; case SDL_KEYDOWN: // Update the 'key' array if(setting_key == false) key[event.key.keysym.sym] = 1; // Set the key if it's not ESC, F12, F1 else if(setting_key == true && event.key.keysym.sym != SDLK_ESCAPE && event.key.keysym.sym != SDLK_F12 && event.key.keysym.sym != SDLK_F1) { (*key_to_set) = event.key.keysym.sym; setting_key = false; } // ESC pressed -> cancel the key setting else if(setting_key == true && event.key.keysym.sym == SDLK_ESCAPE) { (*key_to_set) = prev_key; setting_key = false; } break; case SDL_KEYUP: // Update the 'key' array key[event.key.keysym.sym] = 0; break; } } while(timer_count > 0) { // Fade if(fading) { if(fading == 1) { // Fade in fade_amount -= 0.015f; if(fade_amount <= 0.0f) { fading = 0; fade_amount = 0.0f; } } else if(fading == 2) { // Fade out fade_amount += 0.015f; if(fade_amount >= 1.0f) { fading = 0; fade_amount = 1.0f; menu_loop = false; } } } // Take a screenshot? if(key[SDLK_F12]) save_screenshot(); // Handle the cursor movement if(key[SDLK_UP] || (key[SDLK_LEFT] && menu_item != MENU_MUSICVOL && menu_item != MENU_SOUNDVOL)) { play_sound(SND_MENU1, false); menu_item--; if(menu_id == MENU_ID_MAIN) { if(menu_item < MENU_START) menu_item = MENU_EXIT; } else if(menu_id == MENU_ID_START) { if(menu_item < MENU_SINGLEPLAY) menu_item = MENU_MULTIPLAY; } else if(menu_id == MENU_ID_OPTIONS) { if(menu_item < MENU_WHOSEKEYS) menu_item = MENU_CANCEL; } } if(key[SDLK_DOWN] || (key[SDLK_RIGHT] && menu_item != MENU_MUSICVOL && menu_item != MENU_SOUNDVOL)) { play_sound(SND_MENU1, false); menu_item++; if(menu_id == MENU_ID_MAIN) { if(menu_item > MENU_EXIT) menu_item = MENU_START; } else if(menu_id == MENU_ID_START) { if(menu_item > MENU_MULTIPLAY) menu_item = MENU_SINGLEPLAY; } else if(menu_id == MENU_ID_OPTIONS) { if(menu_item > MENU_CANCEL) menu_item = MENU_WHOSEKEYS; } } // Handle the ESC pressings if(key[SDLK_ESCAPE]) { play_sound(SND_MENU2, false); // In the main menu -> exit, otherwise return to the main menu if(menu_id == MENU_ID_MAIN) { action = MENU_EXIT; fading = 2; // Fade out } if(menu_id == MENU_ID_START) { menu_id = MENU_ID_MAIN; menu_item = MENU_START; } if(menu_id == MENU_ID_OPTIONS) { menu_id = MENU_ID_MAIN; menu_item = MENU_OPTIONS; mid_fade_amount = 0.0f; mid_fade_dir = 1; mid_state = 1; mid_state_wait = WAIT_BEFORE_FADE_IN * FADE_WAIT_FACTOR; // Restore the settings load_config(get_config_location(), &config); Mix_Volume(-1,config.sound_vol); Mix_VolumeMusic(config.music_vol); } } // Handle the item selection if(key[SDLK_RETURN] || key[SDLK_KP_ENTER] || key[SDLK_SPACE]) { play_sound(SND_MENU2, false); switch(menu_item) { // MAIN MENU items case MENU_START: // Start menu menu_id = MENU_ID_START; menu_item = MENU_SINGLEPLAY; break; case MENU_OPTIONS: // Options menu menu_id = MENU_ID_OPTIONS; menu_item = MENU_WHOSEKEYS; break; case MENU_EXIT: // Exit the game action = MENU_EXIT; fading = 2; // Fade out break; // START MENU items case MENU_SINGLEPLAY: // Start a single player game action = MENU_SINGLEPLAY; fading = 2; // Fade out; break; case MENU_MULTIPLAY: // Start a two player game action = MENU_MULTIPLAY; fading = 2; // Fade out break; // OPTIONS MENU items case MENU_WHOSEKEYS: // Toggle the player whose keys we're setting if(whose_keys == 0) whose_keys = 1; else if(whose_keys == 1) whose_keys = 0; break; case MENU_MOVSTYLE: // Toggle the moving style if(config.moving_style[whose_keys] == 1) config.moving_style[whose_keys] = 2; else if(config.moving_style[whose_keys] == 2) config.moving_style[whose_keys] = 1; break; case MENU_KEYUP: // Set the key up key_to_set = &(config.key_up[whose_keys]); setting_key = true; prev_key = config.key_up[whose_keys]; config.key_up[whose_keys] = -1; break; case MENU_KEYDOWN: // Set the key down key_to_set = &(config.key_down[whose_keys]); setting_key = true; prev_key = config.key_down[whose_keys]; config.key_down[whose_keys] = -1; break; case MENU_KEYLEFT: // Set the key left key_to_set = &(config.key_left[whose_keys]); setting_key = true; prev_key = config.key_left[whose_keys]; config.key_left[whose_keys] = -1; break; case MENU_KEYRIGHT: // Set the key right key_to_set = &(config.key_right[whose_keys]); setting_key = true; prev_key = config.key_right[whose_keys]; config.key_right[whose_keys] = -1; break; case MENU_KEYBOMB: // Set the key bomb key_to_set = &(config.key_shoot[whose_keys]); setting_key = true; prev_key = config.key_shoot[whose_keys]; config.key_shoot[whose_keys] = -1; break; case MENU_KEYSPECIAL: // Set the key special key_to_set = &(config.key_special[whose_keys]); setting_key = true; prev_key = config.key_special[whose_keys]; config.key_special[whose_keys] = -1; break; case MENU_PERSPECTIVE: // Toggle the perspective mode config.perspective_mode = !config.perspective_mode; break; case MENU_OK: // Save the changes menu_id = MENU_ID_MAIN; menu_item = MENU_OPTIONS; mid_fade_amount = 0.0f; mid_fade_dir = 1; mid_state = 1; mid_state_wait = WAIT_BEFORE_FADE_IN * FADE_WAIT_FACTOR; save_config(get_config_location(true), &config); break; case MENU_CANCEL: // Cancel the changes menu_id = MENU_ID_MAIN; menu_item = MENU_OPTIONS; mid_fade_amount = 0.0f; mid_fade_dir = 1; mid_state = 1; mid_state_wait = WAIT_BEFORE_FADE_IN * FADE_WAIT_FACTOR; // Restore the settings load_config(get_config_location(), &config); Mix_Volume(-1,config.sound_vol); Mix_VolumeMusic(config.music_vol); } } // Check the volume level sliders if(menu_item == MENU_MUSICVOL) { if(key[SDLK_LEFT]) { config.music_vol -= 10; if(config.music_vol < 0) config.music_vol = 0; // Update the volume levels Mix_VolumeMusic(config.music_vol); } if(key[SDLK_RIGHT]) { config.music_vol += 10; if(config.music_vol > 255) config.music_vol = 255; // Update the volume levels Mix_VolumeMusic(config.music_vol); } } if(menu_item == MENU_SOUNDVOL) { if(key[SDLK_LEFT]) { config.sound_vol -= 10; if(config.sound_vol < 0) config.sound_vol = 0; // Update the volume levels Mix_Volume(-1,config.sound_vol); play_sound(SND_MENU1, false); } if(key[SDLK_RIGHT]) { config.sound_vol += 10; if(config.sound_vol > 255) config.sound_vol = 255; // Update the volume levels Mix_Volume(-1,config.sound_vol); play_sound(SND_MENU1, false); } } // Clear the key array memset(key, 0, sizeof(key)); // Animate the background back_anim = add_angle(back_anim, 2.0f); bx_roll += bx_roll_dir; if(bx_roll > 1.0f) bx_roll -= 1.0f; else if(bx_roll < 0.0f) bx_roll += 1.0f; by_roll += by_roll_dir; if(by_roll > 1.0f) by_roll -= 1.0f; else if(by_roll < 0.0f) by_roll += 1.0f; // Handle the hiscores/credits if(menu_id == MENU_ID_MAIN || menu_id == MENU_ID_START) { if(mid_state_wait > 0) mid_state_wait--; else if(mid_state_wait == 0) { // Fade either in or out if(mid_fade_dir == 1) { if(mid_fade_amount < 1.0f) mid_fade_amount += FADE_STEP; if(mid_fade_amount >= 1.0f) { // Wait a bit before fading out mid_fade_dir = 2; mid_state_wait = WAIT_BEFORE_FADE_OUT * FADE_WAIT_FACTOR; } } else if(mid_fade_dir == 2) { if(mid_fade_amount > 0.0f) mid_fade_amount -= FADE_STEP; if(mid_fade_amount <= 0.0f) { // Wait a bit before changing the state and fading in mid_fade_dir = 1; mid_state_wait = WAIT_BEFORE_FADE_IN * FADE_WAIT_FACTOR; mid_state++; if(mid_state > 3) mid_state = 1; } } } } timer_count--; } // Draw the menu draw_menu(menu_id, menu_item, -1, fade_amount, NULL); // Flush and swap the buffers glFlush(); SDL_GL_SwapBuffers(); } SDL_EnableKeyRepeat(0,0); return action; }
void PlayerDeathDialog::death_screenshot(void) { bool png_screenshot = get_check("Create a PNG screenshot (YES) or HTML screenshot (NO)"); save_screenshot(png_screenshot); }