⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gui.c

📁 著名ARC模拟器源码,包括多个平台
💻 C
📖 第 1 页 / 共 5 页
字号:
	  	  sprintf(gamename, "%s %s (%dMb)", raine_translate_text("Game:"), name,size/1024);	}	if (current_game_has_hiscores())	  sprintf(hiscores,"[Hiscores]");	else	  *hiscores=0;	if (CheatCount)	  sprintf(cheats,"[Cheats]");	else	  *cheats = 0;#if 0	if (bestbpp > 0 && bestbpp <=32) {	  WantScreen = 1;	  display_cfg.bpp = bestbpp;	  bestbpp = 0;	}#endif			if (bestw && besth) {	  //display_cfg.screen_type = bestmode;	  display_cfg.screen_x = bestw;	  display_cfg.screen_y = besth;	  display_cfg.scanlines = display_cfg.eagle_fx = 0;	  WantScreen = 1;	  bestw = besth = 0;	}	  	if (raine_cfg.save_game_screen_settings)	  WantScreen=1;      break;      case LOAD_FATAL_ERROR:			// FATAL ERROR - REMOVE GAME      case LOAD_FATAL_ERROR|LOAD_WARNING:         FadeGUI();         load_problem[2].dp = load_debug;         raine_do_dialog(load_problem,-1);         current_game->clear_game();         ClearDefault();         current_game = NULL;         sprintf(gamename,"%s %s", raine_translate_text("Game:"), raine_translate_text("<No Game Loaded>"));      break;      }      free(load_debug);}void load_progress(void){   if(current_game_rom_load_count < current_game_rom_count)      current_game_rom_load_count ++;   loading_dialog[2].d1 = current_game_rom_load_count;   loading_dialog[2].d2 = current_game_rom_count;     scare_mouse();   SEND_MESSAGE(&loading_dialog[2], MSG_DRAW,  0);     unscare_mouse();}// game_select_proc():// Display then process Game Select dialogint game_select_opts_proc(int msg, DIALOG *d, int c){  int ret=x_raine_button_proc(msg, d, c);  if(ret==D_CLOSE){    Unselect_Button(d);    FadeGUI();    // sound    game_select_opts[2].flags=      game_select_opts[3].flags=      game_select_opts[4].flags=          // status      game_select_opts[6].flags = game_select_opts[7].flags =      game_select_opts[8].flags =      // year      game_select_opts[10].flags = game_select_opts[11].flags =      game_select_opts[12].flags =0;    if (ssound==0) game_select_opts[2].flags = D_SELECTED;    else      game_select_opts[2+ssound].flags=D_SELECTED;    game_select_opts[6+sstatus].flags = D_SELECTED;    game_select_opts[10+syear].flags = D_SELECTED;    raine_centre_dialog(game_select_opts);    raine_do_dialog(game_select_opts,-1);     SEND_MESSAGE(&game_select[GAME_LIST], MSG_END, 0);     SEND_MESSAGE(&game_select[GAME_LIST], MSG_START, 0);     SEND_MESSAGE(&game_select[GAME_LIST], MSG_DRAW, 0);     SEND_MESSAGE(&game_select[9], MSG_DRAW, 0);     // Update infos     listbox_getter(-4,&game_select[GAME_LIST].d1);          return D_REDRAW;  }  return ret;    }int game_select_proc(int msg, DIALOG *d, int c){  int ta;  int ret=x_raine_button_proc(msg, d, c);    if(ret==D_CLOSE){        Unselect_Button(d);    FadeGUI();        /*          set radio buttons        */    // I want these outside the main dlg, but they can be initialized here...#ifdef RAINE_WIN32      if (display_cfg.screen_type == GFX_DIRECTX_WIN ||	  display_cfg.screen_type == GFX_GDI)	      wants_switch_res = 1;#endif              if(rgui_cfg.game_list_mode>2) rgui_cfg.game_list_mode = 2;    if(ssound>2) ssound = 2;    if (sstatus>2) sstatus = 2;    if (wants_switch_res>1) wants_switch_res = 1;    if (syear >2) syear = 2;          game_select[5+0].flags=      game_select[5+1].flags=      game_select[5+2].flags=    // switch res    game_select[GAME_SWITCH_RES+1].flags =      game_select[GAME_SWITCH_RES+2].flags = 0;          game_select[GAME_SWITCH_RES+2-wants_switch_res].flags = D_SELECTED;          game_select[5+rgui_cfg.game_list_mode].flags = D_SELECTED;    build_game_avail_list();    // Do the Dialog    // -------------    listbox_active = 0;    listbox_getter(-4,&game_select[GAME_LIST].d1);    listbox_active = 1;        ret=raine_do_dialog(game_select,-1);    listbox_active = 0;        destroy_snapshot(0);    set_palette(gui_pal);            // Load game (if user didn't click cancel)    // ---------------------------------------    if((ret!=3)&&(ret!=-1)){      switch(rgui_cfg.game_list_mode){      case 0x00:	ta = game_select[GAME_LIST].d1;	if((ta >= 0)&&(ta < my_game_count)){	  raine_cfg.req_game_index = ta;	  do_load_game();	}	break;      case 0x01:	ta = game_select[GAME_LIST].d1;	if((ta >= 0)&&((UINT32)ta < GameAvailCount)){	  raine_cfg.req_game_index = GameAvail[ta];	  do_load_game();	}	break;      case 0x02:	ta = game_select[GAME_LIST].d1;	if((ta >= 0)&&((UINT32)ta < GameMissingCount)){	  raine_cfg.req_game_index = GameMissing[ta];	  do_load_game();	}	break;      }    }    free_game_avail_list();    if(WantScreen)      return D_EXIT;    else      return D_REDRAW;  }  return ret;}int romdir_edit_proc(int msg, DIALOG *d, int c){   int i;   int ret=x_raine_button_proc(msg, d, c);   if(ret==D_CLOSE){      Unselect_Button(d);      FadeGUI();      sprintf(romedit[0],"%s",dir_cfg.rom_dir[0]);      sprintf(romedit[1],"%s",dir_cfg.rom_dir[1]);      sprintf(romedit[2],"%s",dir_cfg.rom_dir[2]);      sprintf(romedit[3],"%s",dir_cfg.rom_dir[3]);      ret=raine_do_dialog(romdir_edit_dialog,-1);      if(ret==1){      sprintf(dir_cfg.rom_dir[0],"%s",romedit[0]);      sprintf(dir_cfg.rom_dir[1],"%s",romedit[1]);      sprintf(dir_cfg.rom_dir[2],"%s",romedit[2]);      sprintf(dir_cfg.rom_dir[3],"%s",romedit[3]);      for(i = 0; i < 4; i ++){         if(dir_cfg.rom_dir[i][0]){            put_backslash(dir_cfg.rom_dir[i]);            strlwr(dir_cfg.rom_dir[i]);         }      }      build_game_avail_list();      scare_mouse();      SEND_MESSAGE(&game_select[GAME_LIST],  MSG_START, 0);      SEND_MESSAGE(&game_select[GAME_LIST],  MSG_DRAW,  0);      SEND_MESSAGE(&game_select[9], MSG_DRAW,  0);      unscare_mouse();      dialog_oxygen();      }      return D_REDRAW;   }   return ret;}int dir_edit_proc(int msg, DIALOG *d, int c){   char dir_path[256];   char *ta;   int ret;   ret = x_raine_button_proc(msg, d, c);   if(ret==D_CLOSE){      Unselect_Button(d);      FadeGUI();      sprintf(dir_path,"%s",romedit[d->d1]);      if(raine_file_select("Select directory", dir_path, NULL)){	      // Cut any filename      ta = get_filename(dir_path);      if(ta) ta[0] = 0;      sprintf(romedit[d->d1],"%s",dir_path);      }            return D_REDRAW;   }   return ret;}/******************************************************************************/int auto_edit_proc(int msg, DIALOG *d, int c){   int ret = x_raine_button_proc(msg, d, c);   if(ret==D_CLOSE){      Unselect_Button(d);      if(InputCount){         InputList[auto_select[1].d1].auto_rate ++;         if(InputList[auto_select[1].d1].auto_rate>5) InputList[auto_select[1].d1].auto_rate = 0;      }      ret = D_REDRAW;   }   return ret;}static char *AutoName(char rate){   switch(rate){   case 0:  return "Off";   case 1:  return "1 (30 fps)";   case 2:  return "2 (15 fps)";   case 3:  return "3 (10 fps)";   case 4:  return "4 (07 fps)";   case 5:  return "5 (06 fps)";   default: return "Off";   }}char *autolist_getter(int index, int *list_size){   static char S[128];   if(InputCount){   switch(index){   case -1:			// Return List Size      *list_size=InputCount;      return NULL;   break;   case -2:			// Act upon List Object Selection      if(InputCount){         InputList[auto_select[1].d1].auto_rate ++;         if(InputList[auto_select[1].d1].auto_rate>5) InputList[auto_select[1].d1].auto_rate = 0;      }      *list_size=D_REDRAW;      return NULL;   break;   case -3:			// Act Keyboard Input      return NULL;   break;   default:      if((index >= 0)&&(index < InputCount)){         sprintf(S,"%-21s %s",InputList[index].InputName, AutoName(InputList[index].auto_rate));         return S;      }      else         return NULL;   break;   }   }   else{   if(index==-1){      *list_size=1;      return NULL;   }   else{      if(index==0){         return(raine_translate_text("<No Inputs Mapped>"));      }      else{         return NULL;      }   }   }}int auto_select_proc(int msg, DIALOG *d, int c){   int ret = x_raine_button_proc(msg,d,c);   if(ret==D_CLOSE){      Unselect_Button(d);      FadeGUI();      ret=0;      while((ret!=2)&&(ret!=-1)){         ret=raine_do_dialog(auto_select,-1);         if((ret!=2)&&(ret!=-1)){            if(InputCount){               InputList[auto_select[1].d1].auto_rate ++;               if(InputList[auto_select[1].d1].auto_rate>5) InputList[auto_select[1].d1].auto_rate = 0;            }         }      }      ret = D_REDRAW;   }   return ret;}/******************************************************************************/typedef struct GUI_JOY{   char *name;		// Mode name/string   UINT32 id;		// ID_ Value for this mode} GUI_JOY;static GUI_JOY joystick_data[] ={   { "Autodetect",              JOY_TYPE_AUTODETECT,      },   { "None",                    JOY_TYPE_NONE,            },#ifdef JOYSTICK_DRIVER_STANDARD   { "Joystick (2 buttons)",    JOY_TYPE_STANDARD,        }, // Standard   { "Joystick (4 buttons)",    JOY_TYPE_4BUTTON,         },   { "Joystick (6 buttons)",    JOY_TYPE_6BUTTON,         },   { "Joystick (8 buttons)",    JOY_TYPE_8BUTTON,         },   { "Joystick (2 pads)",       JOY_TYPE_2PADS,           },   { "Flightstick Pro",         JOY_TYPE_FSPRO,           },   { "Wingman Extreme",         JOY_TYPE_WINGEX,          },#endif#ifdef JOYSTICK_DRIVER_WINGWARRIOR   { "Wingman Warrior",         JOY_TYPE_WINGWARRIOR,     }, // Wingman Warrior#endif#ifdef JOYSTICK_DRIVER_GAMEPAD_PRO   { "Gamepad Pro",             JOY_TYPE_GAMEPAD_PRO,     }, // Game Pad Pro#endif#ifdef JOYSTICK_DRIVER_GRIP   { "Grip",                    JOY_TYPE_GRIP,            }, // Grip   { "Grip 4 way",              JOY_TYPE_GRIP4,           },#endif#ifdef JOYSTICK_DRIVER_SIDEWINDER   { "Sidewinder",              JOY_TYPE_SIDEWINDER,      }, // Sidewinder#endif#ifdef JOY_TYPE_SIDEWINDER_AG   { "Sidewinder Aggressive",   JOY_TYPE_SIDEWINDER_AG,   }, // Sidewinder Aggressive#endif#ifdef JOYSTICK_DRIVER_SNESPAD   { "SNES (port 1)",           JOY_TYPE_SNESPAD_LPT1,    }, // SNES   { "SNES (port 2)",           JOY_TYPE_SNESPAD_LPT2,    },   { "SNES (port 3)",           JOY_TYPE_SNESPAD_LPT3,    },#endif#ifdef JOYSTICK_DRIVER_PSXPAD   { "PSX (port 1)",            JOY_TYPE_PSXPAD_LPT1,     }, // PSX   { "PSX (port 2)",            JOY_TYPE_PSXPAD_LPT2,     },   { "PSX (port 3)",            JOY_TYPE_PSXPAD_LPT3,     },#endif#ifdef JOYSTICK_DRIVER_N64PAD   { "N64 (port 1)",            JOY_TYPE_N64PAD_LPT1,     }, // N64   { "N64 (port 2)",            JOY_TYPE_N64PAD_LPT2,     },   { "N64 (port 3)",            JOY_TYPE_N64PAD_LPT3,     },#endif#ifdef JOYSTICK_DRIVER_DB9   { "DB9 (port 1)",            JOY_TYPE_DB9_LPT1,        }, // DB9   { "DB9 (port 2)",            JOY_TYPE_DB9_LPT2,        },   { "DB9 (port 3)",            JOY_TYPE_DB9_LPT3,        },#endif#ifdef JOYSTICK_DRIVER_TURBOGRAFX   { "Turbografx (port 1)",     JOY_TYPE_TURBOGRAFX_LPT1, }, // TURBOGFX   { "Turbografx (port 2)",     JOY_TYPE_TURBOGRAFX_LPT2, },   { "Turbografx (port 3)",     JOY_TYPE_TURBOGRAFX_LPT3, },#endif#ifdef JOYSTICK_DRIVER_IFSEGA_ISA   { "SEGA (isa)",              JOY_TYPE_IFSEGA_ISA,      }, // SEGA ISA#endif#ifdef JOYSTICK_DRIVER_IFSEGA_PCI   { "SEGA (pci)",              JOY_TYPE_IFSEGA_PCI,      }, // SEGA PCI#endif#ifdef JOYSTICK_DRIVER_IFSEGA_PCI_FAST   { "SEGA (pci fast)",         JOY_TYPE_IFSEGA_PCI_FAST, }, // SEGA PCI FAST#endif#ifdef JOYSTICK_DRIVER_WIN32   { "Win32 Joystick Driver",   JOY_TYPE_WIN32,           }, // Win32/DirectX#endif};/* gfx_card_getter: *  Listbox data getter routine for the graphics card list. */char *joylist_getter(int index, int *list_size){   switch(index){   case -1:			// Return List Size      if(list_size){	 *list_size = (sizeof(joystick_data) / sizeof(GUI_JOY));      }      return NULL;   break;   case -2:      FadeGUI();      DoJoyEdit();      *list_size=D_REDRAW;      return NULL;   break;   case -3:			// Act Keyboard Input      return NULL;   break;   default:      if((index >= 0)&&(index < (sizeof(joystick_data) / sizeof(GUI_JOY))))         return joystick_data[index].name;      else         return NULL;   break;   }}// joy_name():// Get card name for card IDchar *joy_name(int index){   int ta,tb;   tb = (sizeof(joystick_data) / sizeof(GUI_JOY));   for(ta=0;ta<tb;ta++){      if(joystick_data[ta].id == (UINT32)index)         return joystick_data[ta].name;   }   return joystick_data[1].name;	// None}int joystick_number(int index){   int ta,tb;   tb = (sizeof(joystick_data) / sizeof(GUI_JOY));   for(ta=0;ta<tb;ta++){      if(joystick_data[ta].id == (UINT32)index)         return ta;   }   return 1;				// None}// joystick_id():

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -