static void PopulateForm(void) { int mode2d, mode3d, i; GtkListStore *modes2d, *modes3d; GtkTreeIter iter; GtkComboBox *box2d, *box3d; char buf[64]; mode2d = checkvideomode(&settings.xdim2d, &settings.ydim2d, 8, settings.fullscreen, 1); mode3d = checkvideomode(&settings.xdim3d, &settings.ydim3d, settings.bpp3d, settings.fullscreen, 1); if (mode2d < 0) mode2d = 0; if (mode3d < 0) { int i, cd[] = { 32, 24, 16, 15, 8, 0 }; for (i=0; cd[i]; ) { if (cd[i] >= settings.bpp3d) i++; else break; } for ( ; cd[i]; i++) { mode3d = checkvideomode(&settings.xdim3d, &settings.ydim3d, cd[i], settings.fullscreen, 1); if (mode3d < 0) continue; settings.bpp3d = cd[i]; break; } } gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(lookup_widget(startwin,"fullscreencheck")), settings.fullscreen); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(lookup_widget(startwin,"alwaysshowcheck")), settings.forcesetup); box2d = GTK_COMBO_BOX(lookup_widget(startwin,"vmode2dcombo")); box3d = GTK_COMBO_BOX(lookup_widget(startwin,"vmode3dcombo")); modes2d = GTK_LIST_STORE(gtk_combo_box_get_model(box2d)); modes3d = GTK_LIST_STORE(gtk_combo_box_get_model(box3d)); gtk_list_store_clear(modes2d); gtk_list_store_clear(modes3d); for (i=0; i<validmodecnt; i++) { if (validmode[i].fs != settings.fullscreen) continue; // all modes get added to the 3D mode list Bsprintf(buf, "%ld x %ld %dbpp", validmode[i].xdim, validmode[i].ydim, validmode[i].bpp); gtk_list_store_append(modes3d, &iter); gtk_list_store_set(modes3d, &iter, 0,buf, 1,i, -1); if (i == mode3d) { g_signal_handlers_block_by_func(box3d, on_vmode3dcombo_changed, NULL); gtk_combo_box_set_active_iter(box3d, &iter); g_signal_handlers_unblock_by_func(box3d, on_vmode3dcombo_changed, NULL); } // only 8-bit modes get used for 2D if (validmode[i].bpp != 8) continue; Bsprintf(buf, "%ld x %ld", validmode[i].xdim, validmode[i].ydim); gtk_list_store_append(modes2d, &iter); gtk_list_store_set(modes2d, &iter, 0,buf, 1,i, -1); if (i == mode2d) { g_signal_handlers_block_by_func(box2d, on_vmode2dcombo_changed, NULL); gtk_combo_box_set_active_iter(box2d, &iter); g_signal_handlers_unblock_by_func(box2d, on_vmode2dcombo_changed, NULL); } } }
void CONFIG_WriteSettings(void) // save binds and aliases to <cfgname>_settings.cfg { int32_t i; BFILE *fp; char *ptr = Xstrdup(setupfilename); char tempbuf[128]; if (!Bstrcmp(setupfilename, SETUPFILENAME)) Bsprintf(tempbuf, "settings.cfg"); else Bsprintf(tempbuf, "%s_settings.cfg", strtok(ptr, ".")); fp = Bfopen(tempbuf, "wt"); if (fp) { Bfprintf(fp,"// this file is automatically generated by EDuke32\n"); Bfprintf(fp,"// these settings take precedence over your main cfg file\n"); Bfprintf(fp,"// do not modify if you lack common sense\n"); Bfprintf(fp,"unbindall\n"); for (i=0; i<MAXBOUNDKEYS; i++) if (CONTROL_KeyIsBound(i)) Bfprintf(fp,"bind \"%s\"%s \"%s\"\n",CONTROL_KeyBinds[i].key, CONTROL_KeyBinds[i].repeat?"":" norepeat",CONTROL_KeyBinds[i].cmdstr); for (i=0; i<MAXMOUSEBUTTONS; i++) if (CONTROL_MouseIsBound(i)) Bfprintf(fp,"bind \"%s\"%s \"%s\"\n",CONTROL_MouseBinds[i].key, CONTROL_MouseBinds[i].repeat?"":" norepeat",CONTROL_MouseBinds[i].cmdstr); OSD_WriteAliases(fp); if (g_crosshairSum && g_crosshairSum != DefaultCrosshairColors.r+(DefaultCrosshairColors.g<<1)+(DefaultCrosshairColors.b<<2)) Bfprintf(fp, "crosshaircolor %d %d %d\n", CrosshairColors.r, CrosshairColors.g, CrosshairColors.b); OSD_WriteCvars(fp); Bfclose(fp); if (!Bstrcmp(setupfilename, SETUPFILENAME)) OSD_Printf("Wrote settings.cfg\n"); else OSD_Printf("Wrote %s_settings.cfg\n",ptr); Bfree(ptr); return; } if (!Bstrcmp(setupfilename, SETUPFILENAME)) OSD_Printf("Error writing settings.cfg: %s\n", strerror(errno)); else OSD_Printf("Error writing %s_settings.cfg: %s\n",ptr,strerror(errno)); Bfree(ptr); }
static void PopulateForm(void) { int32_t i,j; char buf[64]; int32_t mode2d, mode3d; HWND hwnd2d, hwnd3d; hwnd2d = GetDlgItem(pages[TAB_CONFIG], IDC2DVMODE); hwnd3d = GetDlgItem(pages[TAB_CONFIG], IDC3DVMODE); mode2d = checkvideomode(&settings.xdim2d, &settings.ydim2d, 8, settings.fullscreen, 1); mode3d = checkvideomode(&settings.xdim3d, &settings.ydim3d, settings.bpp3d, settings.fullscreen, 1); if (mode2d < 0) mode2d = 0; if (mode3d < 0) { int32_t cd[] = { 32, 24, 16, 15, 8, 0 }; for (i=0; cd[i];) { if (cd[i] >= settings.bpp3d) i++; else break; } for (; cd[i]; i++) { mode3d = checkvideomode(&settings.xdim3d, &settings.ydim3d, cd[i], settings.fullscreen, 1); if (mode3d < 0) continue; settings.bpp3d = cd[i]; break; } } Button_SetCheck(GetDlgItem(pages[TAB_CONFIG], IDCFULLSCREEN), (settings.fullscreen ? BST_CHECKED : BST_UNCHECKED)); Button_SetCheck(GetDlgItem(pages[TAB_CONFIG], IDCALWAYSSHOW), (settings.forcesetup ? BST_CHECKED : BST_UNCHECKED)); (void)ComboBox_ResetContent(hwnd2d); (void)ComboBox_ResetContent(hwnd3d); for (i=0; i<validmodecnt; i++) { if (validmode[i].fs != settings.fullscreen) continue; // all modes get added to the 3D mode list Bsprintf(buf, "%d x %d %dbpp", validmode[i].xdim, validmode[i].ydim, validmode[i].bpp); j = ComboBox_AddString(hwnd3d, buf); (void)ComboBox_SetItemData(hwnd3d, j, i); if (i == mode3d)(void)ComboBox_SetCurSel(hwnd3d, j); // only 8-bit modes get used for 2D if (validmode[i].bpp != 8 || validmode[i].xdim < 640 || validmode[i].ydim < 480) continue; Bsprintf(buf, "%d x %d", validmode[i].xdim, validmode[i].ydim); j = ComboBox_AddString(hwnd2d, buf); (void)ComboBox_SetItemData(hwnd2d, j, i); if (i == mode2d)(void)ComboBox_SetCurSel(hwnd2d, j); } }
int32_t startwin_run(void) { if (!gtkenabled) return 1; if (!stwidgets.startwin) return 1; SetPage(TAB_CONFIG); settings.xdim3d = ud.config.ScreenWidth; settings.ydim3d = ud.config.ScreenHeight; settings.bpp3d = ud.config.ScreenBPP; settings.fullscreen = ud.config.ScreenMode; settings.usemouse = ud.config.UseMouse; settings.usejoy = ud.config.UseJoystick; settings.custommoddir = g_modDir; settings.forcesetup = ud.config.ForceSetup; settings.game = g_gameType; Bstrncpy(settings.selectedgrp, g_grpNamePtr, BMAX_PATH); if (ud.config.NoAutoLoad) settings.autoload = FALSE; else settings.autoload = TRUE; #ifdef POLYMER if (glrendmode == RDR_POLYMER) { if (settings.bpp3d == 8) settings.bpp3d = 32; settings.polymer = TRUE; } #endif PopulateForm(ALL); gtk_main(); SetPage(TAB_MESSAGES); if (retval) // launch the game with these parameters { int32_t i; ud.config.ScreenWidth = settings.xdim3d; ud.config.ScreenHeight = settings.ydim3d; ud.config.ScreenBPP = settings.bpp3d; ud.config.ScreenMode = settings.fullscreen; ud.config.UseMouse = settings.usemouse; ud.config.UseJoystick = settings.usejoy; ud.config.ForceSetup = settings.forcesetup; g_grpNamePtr = settings.selectedgrp; g_gameType = settings.game; if (settings.custommoddir != NULL) Bstrcpy(g_modDir, settings.custommoddir); else Bsprintf(g_modDir, "/"); if (settings.autoload) ud.config.NoAutoLoad = FALSE; else ud.config.NoAutoLoad = TRUE; for (i = 0; i<numgrpfiles; i++) if (settings.crcval == grpfiles[i].crcval) break; if (i != numgrpfiles) g_gameNamePtr = (char *)grpfiles[i].name; } return retval; }
void SCRIPT_PutNumber ( int32_t scripthandle, char * sectionname, char * entryname, int32_t number, int32_t hexadecimal, int32_t defaultvalue ) { char raw[64]; UNREFERENCED_PARAMETER(defaultvalue); if (hexadecimal) Bsprintf(raw, "0x%X", number); else Bsprintf(raw, "%d", number); SCRIPT_AddEntry(scripthandle, sectionname, entryname, raw); }
void S_SoundShutdown(void) { if (MusicVoice >= 0) S_MusicShutdown(); if (FX_Shutdown() != FX_Ok) { Bsprintf(tempbuf, "S_SoundShutdown(): error: %s", FX_ErrorString(FX_Error)); G_GameExit(tempbuf); } }
void CONFIG_SetupMouse( void ) { int32 i; char str[80],*p; char temp[80]; int32 function, scale; if (scripthandle < 0) return; for (i=0;i<MAXMOUSEBUTTONS;i++) { Bsprintf(str,"MouseButton%d",i); temp[0] = 0; if (!SCRIPT_GetString( scripthandle,"Controls", str,temp)) MouseButtons[i] = CONFIG_FunctionNameToNum(temp); Bsprintf(str,"MouseButtonClicked%d",i); temp[0] = 0; if (!SCRIPT_GetString( scripthandle,"Controls", str,temp)) MouseButtonsClicked[i] = CONFIG_FunctionNameToNum(temp); } // map over the axes for (i=0;i<MAXMOUSEAXES;i++) { Bsprintf(str,"MouseAnalogAxes%d",i); temp[0] = 0; if (!SCRIPT_GetString(scripthandle, "Controls", str,temp)) MouseAnalogAxes[i] = CONFIG_AnalogNameToNum(temp); Bsprintf(str,"MouseDigitalAxes%d_0",i); temp[0] = 0; if (!SCRIPT_GetString(scripthandle, "Controls", str,temp)) MouseDigitalAxes[i][0] = CONFIG_FunctionNameToNum(temp); Bsprintf(str,"MouseDigitalAxes%d_1",i); temp[0] = 0; if (!SCRIPT_GetString(scripthandle, "Controls", str,temp)) MouseDigitalAxes[i][1] = CONFIG_FunctionNameToNum(temp); Bsprintf(str,"MouseAnalogScale%d",i); scale = MouseAnalogScale[i]; SCRIPT_GetNumber(scripthandle, "Controls", str,&scale); MouseAnalogScale[i] = scale; } // 0 to 65536 SCRIPT_GetNumber( scripthandle, "Controls","MouseSensitivity",&function); gs.MouseSpeed = function; for (i=0; i<MAXMOUSEBUTTONS; i++) { CONTROL_MapButton( MouseButtons[i], i, FALSE, controldevice_mouse ); CONTROL_MapButton( MouseButtonsClicked[i], i, TRUE, controldevice_mouse ); } for (i=0; i<MAXMOUSEAXES; i++) { CONTROL_MapAnalogAxis( i, MouseAnalogAxes[i], controldevice_mouse); CONTROL_MapDigitalAxis( i, MouseDigitalAxes[i][0], 0,controldevice_mouse ); CONTROL_MapDigitalAxis( i, MouseDigitalAxes[i][1], 1,controldevice_mouse ); CONTROL_SetAnalogAxisScale( i, MouseAnalogScale[i], controldevice_mouse ); } CONTROL_SetMouseSensitivity(gs.MouseSpeed); }
struct Bdirent *Breaddir(BDIR *dir) { BDIR_real *dirr = (BDIR_real *)dir; #ifdef _MSC_VER if (dirr->status > 0) { if (_findnext(dirr->dir, &dirr->fid) != 0) { dirr->status = -1; return NULL; } } dirr->info.namlen = Bstrlen(dirr->fid.name); dirr->info.name = dirr->fid.name; dirr->status++; #else struct dirent *de = readdir(dirr->dir); if (de == NULL) { dirr->status = -1; return NULL; } else { dirr->status++; } dirr->info.namlen = Bstrlen(de->d_name); dirr->info.name = de->d_name; #endif dirr->info.mode = 0; dirr->info.size = 0; dirr->info.mtime = 0; char *fn = (char *)Bmalloc(Bstrlen(dirr->name) + 1 + dirr->info.namlen + 1); if (fn) { Bsprintf(fn, "%s/%s", dirr->name, dirr->info.name); struct Bstat st; if (!Bstat(fn, &st)) { dirr->info.mode = st.st_mode; dirr->info.size = st.st_size; dirr->info.mtime = st.st_mtime; } Bfree(fn); } return &dirr->info; }
void SCRIPT_PutDouble ( int32_t scripthandle, char * sectionname, char * entryname, double number, int32_t defaultvalue ) { char raw[64]; UNREFERENCED_PARAMETER(defaultvalue); Bsprintf(raw, "%g", number); SCRIPT_AddEntry(scripthandle, sectionname, entryname, raw); }
static void populateVideoModes(BOOL firstTime) { int i, j, mode3d, fullscreen; int xdim, ydim, bpp = 8; char buf[64]; HWND hwnd; fullscreen = IsDlgButtonChecked(pages[TAB_CONFIG], IDC_FULLSCREEN) == BST_CHECKED; hwnd = GetDlgItem(pages[TAB_CONFIG], IDC_3DVMODE); if (firstTime) { xdim = settings.xdim3d; ydim = settings.ydim3d; bpp = settings.bpp3d; } else { i = ComboBox_GetCurSel(hwnd); if (i != CB_ERR) i = ComboBox_GetItemData(hwnd, i); if (i != CB_ERR) { xdim = validmode[i].xdim; ydim = validmode[i].ydim; bpp = validmode[i].bpp; } } mode3d = checkvideomode(&xdim, &ydim, bpp, fullscreen, 1); if (mode3d < 0) { int i, cd[] = { 32, 24, 16, 15, 8, 0 }; for (i=0; cd[i]; ) { if (cd[i] >= bpp) i++; else break; } for ( ; cd[i]; i++) { mode3d = checkvideomode(&xdim, &ydim, cd[i], fullscreen, 1); if (mode3d < 0) continue; break; } } ComboBox_ResetContent(hwnd); for (i=0; i<validmodecnt; i++) { if (validmode[i].fs != fullscreen) continue; Bsprintf(buf, "%d x %d %d-bpp", validmode[i].xdim, validmode[i].ydim, validmode[i].bpp); j = ComboBox_AddString(hwnd, buf); ComboBox_SetItemData(hwnd, j, i); if (i == mode3d) { ComboBox_SetCurSel(hwnd, j); } } }
// wrapper for CONTROL_MapKey(), generates key bindings to reflect changes to keyboard setup void CONFIG_MapKey(int32_t which, kb_scancode key1, kb_scancode oldkey1, kb_scancode key2, kb_scancode oldkey2) { int32_t i, j, k; int32_t ii[] = { key1, key2, oldkey1, oldkey2 }; char buf[2*MAXGAMEFUNCLEN]; UNREFERENCED_PARAMETER(which); // CONTROL_MapKey(which, key1, key2); if (which == gamefunc_Show_Console) OSD_CaptureKey(key1); for (k = 0; (unsigned)k < ARRAY_SIZE(ii); k++) { if (ii[k] == 0xff || !ii[k]) continue; for (j=0; ConsoleKeys[j].name; j++) if (ii[k] == ConsoleKeys[j].id) break; tempbuf[0] = 0; for (i=NUMGAMEFUNCTIONS-1; i>=0; i--) { if (ud.config.KeyboardKeys[i][0] == ii[k] || ud.config.KeyboardKeys[i][1] == ii[k]) { Bsprintf(buf,"gamefunc_%s; ",CONFIG_FunctionNumToName(i)); Bstrcat(tempbuf,buf); } } i = Bstrlen(tempbuf); if (i >= 2) { tempbuf[i-2] = 0; // cut off the trailing "; " CONTROL_BindKey(ii[k], tempbuf, 1, ConsoleKeys[j].name ? ConsoleKeys[j].name : "<?>"); } else { CONTROL_FreeKeyBind(ii[k]); } } }
int32_t addsearchpath_ProgramFiles(const char *p) { int32_t returncode = -1, i; const char *ProgramFiles[2] = { Bgetenv("ProgramFiles"), Bgetenv("ProgramFiles(x86)") }; for (i = 0; i < 2; ++i) { if (ProgramFiles[i]) { char *buffer = (char*)Bmalloc((strlen(ProgramFiles[i])+1+strlen(p)+1)*sizeof(char)); Bsprintf(buffer,"%s/%s",ProgramFiles[i],p); if (addsearchpath(buffer) == 0) // if any work, return success returncode = 0; Bfree(buffer); } } return returncode; }
static const char * texcache_calcid(char *cachefn, const char *fn, const int32_t len, const int32_t dameth, const char effect) { // Assert that BMAX_PATH is a multiple of 4 so that struct texcacheid_t // gets no padding inserted by the compiler. EDUKE32_STATIC_ASSERT((BMAX_PATH & 3) == 0); struct texcacheid_t { int32_t len, method; char effect, name[BMAX_PATH+3]; // +3: pad to a multiple of 4 } id = { len, dameth, effect, "" }; Bstrcpy(id.name, fn); while (Bstrlen(id.name) < BMAX_PATH - Bstrlen(fn)) Bstrcat(id.name, fn); Bsprintf(cachefn, "%08x%08x%08x", XXH32((uint8_t *)fn, Bstrlen(fn), TEXCACHEMAGIC[3]), XXH32((uint8_t *)id.name, Bstrlen(id.name), TEXCACHEMAGIC[3]), XXH32((uint8_t *)&id, sizeof(struct texcacheid_t), TEXCACHEMAGIC[3])); return cachefn; }
static void PopulateForm(int pgs) { if (pgs & (1<<TAB_CONFIG)) { int mode3d, i; GtkListStore *modes3d; GtkTreeIter iter; GtkComboBox *box3d; char buf[64]; mode3d = checkvideomode(&settings.xdim3d, &settings.ydim3d, settings.bpp3d, settings.fullscreen, 1); if (mode3d < 0) { int i, cd[] = { 32, 24, 16, 15, 8, 0 }; for (i=0; cd[i]; ) { if (cd[i] >= settings.bpp3d) i++; else break; } for ( ; cd[i]; i++) { mode3d = checkvideomode(&settings.xdim3d, &settings.ydim3d, cd[i], settings.fullscreen, 1); if (mode3d < 0) continue; settings.bpp3d = cd[i]; break; } } gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(lookup_widget(startwin,"fullscreencheck")), settings.fullscreen); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(lookup_widget(startwin,"alwaysshowcheck")), settings.forcesetup); box3d = GTK_COMBO_BOX(lookup_widget(startwin,"vmode3dcombo")); modes3d = GTK_LIST_STORE(gtk_combo_box_get_model(box3d)); gtk_list_store_clear(modes3d); for (i=0; i<validmodecnt; i++) { if (validmode[i].fs != settings.fullscreen) continue; // all modes get added to the 3D mode list Bsprintf(buf, "%d x %d %dbpp", validmode[i].xdim, validmode[i].ydim, validmode[i].bpp); gtk_list_store_append(modes3d, &iter); gtk_list_store_set(modes3d, &iter, 0,buf, 1,i, -1); if (i == mode3d) { g_signal_handlers_block_by_func(box3d, on_vmode3dcombo_changed, NULL); gtk_combo_box_set_active_iter(box3d, &iter); g_signal_handlers_unblock_by_func(box3d, on_vmode3dcombo_changed, NULL); } } gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(lookup_widget(startwin,"inputmousecheck")), settings.usemouse); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(lookup_widget(startwin,"inputjoycheck")), settings.usejoy); } if (pgs & (1<<TAB_GAME)) { struct grpfile *fg; int i; GtkListStore *list; GtkTreeIter iter; GtkTreeView *gamelist; gamelist = GTK_TREE_VIEW(lookup_widget(startwin,"gamelist")); list = GTK_LIST_STORE(gtk_tree_view_get_model(gamelist)); gtk_list_store_clear(list); for (fg = foundgrps; fg; fg=fg->next) { for (i = 0; i<numgrpfiles; i++) if (fg->crcval == grpfiles[i].crcval) break; if (i == numgrpfiles) continue; // unrecognised grp file gtk_list_store_append(list, &iter); gtk_list_store_set(list, &iter, 0, grpfiles[i].name, 1, fg->name, 2, (gpointer)fg, -1); if (!Bstrcasecmp(fg->name, settings.selectedgrp)) { GtkTreeSelection *sel = gtk_tree_view_get_selection(gamelist); g_signal_handlers_block_by_func(sel, on_gamelist_selection_changed, NULL); gtk_tree_selection_select_iter(sel, &iter); g_signal_handlers_unblock_by_func(sel, on_gamelist_selection_changed, NULL); } } } }
void CONFIG_SetupMouse(void) { int32_t i; char str[80]; char temp[80]; int32_t scale; if (ud.config.scripthandle < 0) return; for (i=0; i<MAXMOUSEBUTTONS; i++) { Bsprintf(str,"MouseButton%d",i); temp[0] = 0; if (!SCRIPT_GetString(ud.config.scripthandle,"Controls", str,temp)) ud.config.MouseFunctions[i][0] = CONFIG_FunctionNameToNum(temp); Bsprintf(str,"MouseButtonClicked%d",i); temp[0] = 0; if (!SCRIPT_GetString(ud.config.scripthandle,"Controls", str,temp)) ud.config.MouseFunctions[i][1] = CONFIG_FunctionNameToNum(temp); } // map over the axes for (i=0; i<MAXMOUSEAXES; i++) { Bsprintf(str,"MouseAnalogAxes%d",i); temp[0] = 0; if (!SCRIPT_GetString(ud.config.scripthandle, "Controls", str,temp)) if (CONFIG_AnalogNameToNum(temp) != -1 || (!temp[0] && CONFIG_FunctionNameToNum(temp) != -1)) ud.config.MouseAnalogueAxes[i] = CONFIG_AnalogNameToNum(temp); Bsprintf(str,"MouseDigitalAxes%d_0",i); temp[0] = 0; if (!SCRIPT_GetString(ud.config.scripthandle, "Controls", str,temp)) if (CONFIG_FunctionNameToNum(temp) != -1 || (!temp[0] && CONFIG_FunctionNameToNum(temp) != -1)) ud.config.MouseDigitalFunctions[i][0] = CONFIG_FunctionNameToNum(temp); Bsprintf(str,"MouseDigitalAxes%d_1",i); temp[0] = 0; if (!SCRIPT_GetString(ud.config.scripthandle, "Controls", str,temp)) if (CONFIG_FunctionNameToNum(temp) != -1 || (!temp[0] && CONFIG_FunctionNameToNum(temp) != -1)) ud.config.MouseDigitalFunctions[i][1] = CONFIG_FunctionNameToNum(temp); Bsprintf(str,"MouseAnalogScale%d",i); scale = ud.config.MouseAnalogueScale[i]; SCRIPT_GetNumber(ud.config.scripthandle, "Controls", str,&scale); ud.config.MouseAnalogueScale[i] = scale; } { tempbuf[0] = 0; SCRIPT_GetString(ud.config.scripthandle, "Controls","Mouse_Sensitivity",&tempbuf[0]); if (tempbuf[0]) CONTROL_MouseSensitivity = atof(tempbuf); } for (i=0; i<MAXMOUSEBUTTONS; i++) { CONTROL_MapButton(ud.config.MouseFunctions[i][0], i, 0, controldevice_mouse); CONTROL_MapButton(ud.config.MouseFunctions[i][1], i, 1, controldevice_mouse); } for (i=0; i<MAXMOUSEAXES; i++) { CONTROL_MapAnalogAxis(i, ud.config.MouseAnalogueAxes[i], controldevice_mouse); CONTROL_MapDigitalAxis(i, ud.config.MouseDigitalFunctions[i][0], 0,controldevice_mouse); CONTROL_MapDigitalAxis(i, ud.config.MouseDigitalFunctions[i][1], 1,controldevice_mouse); CONTROL_SetAnalogAxisScale(i, ud.config.MouseAnalogueScale[i], controldevice_mouse); } }
void CONFIG_SetupJoystick(void) { int32_t i; char str[80]; char temp[80]; int32_t scale; if (ud.config.scripthandle < 0) return; for (i=0; i<MAXJOYBUTTONSANDHATS; i++) { Bsprintf(str,"JoystickButton%d",i); temp[0] = 0; if (!SCRIPT_GetString(ud.config.scripthandle,"Controls", str,temp)) ud.config.JoystickFunctions[i][0] = CONFIG_FunctionNameToNum(temp); Bsprintf(str,"JoystickButtonClicked%d",i); temp[0] = 0; if (!SCRIPT_GetString(ud.config.scripthandle,"Controls", str,temp)) ud.config.JoystickFunctions[i][1] = CONFIG_FunctionNameToNum(temp); } // map over the axes for (i=0; i<MAXJOYAXES; i++) { Bsprintf(str,"JoystickAnalogAxes%d",i); temp[0] = 0; if (!SCRIPT_GetString(ud.config.scripthandle, "Controls", str,temp)) if (CONFIG_AnalogNameToNum(temp) != -1 || (!temp[0] && CONFIG_FunctionNameToNum(temp) != -1)) ud.config.JoystickAnalogueAxes[i] = CONFIG_AnalogNameToNum(temp); Bsprintf(str,"JoystickDigitalAxes%d_0",i); temp[0] = 0; if (!SCRIPT_GetString(ud.config.scripthandle, "Controls", str,temp)) if (CONFIG_FunctionNameToNum(temp) != -1 || (!temp[0] && CONFIG_FunctionNameToNum(temp) != -1)) ud.config.JoystickDigitalFunctions[i][0] = CONFIG_FunctionNameToNum(temp); Bsprintf(str,"JoystickDigitalAxes%d_1",i); temp[0] = 0; if (!SCRIPT_GetString(ud.config.scripthandle, "Controls", str,temp)) if (CONFIG_FunctionNameToNum(temp) != -1 || (!temp[0] && CONFIG_FunctionNameToNum(temp) != -1)) ud.config.JoystickDigitalFunctions[i][1] = CONFIG_FunctionNameToNum(temp); Bsprintf(str,"JoystickAnalogScale%d",i); scale = ud.config.JoystickAnalogueScale[i]; SCRIPT_GetNumber(ud.config.scripthandle, "Controls", str,&scale); ud.config.JoystickAnalogueScale[i] = scale; Bsprintf(str,"JoystickAnalogDead%d",i); scale = ud.config.JoystickAnalogueDead[i]; SCRIPT_GetNumber(ud.config.scripthandle, "Controls", str,&scale); ud.config.JoystickAnalogueDead[i] = scale; Bsprintf(str,"JoystickAnalogSaturate%d",i); scale = ud.config.JoystickAnalogueSaturate[i]; SCRIPT_GetNumber(ud.config.scripthandle, "Controls", str,&scale); ud.config.JoystickAnalogueSaturate[i] = scale; } for (i=0; i<MAXJOYBUTTONSANDHATS; i++) { CONTROL_MapButton(ud.config.JoystickFunctions[i][0], i, 0, controldevice_joystick); CONTROL_MapButton(ud.config.JoystickFunctions[i][1], i, 1, controldevice_joystick); } for (i=0; i<MAXJOYAXES; i++) { CONTROL_MapAnalogAxis(i, ud.config.JoystickAnalogueAxes[i], controldevice_joystick); CONTROL_MapDigitalAxis(i, ud.config.JoystickDigitalFunctions[i][0], 0, controldevice_joystick); CONTROL_MapDigitalAxis(i, ud.config.JoystickDigitalFunctions[i][1], 1, controldevice_joystick); CONTROL_SetAnalogAxisScale(i, ud.config.JoystickAnalogueScale[i], controldevice_joystick); } }
int32_t startwin_run(void) { if (!gtkenabled) return 1; if (!stwidgets.startwin) return 1; SetPage(TAB_CONFIG); settings.xdim3d = ud.config.ScreenWidth; settings.ydim3d = ud.config.ScreenHeight; settings.bpp3d = ud.config.ScreenBPP; settings.fullscreen = ud.config.ScreenMode; settings.usemouse = ud.config.UseMouse; settings.usejoy = ud.config.UseJoystick; settings.custommoddir = g_modDir; settings.forcesetup = ud.config.ForceSetup; settings.game = g_gameType; Bstrncpyz(settings.selectedgrp, G_GrpFile(), BMAX_PATH); if (ud.config.NoAutoLoad) settings.autoload = FALSE; else settings.autoload = TRUE; #ifdef POLYMER if (glrendmode == REND_POLYMER) { if (settings.bpp3d == 8) settings.bpp3d = 32; settings.polymer = TRUE; } #endif PopulateForm(ALL); gtk_main(); SetPage(TAB_MESSAGES); if (retval) // launch the game with these parameters { ud.config.ScreenWidth = settings.xdim3d; ud.config.ScreenHeight = settings.ydim3d; ud.config.ScreenBPP = settings.bpp3d; ud.config.ScreenMode = settings.fullscreen; ud.config.UseMouse = settings.usemouse; ud.config.UseJoystick = settings.usejoy; ud.config.ForceSetup = settings.forcesetup; clearGrpNamePtr(); g_grpNamePtr = dup_filename(settings.selectedgrp); g_gameType = settings.game; if (settings.custommoddir != NULL) Bstrcpy(g_modDir, settings.custommoddir); else Bsprintf(g_modDir, "/"); if (settings.autoload) ud.config.NoAutoLoad = FALSE; else ud.config.NoAutoLoad = TRUE; { struct grpfile *grp; for (grp = listgrps; grp; grp=grp->next) if (settings.crcval == grp->crcval) break; if (grp) { g_gameNamePtr = grp->name; g_dependencyCRC = grp->dependency; if (grp->scriptname && g_scriptNamePtr == NULL) g_scriptNamePtr = dup_filename(grp->scriptname); if (grp->defname && g_defNamePtr == NULL) g_defNamePtr = dup_filename(grp->defname); } } } return retval; }
static void PopulateForm(unsigned char pgs) { if ((pgs == ALL) || (pgs == POPULATE_VIDEO)) { int32_t mode3d, i; GtkListStore *modes3d; GtkTreeIter iter; char buf[64]; mode3d = checkvideomode(&settings.xdim3d, &settings.ydim3d, settings.bpp3d, settings.fullscreen, 1); if (mode3d < 0) { int32_t i, cd[] = { 32, 24, 16, 15, 8, 0 }; for (i=0; cd[i];) { if (cd[i] >= settings.bpp3d) i++; else break; } for (; cd[i]; i++) { mode3d = checkvideomode(&settings.xdim3d, &settings.ydim3d, cd[i], settings.fullscreen, 1); if (mode3d < 0) continue; settings.bpp3d = cd[i]; break; } } modes3d = GTK_LIST_STORE(gtk_combo_box_get_model(GTK_COMBO_BOX(stwidgets.vmode3dcombo))); gtk_list_store_clear(modes3d); for (i=0; i<validmodecnt; i++) { if (validmode[i].fs != settings.fullscreen) continue; // all modes get added to the 3D mode list Bsprintf(buf, "%d x %d %dbpp", validmode[i].xdim, validmode[i].ydim, validmode[i].bpp); gtk_list_store_append(modes3d, &iter); gtk_list_store_set(modes3d, &iter, 0,buf, 1,i, -1); if (i == mode3d) { g_signal_handlers_block_by_func(stwidgets.vmode3dcombo, (gpointer)on_vmode3dcombo_changed, NULL); gtk_combo_box_set_active_iter(GTK_COMBO_BOX(stwidgets.vmode3dcombo), &iter); g_signal_handlers_unblock_by_func(stwidgets.vmode3dcombo, (gpointer)on_vmode3dcombo_changed, NULL); } } } if ((pgs == ALL) || (pgs == POPULATE_CONFIG)) { GtkListStore *devlist, *modsdir; GtkTreeIter iter; GtkTreePath *path; char *value; unsigned char i, r = 0; const char *availabledev[] = { "Keyboard only", "Keyboard and mouse", "Keyboard and joystick", "All supported devices" }; // populate input devices combo devlist = GTK_LIST_STORE(gtk_combo_box_get_model(GTK_COMBO_BOX(stwidgets.inputdevcombo))); gtk_list_store_clear(devlist); for (i=0; i<(int32_t)G_N_ELEMENTS(availabledev); i++) { gtk_list_store_append(devlist, &iter); gtk_list_store_set(devlist, &iter, 0,availabledev[i], -1); } switch (settings.usemouse) { case 0: if (settings.usejoy) gtk_combo_box_set_active(GTK_COMBO_BOX(stwidgets.inputdevcombo), INPUT_JOYSTICK); else gtk_combo_box_set_active(GTK_COMBO_BOX(stwidgets.inputdevcombo), INPUT_KB); break; case 1: if (settings.usejoy) gtk_combo_box_set_active(GTK_COMBO_BOX(stwidgets.inputdevcombo), INPUT_ALL); else gtk_combo_box_set_active(GTK_COMBO_BOX(stwidgets.inputdevcombo), INPUT_MOUSE); break; } // populate custom mod combo modsdir = GTK_LIST_STORE(gtk_combo_box_get_model(GTK_COMBO_BOX(stwidgets.custommodcombo))); gtk_list_store_clear(modsdir); gtk_list_store_append(modsdir, &iter); gtk_list_store_set(modsdir, &iter, 0,"None", -1); r = GetModsDirNames(modsdir); for (i=0; i<=r; i++) { path = gtk_tree_path_new_from_indices(i, -1); gtk_tree_model_get_iter(GTK_TREE_MODEL(modsdir), &iter, path); gtk_tree_model_get(GTK_TREE_MODEL(modsdir), &iter, 0,&value, -1); if (Bstrcmp(settings.custommoddir, "/") == 0) { gtk_combo_box_set_active(GTK_COMBO_BOX(stwidgets.custommodcombo), NONE); settings.custommoddir = NULL; break; } if (Bstrcmp(settings.custommoddir, value) == 0) { gtk_combo_box_set_active_iter(GTK_COMBO_BOX(stwidgets.custommodcombo), &iter); break; } } // populate check buttons gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(stwidgets.fullscreencheck), settings.fullscreen); #ifdef POLYMER gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(stwidgets.polymercheck), settings.polymer); #endif gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(stwidgets.autoloadcheck), settings.autoload); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(stwidgets.alwaysshowcheck), settings.forcesetup); } if ((pgs == ALL) || (pgs == POPULATE_GAME)) { struct grpfile *fg; GtkListStore *list; GtkTreeIter iter; GtkTreeView *gamelist; gamelist = GTK_TREE_VIEW(stwidgets.gamelist); list = GTK_LIST_STORE(gtk_tree_view_get_model(gamelist)); gtk_list_store_clear(list); for (fg = foundgrps; fg; fg=fg->next) { struct grpfile *grp; for (grp = listgrps; grp; grp=grp->next) if (fg->crcval == grp->crcval) break; if (grp == NULL) continue; gtk_list_store_append(list, &iter); gtk_list_store_set(list, &iter, 0, grp->name, 1, fg->name, 2, (gpointer)fg, -1); if (!Bstrcasecmp(fg->name, settings.selectedgrp)) { GtkTreeSelection *sel = gtk_tree_view_get_selection(gamelist); g_signal_handlers_block_by_func(sel, (gpointer)on_gamelist_selection_changed, NULL); gtk_tree_selection_select_iter(sel, &iter); g_signal_handlers_unblock_by_func(sel, (gpointer)on_gamelist_selection_changed, NULL); } } } }
void CONFIG_WriteSetup( void ) { int32 dummy; if (!setupread) return; // if (scripthandle < 0) scripthandle = SCRIPT_Init(localsetupfilename); SCRIPT_PutNumber( scripthandle, "Screen Setup", "Shadows",ud.shadows,false,false); SCRIPT_PutString( scripthandle, "Screen Setup", "Password",ud.pwlockout); SCRIPT_PutNumber( scripthandle, "Screen Setup", "Detail",ud.detail,false,false); SCRIPT_PutNumber( scripthandle, "Screen Setup", "Tilt",ud.screen_tilting,false,false); SCRIPT_PutNumber( scripthandle, "Screen Setup", "Messages",ud.fta_on,false,false); SCRIPT_PutNumber( scripthandle, "Screen Setup", "Out",ud.lockout,false,false); SCRIPT_PutNumber( scripthandle, "Screen Setup", "ScreenWidth",ScreenWidth,false,false); SCRIPT_PutNumber( scripthandle, "Screen Setup", "ScreenHeight",ScreenHeight,false,false); SCRIPT_PutNumber( scripthandle, "Screen Setup", "ScreenMode",ScreenMode,false,false); SCRIPT_PutNumber( scripthandle, "Screen Setup", "ScreenBPP",ScreenBPP,false,false); SCRIPT_PutBoolean( scripthandle, "Screen Setup", "VerticalSync", (boolean)ud.vsync); SCRIPT_PutNumber( scripthandle, "Screen Setup", "MaxFPS", ud.fps_max, false, false); #ifdef RENDERTYPEWIN SCRIPT_PutNumber( scripthandle, "Screen Setup", "MaxRefreshFreq",maxrefreshfreq,false,false); #endif SCRIPT_PutNumber( scripthandle, "Screen Setup", "GLTextureMode",gltexfiltermode,false,false); SCRIPT_PutNumber( scripthandle, "Screen Setup", "GLAnisotropy",glanisotropy,false,false); SCRIPT_PutNumber( scripthandle, "Screen Setup", "GLUseTextureCompr",glusetexcompr,false,false); SCRIPT_PutNumber( scripthandle, "Screen Setup", "GLUseCompressedTextureCache", glusetexcache,false,false); SCRIPT_PutNumber( scripthandle, "Screen Setup", "ScreenSize",ud.screen_size,false,false); SCRIPT_PutNumber( scripthandle, "Screen Setup", "ScreenGamma",ud.brightness,false,false); SCRIPT_Save (scripthandle, localsetupfilename); SCRIPT_Free (scripthandle); scripthandle = SCRIPT_Init(setupfilename); SCRIPT_PutNumber( scripthandle, "Sound Setup", "FXDevice", FXDevice, false, false); SCRIPT_PutNumber( scripthandle, "Sound Setup", "MusicDevice", MusicDevice, false, false); SCRIPT_PutNumber( scripthandle, "Sound Setup", "FXVolume",FXVolume,false,false); SCRIPT_PutNumber( scripthandle, "Sound Setup", "MusicVolume",MusicVolume,false,false); SCRIPT_PutNumber( scripthandle, "Sound Setup", "SoundToggle",SoundToggle,false,false); SCRIPT_PutNumber( scripthandle, "Sound Setup", "VoiceToggle",VoiceToggle,false,false); SCRIPT_PutNumber( scripthandle, "Sound Setup", "AmbienceToggle",AmbienceToggle,false,false); SCRIPT_PutNumber( scripthandle, "Sound Setup", "MusicToggle",MusicToggle,false,false); SCRIPT_PutNumber( scripthandle, "Sound Setup", "NumVoices", NumVoices, false, false); SCRIPT_PutNumber( scripthandle, "Sound Setup", "NumChannels", NumChannels, false, false); SCRIPT_PutNumber( scripthandle, "Sound Setup", "NumBits", NumBits, false, false); SCRIPT_PutNumber( scripthandle, "Sound Setup", "MixRate", MixRate, false, false); SCRIPT_PutNumber( scripthandle, "Sound Setup", "ReverseStereo",ReverseStereo,false,false); SCRIPT_PutNumber( scripthandle, "Setup", "ForceSetup",ForceSetup,false,false); SCRIPT_PutNumber( scripthandle, "Misc", "Executions",ud.executions,false,false); SCRIPT_PutNumber( scripthandle, "Misc", "RunMode",RunMode,false,false); SCRIPT_PutNumber( scripthandle, "Misc", "Crosshairs",ud.crosshair,false,false); SCRIPT_PutNumber( scripthandle, "Misc", "ShowLevelStats",ud.levelstats,false,false); SCRIPT_PutNumber( scripthandle, "Misc", "StatusBarScale",ud.statusbarscale,false,false); SCRIPT_PutNumber( scripthandle, "Misc", "ShowOpponentWeapons",ShowOpponentWeapons,false,false); SCRIPT_PutNumber( scripthandle, "Misc", "UsePrecache",useprecache,false,false); SCRIPT_PutNumber( scripthandle, "Controls","UseJoystick",UseJoystick,false,false); SCRIPT_PutNumber( scripthandle, "Controls","UseMouse",UseMouse,false,false); SCRIPT_PutNumber( scripthandle, "Controls","MouseAimingFlipped",ud.mouseflip,false,false); SCRIPT_PutNumber( scripthandle, "Controls","MouseAiming",ud.mouseaiming,false,false); //SCRIPT_PutNumber( scripthandle, "Controls","GameMouseAiming",(int32) ps[myconnectindex].aim_mode,false,false); SCRIPT_PutNumber( scripthandle, "Controls","AimingFlag",(long) myaimmode,false,false); SCRIPT_PutNumber( scripthandle, "Controls","RunKeyBehaviour",ud.runkey_mode,false,false); SCRIPT_PutNumber( scripthandle, "Controls","AutoAim",AutoAim,false,false); SCRIPT_PutNumber( scripthandle, "Controls","WeaponSwitchMode",ud.weaponswitch,false,false); // JBF 20031211 #if 0 for(dummy=0;dummy<NUMGAMEFUNCTIONS;dummy++) { SCRIPT_PutDoubleString( scripthandle, "KeyDefinitions", CONFIG_FunctionNumToName(dummy), KB_ScanCodeToString(KeyboardKeys[dummy][0]), KB_ScanCodeToString(KeyboardKeys[dummy][1])); } #else for(dummy=0;dummy<NUMGAMEFUNCTIONS;dummy++) { SCRIPT_PutDoubleString( scripthandle, "KeyDefinitions", CONFIG_FunctionNumToName(dummy), dnGetKeyName(dnGetFunctionBinding(dummy, 0)), dnGetKeyName(dnGetFunctionBinding(dummy, 1))); } #endif for(dummy=0;dummy<10;dummy++) { Bsprintf(buf,"WeaponChoice%ld",dummy); SCRIPT_PutNumber( scripthandle, "Misc",buf,ud.wchoice[myconnectindex][dummy],false,false); } for (dummy=0;dummy<MAXMOUSEBUTTONS;dummy++) { Bsprintf(buf,"MouseButton%ld",dummy); SCRIPT_PutString( scripthandle,"Controls", buf, CONFIG_FunctionNumToName( MouseFunctions[dummy][0] )); if (dummy >= (MAXMOUSEBUTTONS-2)) continue; Bsprintf(buf,"MouseButtonClicked%ld",dummy); SCRIPT_PutString( scripthandle,"Controls", buf, CONFIG_FunctionNumToName( MouseFunctions[dummy][1] )); } for (dummy=0;dummy<MAXMOUSEAXES;dummy++) { Bsprintf(buf,"MouseAnalogAxes%ld",dummy); SCRIPT_PutString(scripthandle, "Controls", buf, CONFIG_AnalogNumToName( MouseAnalogueAxes[dummy] )); Bsprintf(buf,"MouseDigitalAxes%ld_0",dummy); SCRIPT_PutString(scripthandle, "Controls", buf, CONFIG_FunctionNumToName(MouseDigitalFunctions[dummy][0])); Bsprintf(buf,"MouseDigitalAxes%ld_1",dummy); SCRIPT_PutString(scripthandle, "Controls", buf, CONFIG_FunctionNumToName(MouseDigitalFunctions[dummy][1])); Bsprintf(buf,"MouseAnalogScale%ld",dummy); SCRIPT_PutNumber(scripthandle, "Controls", buf, MouseAnalogueScale[dummy], false, false); } #if 0 dummy = CONTROL_GetMouseSensitivity(); #else dummy = dnGetMouseSensitivity(); #endif SCRIPT_PutNumber( scripthandle, "Controls","MouseSensitivity",dummy,false,false); for (dummy=0;dummy<MAXJOYBUTTONS;dummy++) { Bsprintf(buf,"JoystickButton%ld",dummy); SCRIPT_PutString( scripthandle,"Controls", buf, CONFIG_FunctionNumToName( JoystickFunctions[dummy][0] )); Bsprintf(buf,"JoystickButtonClicked%ld",dummy); SCRIPT_PutString( scripthandle,"Controls", buf, CONFIG_FunctionNumToName( JoystickFunctions[dummy][1] )); } for (dummy=0;dummy<MAXJOYAXES;dummy++) { Bsprintf(buf,"JoystickAnalogAxes%ld",dummy); SCRIPT_PutString(scripthandle, "Controls", buf, CONFIG_AnalogNumToName( JoystickAnalogueAxes[dummy] )); Bsprintf(buf,"JoystickDigitalAxes%ld_0",dummy); SCRIPT_PutString(scripthandle, "Controls", buf, CONFIG_FunctionNumToName(JoystickDigitalFunctions[dummy][0])); Bsprintf(buf,"JoystickDigitalAxes%ld_1",dummy); SCRIPT_PutString(scripthandle, "Controls", buf, CONFIG_FunctionNumToName(JoystickDigitalFunctions[dummy][1])); Bsprintf(buf,"JoystickAnalogScale%ld",dummy); SCRIPT_PutNumber(scripthandle, "Controls", buf, JoystickAnalogueScale[dummy], false, false); Bsprintf(buf,"JoystickAnalogDead%ld",dummy); SCRIPT_PutNumber(scripthandle, "Controls", buf, JoystickAnalogueDead[dummy], false, false); Bsprintf(buf,"JoystickAnalogSaturate%ld",dummy); SCRIPT_PutNumber(scripthandle, "Controls", buf, JoystickAnalogueSaturate[dummy], false, false); } SCRIPT_PutString( scripthandle, "Comm Setup","PlayerName",&myname[0]); SCRIPT_Save (scripthandle, setupfilename); SCRIPT_Free (scripthandle); }
void G_DoCheats(void) { int32_t ch, i, j, k=0, weapon; static int32_t vol1inited=0; char consolecheat = 0; // JBF 20030914 if (osdcmd_cheatsinfo_stat.cheatnum != -1) { if (ud.player_skill == 4) { P_DoQuote(QUOTE_CHEATS_DISABLED, g_player[myconnectindex].ps); osdcmd_cheatsinfo_stat.cheatnum = -1; return; } // JBF 20030914 k = osdcmd_cheatsinfo_stat.cheatnum; osdcmd_cheatsinfo_stat.cheatnum = -1; consolecheat = 1; } if (VOLUMEONE && !vol1inited) { // change "scotty###" to "scotty##" uint32_t const warpend = Bstrlen(CheatStrings[2]); if (strcmp(&CheatStrings[2][warpend-3], "###") == 0) CheatStrings[2][warpend-1] = '\0'; Bstrcpy(CheatStrings[6], "<RESERVED>"); vol1inited = 1; } if (consolecheat && numplayers < 2 && ud.recstat == 0) goto FOUNDCHEAT; if (g_player[myconnectindex].ps->gm & (MODE_TYPE|MODE_MENU)) return; if (g_player[myconnectindex].ps->cheat_phase == 1) { while (KB_KeyWaiting()) { ch = Btolower(KB_GetCh()); if (!((ch >= 'a' && ch <= 'z') || (ch >= '0' && ch <= '9'))) { g_player[myconnectindex].ps->cheat_phase = 0; // P_DoQuote(QUOTE_46,g_player[myconnectindex].ps); return; } cheatbuf[cheatbuflen++] = (int8_t) ch; // This assertion is not obvious, but it should hold because of the // cheat string matching logic below. Bassert(cheatbuflen < (signed)sizeof(cheatbuf)); cheatbuf[cheatbuflen] = 0; // KB_ClearKeysDown(); for (k=0; k < NUMCHEATCODES; k++) { for (j = 0; j<cheatbuflen; j++) { if (cheatbuf[j] == CheatStrings[k][j] || (CheatStrings[k][j] == '#' && ch >= '0' && ch <= '9')) { if (CheatStrings[k][j+1] == 0) goto FOUNDCHEAT; if (j == cheatbuflen-1) return; } else break; } } g_player[myconnectindex].ps->cheat_phase = 0; return; FOUNDCHEAT: i = VM_OnEventWithReturn(EVENT_ACTIVATECHEAT, g_player[myconnectindex].ps->i, myconnectindex, k); if (k != CHEAT_COMEGETSOME) // Users are not allowed to interfere with TX's debugging cheat. k = i; { switch (k) { case CHEAT_WEAPONS: j = 0; if (VOLUMEONE) j = 6; for (weapon = PISTOL_WEAPON; weapon < MAX_WEAPONS-j; weapon++) { P_AddAmmo(weapon, g_player[myconnectindex].ps, g_player[myconnectindex].ps->max_ammo_amount[weapon]); g_player[myconnectindex].ps->gotweapon |= (1<<weapon); } P_DoQuote(QUOTE_CHEAT_ALL_WEAPONS, g_player[myconnectindex].ps); end_cheat(); return; case CHEAT_INVENTORY: G_CheatGetInv(); P_DoQuote(QUOTE_CHEAT_ALL_INV, g_player[myconnectindex].ps); end_cheat(); return; case CHEAT_KEYS: g_player[myconnectindex].ps->got_access = 7; KB_FlushKeyboardQueue(); P_DoQuote(QUOTE_CHEAT_ALL_KEYS, g_player[myconnectindex].ps); end_cheat(); return; case CHEAT_DEBUG: g_Debug = 1-g_Debug; G_DumpDebugInfo(); Bsprintf(tempbuf, "Gamevars dumped to log"); G_AddUserQuote(tempbuf); Bsprintf(tempbuf, "Map dumped to debug.map"); G_AddUserQuote(tempbuf); end_cheat(); break; case CHEAT_CLIP: ud.noclip = !ud.noclip; P_DoQuote(QUOTE_CHEAT_NOCLIP-!ud.noclip, g_player[myconnectindex].ps); end_cheat(); return; case CHEAT_RESERVED2: g_player[myconnectindex].ps->player_par = 0; g_player[myconnectindex].ps->gm = MODE_EOL; end_cheat(); return; case CHEAT_ALLEN: P_DoQuote(QUOTE_CHEAT_ALLEN, g_player[myconnectindex].ps); g_player[myconnectindex].ps->cheat_phase = 0; KB_ClearKeyDown(sc_N); return; case CHEAT_CORNHOLIO: case CHEAT_KROZ: case CHEAT_COMEGETSOME: { const int32_t pi = g_player[myconnectindex].ps->i; ud.god = 1-ud.god; if (ud.god) { pus = 1; pub = 1; sprite[pi].cstat = 257; actor[pi].t_data[0] = 0; actor[pi].t_data[1] = 0; actor[pi].t_data[2] = 0; actor[pi].t_data[3] = 0; actor[pi].t_data[4] = 0; actor[pi].t_data[5] = 0; sprite[pi].hitag = 0; sprite[pi].lotag = 0; sprite[pi].pal = g_player[myconnectindex].ps->palookup; if (k != CHEAT_COMEGETSOME) { P_DoQuote(QUOTE_CHEAT_GODMODE_ON, g_player[myconnectindex].ps); } else { Bstrcpy(ScriptQuotes[QUOTE_RESERVED4], "Come Get Some!"); S_PlaySound(DUKE_GETWEAPON2); P_DoQuote(QUOTE_RESERVED4, g_player[myconnectindex].ps); G_CheatGetInv(); for (weapon = PISTOL_WEAPON; weapon < MAX_WEAPONS; weapon++) g_player[myconnectindex].ps->gotweapon |= (1<<weapon); for (weapon = PISTOL_WEAPON; weapon < MAX_WEAPONS; weapon++) P_AddAmmo(weapon, g_player[myconnectindex].ps, g_player[myconnectindex].ps->max_ammo_amount[weapon]); g_player[myconnectindex].ps->got_access = 7; } } else { sprite[pi].extra = g_player[myconnectindex].ps->max_player_health; actor[pi].extra = -1; g_player[myconnectindex].ps->last_extra = g_player[myconnectindex].ps->max_player_health; P_DoQuote(QUOTE_CHEAT_GODMODE_OFF, g_player[myconnectindex].ps); } sprite[pi].extra = g_player[myconnectindex].ps->max_player_health; actor[pi].extra = 0; if (k != CHEAT_COMEGETSOME) g_player[myconnectindex].ps->dead_flag = 0; end_cheat(); return; } case CHEAT_STUFF: j = 0; if (VOLUMEONE) j = 6; for (weapon = PISTOL_WEAPON; weapon < MAX_WEAPONS-j; weapon++) g_player[myconnectindex].ps->gotweapon |= (1<<weapon); for (weapon = PISTOL_WEAPON; weapon < MAX_WEAPONS-j; weapon++) P_AddAmmo(weapon, g_player[myconnectindex].ps, g_player[myconnectindex].ps->max_ammo_amount[weapon]); G_CheatGetInv(); g_player[myconnectindex].ps->got_access = 7; P_DoQuote(QUOTE_CHEAT_EVERYTHING, g_player[myconnectindex].ps); // P_DoQuote(QUOTE_21,g_player[myconnectindex].ps); g_player[myconnectindex].ps->inven_icon = ICON_FIRSTAID; end_cheat(); return; case CHEAT_SCOTTY: case CHEAT_SKILL: if (k == CHEAT_SCOTTY) { i = Bstrlen(CheatStrings[k])-3+VOLUMEONE; if (!consolecheat) { // JBF 20030914 int16_t volnume, levnume; if (VOLUMEALL) { volnume = cheatbuf[i] - '0'; levnume = (cheatbuf[i+1] - '0')*10+(cheatbuf[i+2]-'0'); } else { volnume = cheatbuf[i] - '0'; levnume = cheatbuf[i+1] - '0'; } volnume--; levnume--; if ((VOLUMEONE && volnume > 0) || volnume > g_numVolumes-1 || levnume >= MAXLEVELS || MapInfo[volnume *MAXLEVELS+levnume].filename == NULL) { end_cheat(); return; } ud.m_volume_number = ud.volume_number = volnume; ud.m_level_number = ud.level_number = levnume; } else { // JBF 20030914 ud.m_volume_number = ud.volume_number = osdcmd_cheatsinfo_stat.volume; ud.m_level_number = ud.level_number = osdcmd_cheatsinfo_stat.level; } } else { if (!consolecheat) { i = Bstrlen(CheatStrings[k])-1; ud.m_player_skill = ud.player_skill = cheatbuf[i] - '1'; } else { ud.m_player_skill = ud.player_skill = osdcmd_cheatsinfo_stat.volume; } } /*if (numplayers > 1 && g_netServer) Net_NewGame(ud.m_volume_number,ud.m_level_number); else*/ g_player[myconnectindex].ps->gm |= MODE_RESTART; end_cheat(); return; case CHEAT_COORDS: #ifdef USE_OPENGL if (++ud.coords >= 3) ud.coords = 0; #else if (++ud.coords >= 2) ud.coords = 0; #endif end_cheat(); return; case CHEAT_VIEW: if (g_player[myconnectindex].ps->over_shoulder_on) g_player[myconnectindex].ps->over_shoulder_on = 0; else { g_player[myconnectindex].ps->over_shoulder_on = 1; CAMERADIST = 0; CAMERACLOCK = totalclock; } // P_DoQuote(QUOTE_CHEATS_DISABLED,g_player[myconnectindex].ps); end_cheat(); return; case CHEAT_TIME: // P_DoQuote(QUOTE_21,g_player[myconnectindex].ps); end_cheat(); return; case CHEAT_UNLOCK: if (VOLUMEONE) return; for (i=numsectors-1; i>=0; i--) //Unlock { j = sector[i].lotag; if (j == -1 || j == 32767) continue; if ((j & 0x7fff) > 2) { if (j&(0xffff-16384)) sector[i].lotag &= (0xffff-16384); G_OperateSectors(i, g_player[myconnectindex].ps->i); } } G_OperateForceFields(g_player[myconnectindex].ps->i, -1); P_DoQuote(QUOTE_CHEAT_UNLOCK, g_player[myconnectindex].ps); end_cheat(); return; case CHEAT_CASHMAN: ud.cashman = 1-ud.cashman; KB_ClearKeyDown(sc_N); g_player[myconnectindex].ps->cheat_phase = 0; return; case CHEAT_ITEMS: G_CheatGetInv(); g_player[myconnectindex].ps->got_access = 7; P_DoQuote(QUOTE_CHEAT_EVERYTHING, g_player[myconnectindex].ps); end_cheat(); return; case CHEAT_SHOWMAP: // SHOW ALL OF THE MAP TOGGLE; ud.showallmap = !ud.showallmap; for (i=0; i<(MAXSECTORS>>3); i++) show2dsector[i] = ud.showallmap*255; P_DoQuote(ud.showallmap ? QUOTE_SHOW_MAP_ON : QUOTE_SHOW_MAP_OFF, g_player[myconnectindex].ps); end_cheat(); return; case CHEAT_TODD: if (NAM) { Bstrcpy(ScriptQuotes[QUOTE_RESERVED4], g_NAMMattCheatQuote); P_DoQuote(QUOTE_RESERVED4, g_player[myconnectindex].ps); } else { P_DoQuote(QUOTE_CHEAT_TODD, g_player[myconnectindex].ps); } end_cheat(); return; case CHEAT_RATE: if (ud.tickrate++ > 2) ud.tickrate = 0; end_cheat(); return; case CHEAT_BETA: P_DoQuote(QUOTE_CHEAT_BETA, g_player[myconnectindex].ps); KB_ClearKeyDown(sc_H); end_cheat(); return; case CHEAT_HYPER: g_player[myconnectindex].ps->inv_amount[GET_STEROIDS] = 399; g_player[myconnectindex].ps->inv_amount[GET_HEATS] = 1200; P_DoQuote(QUOTE_CHEAT_STEROIDS, g_player[myconnectindex].ps); end_cheat(); return; case CHEAT_MONSTERS: { const char *s [] ={ "On", "Off", "On (2)" }; if (++g_noEnemies == 3) g_noEnemies = 0; Bsprintf(ScriptQuotes[QUOTE_RESERVED4], "Monsters: %s", s[g_noEnemies]); P_DoQuote(QUOTE_RESERVED4, g_player[myconnectindex].ps); end_cheat(); return; } case CHEAT_RESERVED: case CHEAT_RESERVED3: ud.eog = 1; g_player[myconnectindex].ps->player_par = 0; g_player[myconnectindex].ps->gm |= MODE_EOL; KB_FlushKeyboardQueue(); return; default: end_cheat(); return; } } } } else { if (KB_KeyPressed((uint8_t) CheatKeys[0]))
void CONFIG_SetupMouse( void ) { int32 i; char str[80],*p; char temp[80]; int32 function, scale; if (scripthandle < 0) return; #if 0 for (i=0;i<MAXMOUSEBUTTONS;i++) { Bsprintf(str,"MouseButton%ld",i); temp[0] = 0; if (!SCRIPT_GetString( scripthandle,"Controls", str,temp)) MouseFunctions[i][0] = CONFIG_FunctionNameToNum(temp); Bsprintf(str,"MouseButtonClicked%ld",i); temp[0] = 0; if (!SCRIPT_GetString( scripthandle,"Controls", str,temp)) MouseFunctions[i][1] = CONFIG_FunctionNameToNum(temp); } #endif // map over the axes for (i=0;i<MAXMOUSEAXES;i++) { Bsprintf(str,"MouseAnalogAxes%ld",i); temp[0] = 0; if (!SCRIPT_GetString(scripthandle, "Controls", str,temp)) MouseAnalogueAxes[i] = CONFIG_AnalogNameToNum(temp); Bsprintf(str,"MouseDigitalAxes%ld_0",i); temp[0] = 0; if (!SCRIPT_GetString(scripthandle, "Controls", str,temp)) MouseDigitalFunctions[i][0] = CONFIG_FunctionNameToNum(temp); Bsprintf(str,"MouseDigitalAxes%ld_1",i); temp[0] = 0; if (!SCRIPT_GetString(scripthandle, "Controls", str,temp)) MouseDigitalFunctions[i][1] = CONFIG_FunctionNameToNum(temp); Bsprintf(str,"MouseAnalogScale%ld",i); scale = MouseAnalogueScale[i]; SCRIPT_GetNumber(scripthandle, "Controls", str,&scale); MouseAnalogueScale[i] = scale; } function = 32768; SCRIPT_GetNumber( scripthandle, "Controls","MouseSensitivity",&function); #if 0 CONTROL_SetMouseSensitivity(function); #else dnSetMouseSensitivity(function); #endif #if 0 for (i=0; i<MAXMOUSEBUTTONS; i++) { CONTROL_MapButton( MouseFunctions[i][0], i, 0, controldevice_mouse ); CONTROL_MapButton( MouseFunctions[i][1], i, 1, controldevice_mouse ); } #endif for (i=0; i<MAXMOUSEAXES; i++) { CONTROL_MapAnalogAxis( i, MouseAnalogueAxes[i], controldevice_mouse); CONTROL_MapDigitalAxis( i, MouseDigitalFunctions[i][0], 0,controldevice_mouse ); CONTROL_MapDigitalAxis( i, MouseDigitalFunctions[i][1], 1,controldevice_mouse ); CONTROL_SetAnalogAxisScale( i, MouseAnalogueScale[i], controldevice_mouse ); } }
int32_t CONFIG_ReadSetup(void) { int32_t dummy, i = 0; char commmacro[] = "CommbatMacro# "; char tempbuf[1024]; CONTROL_ClearAssignments(); CONFIG_SetDefaults(); ud.config.setupread = 1; pathsearchmode = 1; #ifndef EDUKE32_TOUCH_DEVICES if (SafeFileExists(setupfilename) && ud.config.scripthandle < 0) // JBF 20031211 ud.config.scripthandle = SCRIPT_Load(setupfilename); else if (SafeFileExists(SETUPFILENAME) && ud.config.scripthandle < 0) { i=wm_ynbox("Import Configuration Settings", "The configuration file \"%s\" was not found. " "Import configuration data from \"%s\"?",setupfilename,SETUPFILENAME); if (i) ud.config.scripthandle = SCRIPT_Load(SETUPFILENAME); } else if (SafeFileExists("duke3d.cfg") && ud.config.scripthandle < 0) { i=wm_ynbox("Import Configuration Settings", "The configuration file \"%s\" was not found. " "Import configuration data from \"duke3d.cfg\"?",setupfilename); if (i) ud.config.scripthandle = SCRIPT_Load("duke3d.cfg"); } #endif pathsearchmode = 0; if (ud.config.scripthandle < 0) return -1; if (ud.config.scripthandle >= 0) { char dummybuf[64]; for (dummy = 0; dummy < MAXRIDECULE; dummy++) { commmacro[13] = dummy+'0'; SCRIPT_GetString(ud.config.scripthandle, "Comm Setup",commmacro,&ud.ridecule[dummy][0]); } Bmemset(tempbuf, 0, sizeof(tempbuf)); // Bmemset(dummybuf, 0, sizeof(dummybuf)); SCRIPT_GetString(ud.config.scripthandle, "Comm Setup","PlayerName",&tempbuf[0]); while (Bstrlen(OSD_StripColors(dummybuf,tempbuf)) > 10) tempbuf[Bstrlen(tempbuf)-1] = '\0'; Bstrncpyz(szPlayerName, tempbuf, sizeof(szPlayerName)); if (g_rtsNamePtr == NULL) SCRIPT_GetString(ud.config.scripthandle, "Comm Setup","RTSName",&ud.rtsname[0]); SCRIPT_GetNumber(ud.config.scripthandle, "Setup","ConfigVersion",&ud.configversion); SCRIPT_GetNumber(ud.config.scripthandle, "Setup","ForceSetup",&ud.config.ForceSetup); SCRIPT_GetNumber(ud.config.scripthandle, "Setup","NoAutoLoad",&ud.config.NoAutoLoad); // #ifdef _WIN32 if (g_noSetup == 0 && g_modDir[0] == '/') { struct Bstat st; SCRIPT_GetString(ud.config.scripthandle, "Setup","ModDir",&g_modDir[0]); if (Bstat(g_modDir, &st)) { if ((st.st_mode & S_IFDIR) != S_IFDIR) { initprintf("Invalid mod dir in cfg!\n"); Bsprintf(g_modDir,"/"); } } } // #endif if (g_grpNamePtr == NULL && g_usingAddon == 0) { SCRIPT_GetStringPtr(ud.config.scripthandle, "Setup","SelectedGRP",&g_grpNamePtr); if (g_grpNamePtr && !Bstrlen(g_grpNamePtr)) g_grpNamePtr = dup_filename(G_DefaultGrpFile()); } if (!NAM) { SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "Out",&ud.lockout); SCRIPT_GetString(ud.config.scripthandle, "Screen Setup","Password",&ud.pwlockout[0]); } SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "ScreenHeight",&ud.config.ScreenHeight); SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "ScreenMode",&ud.config.ScreenMode); SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "ScreenWidth",&ud.config.ScreenWidth); SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "WindowPositioning", (int32_t *)&windowpos); windowx = -1; SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "WindowPosX", (int32_t *)&windowx); windowy = -1; SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "WindowPosY", (int32_t *)&windowy); #ifdef RENDERTYPEWIN SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "MaxRefreshFreq", (int32_t *)&maxrefreshfreq); #endif SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "ScreenBPP", &ud.config.ScreenBPP); if (ud.config.ScreenBPP < 8) ud.config.ScreenBPP = 32; #ifdef POLYMER SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "Polymer", &dummy); if (dummy > 0 && ud.config.ScreenBPP >= 16) glrendmode = REND_POLYMER; else glrendmode = REND_POLYMOST; #endif /* SCRIPT_GetNumber(ud.config.scripthandle, "Misc", "Color",&ud.color); G_CheckPlayerColor((int32_t *)&ud.color,-1); g_player[0].ps->palookup = g_player[0].pcolor = ud.color; tempbuf[0] = 0; */ SCRIPT_GetNumber(ud.config.scripthandle, "Misc", "Executions",&ud.executions); #ifdef _WIN32 SCRIPT_GetNumber(ud.config.scripthandle, "Updates", "CheckForUpdates", &ud.config.CheckForUpdates); SCRIPT_GetNumber(ud.config.scripthandle, "Updates", "LastUpdateCheck", &ud.config.LastUpdateCheck); #endif } //CONFIG_SetupMouse(ud.config.scripthandle); //CONFIG_SetupJoystick(ud.config.scripthandle); ud.config.setupread = 1; return 0; }
int32_t startwin_run(void) { MSG msg; if (!startupdlg) return 1; done = -1; #ifdef JFAUD EnumAudioDevs(&wavedevs, NULL, NULL); #endif SetPage(TAB_CONFIG); EnableConfig(1); settings.flags = 0; if (ud.config.ScreenMode) settings.flags |= 1; #ifdef POLYMER if (glrendmode == REND_POLYMER) settings.flags |= 2; #endif if (ud.config.NoAutoLoad) settings.flags |= 4; settings.xdim = ud.config.ScreenWidth; settings.ydim = ud.config.ScreenHeight; settings.bpp = ud.config.ScreenBPP; settings.forcesetup = ud.config.ForceSetup; settings.usemouse = ud.config.UseMouse; settings.usejoy = ud.config.UseJoystick; settings.game = g_gameType; // settings.crcval = 0; Bstrncpyz(settings.selectedgrp, G_GrpFile(), BMAX_PATH); settings.gamedir = g_modDir; PopulateForm(-1); while (done < 0) { switch (GetMessage(&msg, NULL, 0,0)) { case 0: done = 1; break; case -1: return -1; default: if (IsWindow(startupdlg) && IsDialogMessage(startupdlg, &msg)) break; TranslateMessage(&msg); DispatchMessage(&msg); break; } } SetPage(TAB_MESSAGES); EnableConfig(0); if (done) { ud.config.ScreenMode = (settings.flags&1); #ifdef POLYMER if (settings.flags & 2) glrendmode = REND_POLYMER; else glrendmode = REND_POLYMOST; #endif if (settings.flags & 4) ud.config.NoAutoLoad = 1; else ud.config.NoAutoLoad = 0; ud.config.ScreenWidth = settings.xdim; ud.config.ScreenHeight = settings.ydim; ud.config.ScreenBPP = settings.bpp; ud.config.ForceSetup = settings.forcesetup; ud.config.UseMouse = settings.usemouse; ud.config.UseJoystick = settings.usejoy; clearGrpNamePtr(); g_grpNamePtr = dup_filename(settings.selectedgrp); g_gameType = settings.game; if (g_noSetup == 0 && settings.gamedir != NULL) Bstrcpy(g_modDir,settings.gamedir); else Bsprintf(g_modDir,"/"); { struct grpfile *grp; for (grp = listgrps; grp; grp=grp->next) if (settings.crcval == grp->crcval) break; if (grp) { g_gameNamePtr = grp->name; g_dependencyCRC = grp->dependency; if (grp->scriptname && g_scriptNamePtr == NULL) g_scriptNamePtr = dup_filename(grp->scriptname); if (grp->defname && g_defNamePtr == NULL) g_defNamePtr = dup_filename(grp->defname); } } } if (wavedevs) { struct audioenumdev *d, *e; Bfree(wavedevs->drvs); for (e=wavedevs->devs; e; e=d) { d = e->next; if (e->devs) Bfree(e->devs); Bfree(e); } Bfree(wavedevs); } return done; }
static void PopulateForm(int32_t pgs) { HWND hwnd; char buf[512]; int32_t i,j; if (pgs & POPULATE_GAMEDIRS) { CACHE1D_FIND_REC *dirs = NULL; hwnd = GetDlgItem(pages[TAB_CONFIG], IDCGAMEDIR); getfilenames("/"); (void)ComboBox_ResetContent(hwnd); j = ComboBox_AddString(hwnd, "None"); (void)ComboBox_SetItemData(hwnd, j, 0); (void)ComboBox_SetCurSel(hwnd, j); for (dirs=finddirs,i=1; dirs != NULL; dirs=dirs->next,i++) { (void)ComboBox_AddString(hwnd, dirs->name); (void)ComboBox_SetItemData(hwnd, i, i); if (Bstrcasecmp(dirs->name,settings.gamedir) == 0) (void)ComboBox_SetCurSel(hwnd, i); } } if (pgs & POPULATE_VIDEO) { int32_t mode; hwnd = GetDlgItem(pages[TAB_CONFIG], IDCVMODE); mode = checkvideomode(&settings.xdim, &settings.ydim, settings.bpp, settings.flags&1, 1); if (mode < 0 || (settings.bpp < 15 && (settings.flags & 2))) { int32_t cd[] = { 32, 24, 16, 15, 8, 0 }; for (i=0; cd[i];) { if (cd[i] >= settings.bpp) i++; else break; } for (; cd[i]; i++) { mode = checkvideomode(&settings.xdim, &settings.ydim, cd[i], settings.flags&1, 1); if (mode < 0) continue; settings.bpp = cd[i]; break; } } Button_SetCheck(GetDlgItem(pages[TAB_CONFIG], IDCFULLSCREEN), ((settings.flags&1) ? BST_CHECKED : BST_UNCHECKED)); Button_SetCheck(GetDlgItem(pages[TAB_CONFIG], IDCPOLYMER), ((settings.flags&2) ? BST_CHECKED : BST_UNCHECKED)); (void)ComboBox_ResetContent(hwnd); for (i=0; i<validmodecnt; i++) { if (validmode[i].fs != (settings.flags & 1)) continue; if ((validmode[i].bpp < 15) && (settings.flags & 2)) continue; // all modes get added to the 3D mode list Bsprintf(buf, "%d x %d %dbpp", validmode[i].xdim, validmode[i].ydim, validmode[i].bpp); j = ComboBox_AddString(hwnd, buf); (void)ComboBox_SetItemData(hwnd, j, i); if (i == mode)(void)ComboBox_SetCurSel(hwnd, j); } } if (pgs & POPULATE_CONFIG) { #if 0 struct audioenumdev *d; char *n; hwnd = GetDlgItem(pages[TAB_CONFIG], IDCSOUNDDRV); (void)ComboBox_ResetContent(hwnd); if (wavedevs) { d = wavedevs->devs; for (i=0; wavedevs->drvs[i]; i++) { strcpy(buf, wavedevs->drvs[i]); if (d->devs) { strcat(buf, ":"); n = buf + strlen(buf); for (j=0; d->devs[j]; j++) { strcpy(n, d->devs[j]); (void)ComboBox_AddString(hwnd, buf); } } else { (void)ComboBox_AddString(hwnd, buf); } d = d->next; } } #endif Button_SetCheck(GetDlgItem(pages[TAB_CONFIG], IDCALWAYSSHOW), (settings.forcesetup ? BST_CHECKED : BST_UNCHECKED)); Button_SetCheck(GetDlgItem(pages[TAB_CONFIG], IDCAUTOLOAD), (!(settings.flags & 4) ? BST_CHECKED : BST_UNCHECKED)); hwnd = GetDlgItem(pages[TAB_CONFIG], IDCINPUT); (void)ComboBox_ResetContent(hwnd); (void)ComboBox_SetCurSel(hwnd, 0); j = 4; #ifdef RENDERTYPEWIN if (di_disabled) j = 2; #endif for (i=0; i<j; i++) { (void)ComboBox_InsertString(hwnd, i, controlstrings[i]); (void)ComboBox_SetItemData(hwnd, i, i); switch (i) { case INPUT_MOUSE: if (settings.usemouse && !settings.usejoy)(void)ComboBox_SetCurSel(hwnd, i); break; case INPUT_JOYSTICK: if (!settings.usemouse && settings.usejoy)(void)ComboBox_SetCurSel(hwnd, i); break; case INPUT_ALL: if (settings.usemouse && settings.usejoy)(void)ComboBox_SetCurSel(hwnd, i); break; } } } if (pgs & POPULATE_GAME) { struct grpfile *fg; int32_t j; char buf[1024]; hwnd = GetDlgItem(pages[TAB_CONFIG], IDCDATA); for (fg = foundgrps; fg; fg=fg->next) { struct grpfile *grp; for (grp = listgrps; grp; grp=grp->next) if (fg->crcval == grp->crcval) break; if (grp == NULL) continue; Bsprintf(buf, "%s\t%s", grp->name, fg->name); j = ListBox_AddString(hwnd, buf); (void)ListBox_SetItemData(hwnd, j, (LPARAM)fg); if (!Bstrcasecmp(fg->name, settings.selectedgrp)) { (void)ListBox_SetCurSel(hwnd, j); settings.game = fg->game; settings.crcval = fg->crcval; } } } }
static void PopulateForm(int pgs) { HWND hwnd; char buf[256]; int i,j; if (pgs & POPULATE_VIDEO) { int mode; hwnd = GetDlgItem(pages[TAB_CONFIG], IDCVMODE); mode = checkvideomode(&settings.xdim, &settings.ydim, settings.bpp, settings.fullscreen, 1); if (mode < 0) { int cd[] = { 32, 24, 16, 15, 8, 0 }; for (i=0; cd[i]; ) { if (cd[i] >= settings.bpp) i++; else break; } for ( ; cd[i]; i++) { mode = checkvideomode(&settings.xdim, &settings.ydim, cd[i], settings.fullscreen, 1); if (mode < 0) continue; settings.bpp = cd[i]; break; } } Button_SetCheck(GetDlgItem(pages[TAB_CONFIG], IDCFULLSCREEN), (settings.fullscreen ? BST_CHECKED : BST_UNCHECKED)); ComboBox_ResetContent(hwnd); for (i=0; i<validmodecnt; i++) { if (validmode[i].fs != settings.fullscreen) continue; // all modes get added to the 3D mode list Bsprintf(buf, "%d x %d %dbpp", validmode[i].xdim, validmode[i].ydim, validmode[i].bpp); j = ComboBox_AddString(hwnd, buf); ComboBox_SetItemData(hwnd, j, i); if (i == mode) ComboBox_SetCurSel(hwnd, j); } } if (pgs & POPULATE_CONFIG) { int curidx = -1; Button_SetCheck(GetDlgItem(pages[TAB_CONFIG], IDCALWAYSSHOW), (settings.forcesetup ? BST_CHECKED : BST_UNCHECKED)); Button_SetCheck(GetDlgItem(pages[TAB_CONFIG], IDCINPUTMOUSE), (settings.usemouse ? BST_CHECKED : BST_UNCHECKED)); Button_SetCheck(GetDlgItem(pages[TAB_CONFIG], IDCINPUTJOY), (settings.usejoy ? BST_CHECKED : BST_UNCHECKED)); hwnd = GetDlgItem(pages[TAB_CONFIG], IDCSOUNDQUAL); ComboBox_ResetContent(hwnd); for (i = 0; soundQualities[i].frequency > 0; i++) { j = addSoundQualityItem(&soundQualities[i], hwnd); ComboBox_SetItemData(hwnd, j, i); if (soundQualities[i].frequency == settings.samplerate && soundQualities[i].samplesize == settings.bitspersample && soundQualities[i].channels == settings.channels) { ComboBox_SetCurSel(hwnd, j); } } if (curidx < 0) { soundQualities[i].frequency = settings.samplerate; soundQualities[i].samplesize = settings.bitspersample; soundQualities[i].channels = settings.channels; j = addSoundQualityItem(&soundQualities[i], hwnd); ComboBox_SetItemData(hwnd, j, i); i++; soundQualities[i].frequency = -1; } } if (pgs & POPULATE_GAME) { struct grpfile *fg; int i, j; char buf[128+BMAX_PATH]; hwnd = GetDlgItem(pages[TAB_GAME], IDGDATA); for (fg = foundgrps; fg; fg=fg->next) { for (i = 0; i<numgrpfiles; i++) if (fg->crcval == grpfiles[i].crcval) break; if (i == numgrpfiles) continue; // unrecognised grp file Bsprintf(buf, "%s\t%s", grpfiles[i].name, fg->name); j = ListBox_AddString(hwnd, buf); ListBox_SetItemData(hwnd, j, (LPARAM)fg); if (!Bstrcasecmp(fg->name, settings.selectedgrp)) ListBox_SetCurSel(hwnd, j); } } }
void CONFIG_WriteSetup(uint32_t flags) { int32_t dummy; if (!ud.config.setupread) return; if (ud.config.scripthandle < 0) ud.config.scripthandle = SCRIPT_Init(setupfilename); SCRIPT_PutNumber(ud.config.scripthandle, "Misc", "Executions",++ud.executions,FALSE,FALSE); SCRIPT_PutNumber(ud.config.scripthandle, "Setup","ConfigVersion",BYTEVERSION_JF,FALSE,FALSE); SCRIPT_PutNumber(ud.config.scripthandle, "Setup", "ForceSetup",ud.config.ForceSetup,FALSE,FALSE); SCRIPT_PutNumber(ud.config.scripthandle, "Setup", "NoAutoLoad",ud.config.NoAutoLoad,FALSE,FALSE); #ifdef POLYMER SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "Polymer",glrendmode == REND_POLYMER,FALSE,FALSE); #endif SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "ScreenBPP",ud.config.ScreenBPP,FALSE,FALSE); // JBF 20040523 SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "ScreenHeight",ud.config.ScreenHeight,FALSE,FALSE); // JBF 20031206 SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "ScreenMode",ud.config.ScreenMode,FALSE,FALSE); // JBF 20031206 SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "ScreenWidth",ud.config.ScreenWidth,FALSE,FALSE); // JBF 20031206 if (g_grpNamePtr && !g_usingAddon) SCRIPT_PutString(ud.config.scripthandle, "Setup","SelectedGRP",g_grpNamePtr); // XXX: should be "if compiled without startup GUI" #if !defined __linux || defined HAVE_GTK2 if (g_noSetup == 0) SCRIPT_PutString(ud.config.scripthandle, "Setup","ModDir",&g_modDir[0]); #endif // exit early after only updating the values that can be changed from the startup window if (flags & 1) { SCRIPT_Save(ud.config.scripthandle, setupfilename); SCRIPT_Free(ud.config.scripthandle); OSD_Printf("Updated %s\n",setupfilename); return; } SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "WindowPositioning", windowpos, FALSE, FALSE); SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "WindowPosX", windowx, FALSE, FALSE); SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "WindowPosY", windowy, FALSE, FALSE); #ifdef RENDERTYPEWIN SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "MaxRefreshFreq", maxrefreshfreq, FALSE, FALSE); #endif if (!NAM) { SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "Out",ud.lockout,FALSE,FALSE); SCRIPT_PutString(ud.config.scripthandle, "Screen Setup", "Password",ud.pwlockout); } #ifdef _WIN32 SCRIPT_PutNumber(ud.config.scripthandle, "Updates", "CheckForUpdates", ud.config.CheckForUpdates, FALSE, FALSE); SCRIPT_PutNumber(ud.config.scripthandle, "Updates", "LastUpdateCheck", ud.config.LastUpdateCheck, FALSE, FALSE); #endif if (ud.config.UseMouse) { for (dummy=0; dummy<MAXMOUSEBUTTONS; dummy++) { if (CONFIG_FunctionNumToName(ud.config.MouseFunctions[dummy][0])) { Bsprintf(buf, "MouseButton%d", dummy); SCRIPT_PutString(ud.config.scripthandle, "Controls", buf, CONFIG_FunctionNumToName(ud.config.MouseFunctions[dummy][0])); } if (dummy >= (MAXMOUSEBUTTONS-2)) continue; if (CONFIG_FunctionNumToName(ud.config.MouseFunctions[dummy][1])) { Bsprintf(buf, "MouseButtonClicked%d", dummy); SCRIPT_PutString(ud.config.scripthandle, "Controls", buf, CONFIG_FunctionNumToName(ud.config.MouseFunctions[dummy][1])); } } for (dummy=0; dummy<MAXMOUSEAXES; dummy++) { if (CONFIG_AnalogNumToName(ud.config.MouseAnalogueAxes[dummy])) { Bsprintf(buf, "MouseAnalogAxes%d", dummy); SCRIPT_PutString(ud.config.scripthandle, "Controls", buf, CONFIG_AnalogNumToName(ud.config.MouseAnalogueAxes[dummy])); } if (CONFIG_FunctionNumToName(ud.config.MouseDigitalFunctions[dummy][0])) { Bsprintf(buf, "MouseDigitalAxes%d_0", dummy); SCRIPT_PutString(ud.config.scripthandle, "Controls", buf, CONFIG_FunctionNumToName(ud.config.MouseDigitalFunctions[dummy][0])); } if (CONFIG_FunctionNumToName(ud.config.MouseDigitalFunctions[dummy][1])) { Bsprintf(buf, "MouseDigitalAxes%d_1", dummy); SCRIPT_PutString(ud.config.scripthandle, "Controls", buf, CONFIG_FunctionNumToName(ud.config.MouseDigitalFunctions[dummy][1])); } if (ud.config.MouseAnalogueScale[dummy] != DEFAULTMOUSEANALOGUESCALE) { Bsprintf(buf, "MouseAnalogScale%d", dummy); SCRIPT_PutNumber(ud.config.scripthandle, "Controls", buf, ud.config.MouseAnalogueScale[dummy], FALSE, FALSE); } } } if (ud.config.UseJoystick) { for (dummy=0; dummy<MAXJOYBUTTONSANDHATS; dummy++) { if (CONFIG_FunctionNumToName(ud.config.JoystickFunctions[dummy][0])) { Bsprintf(buf, "JoystickButton%d", dummy); SCRIPT_PutString(ud.config.scripthandle, "Controls", buf, CONFIG_FunctionNumToName(ud.config.JoystickFunctions[dummy][0])); } if (CONFIG_FunctionNumToName(ud.config.JoystickFunctions[dummy][1])) { Bsprintf(buf, "JoystickButtonClicked%d", dummy); SCRIPT_PutString(ud.config.scripthandle, "Controls", buf, CONFIG_FunctionNumToName(ud.config.JoystickFunctions[dummy][1])); } } for (dummy=0; dummy<MAXJOYAXES; dummy++) { if (CONFIG_AnalogNumToName(ud.config.JoystickAnalogueAxes[dummy])) { Bsprintf(buf, "JoystickAnalogAxes%d", dummy); SCRIPT_PutString(ud.config.scripthandle, "Controls", buf, CONFIG_AnalogNumToName(ud.config.JoystickAnalogueAxes[dummy])); } if (CONFIG_FunctionNumToName(ud.config.JoystickDigitalFunctions[dummy][0])) { Bsprintf(buf, "JoystickDigitalAxes%d_0", dummy); SCRIPT_PutString(ud.config.scripthandle, "Controls", buf, CONFIG_FunctionNumToName(ud.config.JoystickDigitalFunctions[dummy][0])); } if (CONFIG_FunctionNumToName(ud.config.JoystickDigitalFunctions[dummy][1])) { Bsprintf(buf, "JoystickDigitalAxes%d_1", dummy); SCRIPT_PutString(ud.config.scripthandle, "Controls", buf, CONFIG_FunctionNumToName(ud.config.JoystickDigitalFunctions[dummy][1])); } if (ud.config.JoystickAnalogueScale[dummy] != DEFAULTJOYSTICKANALOGUESCALE) { Bsprintf(buf, "JoystickAnalogScale%d", dummy); SCRIPT_PutNumber(ud.config.scripthandle, "Controls", buf, ud.config.JoystickAnalogueScale[dummy], FALSE, FALSE); } if (ud.config.JoystickAnalogueDead[dummy] != DEFAULTJOYSTICKANALOGUEDEAD) { Bsprintf(buf, "JoystickAnalogDead%d", dummy); SCRIPT_PutNumber(ud.config.scripthandle, "Controls", buf, ud.config.JoystickAnalogueDead[dummy], FALSE, FALSE); } if (ud.config.JoystickAnalogueSaturate[dummy] != DEFAULTJOYSTICKANALOGUESATURATE) { Bsprintf(buf, "JoystickAnalogSaturate%d", dummy); SCRIPT_PutNumber(ud.config.scripthandle, "Controls", buf, ud.config.JoystickAnalogueSaturate[dummy], FALSE, FALSE); } } } SCRIPT_PutString(ud.config.scripthandle, "Comm Setup","PlayerName",&szPlayerName[0]); if (g_rtsNamePtr == NULL) SCRIPT_PutString(ud.config.scripthandle, "Comm Setup","RTSName",&ud.rtsname[0]); char commmacro[] = "CommbatMacro# "; for (dummy = 0; dummy < MAXRIDECULE; dummy++) { commmacro[13] = dummy+'0'; SCRIPT_PutString(ud.config.scripthandle, "Comm Setup",commmacro,&ud.ridecule[dummy][0]); } SCRIPT_Save(ud.config.scripthandle, setupfilename); if ((flags & 2) == 0) SCRIPT_Free(ud.config.scripthandle); OSD_Printf("Wrote %s\n",setupfilename); CONFIG_WriteSettings(); Bfflush(NULL); }
void CONFIG_SetupJoystick( void ) { int32 i; char str[80],*p; char temp[80]; int32 function, scale; if (scripthandle < 0) return; for (i=0;i<MAXJOYBUTTONS;i++) { Bsprintf(str,"JoystickButton%ld",i); temp[0] = 0; if (!SCRIPT_GetString( scripthandle,"Controls", str,temp)) JoystickFunctions[i][0] = CONFIG_FunctionNameToNum(temp); Bsprintf(str,"JoystickButtonClicked%ld",i); temp[0] = 0; if (!SCRIPT_GetString( scripthandle,"Controls", str,temp)) JoystickFunctions[i][1] = CONFIG_FunctionNameToNum(temp); } // map over the axes for (i=0;i<MAXJOYAXES;i++) { Bsprintf(str,"JoystickAnalogAxes%ld",i); temp[0] = 0; if (!SCRIPT_GetString(scripthandle, "Controls", str,temp)) JoystickAnalogueAxes[i] = CONFIG_AnalogNameToNum(temp); Bsprintf(str,"JoystickDigitalAxes%ld_0",i); temp[0] = 0; if (!SCRIPT_GetString(scripthandle, "Controls", str,temp)) JoystickDigitalFunctions[i][0] = CONFIG_FunctionNameToNum(temp); Bsprintf(str,"JoystickDigitalAxes%ld_1",i); temp[0] = 0; if (!SCRIPT_GetString(scripthandle, "Controls", str,temp)) JoystickDigitalFunctions[i][1] = CONFIG_FunctionNameToNum(temp); Bsprintf(str,"JoystickAnalogScale%ld",i); scale = JoystickAnalogueScale[i]; SCRIPT_GetNumber(scripthandle, "Controls", str,&scale); JoystickAnalogueScale[i] = scale; Bsprintf(str,"JoystickAnalogDead%ld",i); scale = JoystickAnalogueDead[i]; SCRIPT_GetNumber(scripthandle, "Controls", str,&scale); JoystickAnalogueDead[i] = scale; Bsprintf(str,"JoystickAnalogSaturate%ld",i); scale = JoystickAnalogueSaturate[i]; SCRIPT_GetNumber(scripthandle, "Controls", str,&scale); JoystickAnalogueSaturate[i] = scale; } for (i=0;i<MAXJOYBUTTONS;i++) { CONTROL_MapButton( JoystickFunctions[i][0], i, FALSE, controldevice_joystick ); CONTROL_MapButton( JoystickFunctions[i][1], i, TRUE, controldevice_joystick ); } for (i=0;i<MAXJOYAXES;i++) { CONTROL_MapAnalogAxis(i, JoystickAnalogueAxes[i], controldevice_joystick); CONTROL_MapDigitalAxis( i, JoystickDigitalFunctions[i][0], 0, controldevice_joystick ); CONTROL_MapDigitalAxis( i, JoystickDigitalFunctions[i][1], 1, controldevice_joystick ); CONTROL_SetAnalogAxisScale( i, JoystickAnalogueScale[i], controldevice_joystick ); } }
int32 CONFIG_ReadSetup( void ) { int32 dummy,i; char commmacro[] = "CommbatMacro# "; extern int32 CommandWeaponChoice; dnInitKeyNames(); CONTROL_ClearAssignments(); CONFIG_SetDefaults(); setupread = 1; if (SafeFileExists(localsetupfilename)) { scripthandle = SCRIPT_Load(localsetupfilename); if (scripthandle >= 0) { SCRIPT_GetNumber( scripthandle, "Screen Setup", "Shadows",&ud.shadows); SCRIPT_GetString( scripthandle, "Screen Setup", "Password",&ud.pwlockout[0]); SCRIPT_GetNumber( scripthandle, "Screen Setup", "Detail",&ud.detail); SCRIPT_GetNumber( scripthandle, "Screen Setup", "Tilt",&ud.screen_tilting); SCRIPT_GetNumber( scripthandle, "Screen Setup", "Messages",&ud.fta_on); SCRIPT_GetNumber( scripthandle, "Screen Setup", "ScreenWidth",&ScreenWidth); SCRIPT_GetNumber( scripthandle, "Screen Setup", "ScreenHeight",&ScreenHeight); SCRIPT_GetNumber( scripthandle, "Screen Setup", "ScreenMode",&ScreenMode); SCRIPT_GetNumber( scripthandle, "Screen Setup", "ScreenGamma",&ud.brightness); SCRIPT_GetNumber( scripthandle, "Screen Setup", "ScreenSize",&ud.screen_size); SCRIPT_GetNumber( scripthandle, "Screen Setup", "Out",&ud.lockout); SCRIPT_GetNumber( scripthandle, "Screen Setup", "ScreenBPP", &ScreenBPP); SCRIPT_GetBoolean( scripthandle, "Screen Setup", "VerticalSync", &ud.vsync); SCRIPT_GetNumber( scripthandle, "Screen Setup", "MaxFPS", &ud.fps_max); if (ScreenBPP < 24) ScreenBPP = 24; #ifdef RENDERTYPEWIN SCRIPT_GetNumber( scripthandle, "Screen Setup", "MaxRefreshFreq", (int32*)&maxrefreshfreq); #endif SCRIPT_GetNumber( scripthandle, "Screen Setup", "GLTextureMode", &gltexfiltermode); SCRIPT_GetNumber( scripthandle, "Screen Setup", "GLAnisotropy", &glanisotropy); SCRIPT_GetNumber( scripthandle, "Screen Setup", "GLUseTextureCompr", &glusetexcompr); SCRIPT_GetNumber( scripthandle, "Screen Setup", "GLUseCompressedTextureCache", &glusetexcache); } } if (SafeFileExists(setupfilename)) // JBF 20031211 scripthandle = SCRIPT_Load( setupfilename ); if (scripthandle < 0) return -1; for(dummy = 0;dummy < 10;dummy++) { commmacro[13] = dummy+'0'; SCRIPT_GetString( scripthandle, "Comm Setup",commmacro,&ud.ridecule[dummy][0]); } SCRIPT_GetString( scripthandle, "Comm Setup","PlayerName",&myname[0]); SCRIPT_GetString( scripthandle, "Comm Setup","RTSName",&ud.rtsname[0]); SCRIPT_GetNumber( scripthandle, "Setup", "ForceSetup",&ForceSetup); SCRIPT_GetNumber( scripthandle, "Misc", "Executions",&ud.executions); ud.executions++; SCRIPT_GetNumber( scripthandle, "Misc", "RunMode",&RunMode); SCRIPT_GetNumber( scripthandle, "Misc", "Crosshairs",&ud.crosshair); SCRIPT_GetNumber( scripthandle, "Misc", "StatusBarScale",&ud.statusbarscale); SCRIPT_GetNumber( scripthandle, "Misc", "ShowLevelStats",&ud.levelstats); SCRIPT_GetNumber( scripthandle, "Misc", "ShowOpponentWeapons",&ShowOpponentWeapons); dummy = useprecache; SCRIPT_GetNumber( scripthandle, "Misc", "UsePrecache",&dummy); useprecache = dummy != 0; // weapon choices are defaulted in checkcommandline, which may override them if (!CommandWeaponChoice) for(i=0;i<10;i++) { Bsprintf(buf,"WeaponChoice%ld",i); dummy = -1; SCRIPT_GetNumber( scripthandle, "Misc", buf, &dummy); if (dummy >= 0) ud.wchoice[0][i] = dummy; } SCRIPT_GetNumber( scripthandle, "Sound Setup", "FXDevice",&FXDevice); SCRIPT_GetNumber( scripthandle, "Sound Setup", "MusicDevice",&MusicDevice); SCRIPT_GetNumber( scripthandle, "Sound Setup", "FXVolume",&FXVolume); SCRIPT_GetNumber( scripthandle, "Sound Setup", "MusicVolume",&MusicVolume); SCRIPT_GetNumber( scripthandle, "Sound Setup", "SoundToggle",&SoundToggle); SCRIPT_GetNumber( scripthandle, "Sound Setup", "MusicToggle",&MusicToggle); SCRIPT_GetNumber( scripthandle, "Sound Setup", "VoiceToggle",&VoiceToggle); SCRIPT_GetNumber( scripthandle, "Sound Setup", "AmbienceToggle",&AmbienceToggle); SCRIPT_GetNumber( scripthandle, "Sound Setup", "NumVoices",&NumVoices); SCRIPT_GetNumber( scripthandle, "Sound Setup", "NumChannels",&NumChannels); SCRIPT_GetNumber( scripthandle, "Sound Setup", "NumBits",&NumBits); SCRIPT_GetNumber( scripthandle, "Sound Setup", "MixRate",&MixRate); SCRIPT_GetNumber( scripthandle, "Sound Setup", "ReverseStereo",&ReverseStereo); SCRIPT_GetNumber( scripthandle, "Controls","UseJoystick",&UseJoystick); SCRIPT_GetNumber( scripthandle, "Controls","UseMouse",&UseMouse); SCRIPT_GetNumber( scripthandle, "Controls","MouseAimingFlipped",&ud.mouseflip); // mouse aiming inverted SCRIPT_GetNumber( scripthandle, "Controls","MouseAiming",&ud.mouseaiming); // 1=momentary/0=toggle //SCRIPT_GetNumber( scripthandle, "Controls","GameMouseAiming",(int32 *)&ps[0].aim_mode); // dupe of below (?) ps[0].aim_mode = ud.mouseaiming; SCRIPT_GetNumber( scripthandle, "Controls","AimingFlag",(int32 *)&myaimmode); // (if toggle mode) gives state SCRIPT_GetNumber( scripthandle, "Controls","RunKeyBehaviour",&ud.runkey_mode); // JBF 20031125 SCRIPT_GetNumber( scripthandle, "Controls","AutoAim",&AutoAim); // JBF 20031125 ps[0].auto_aim = AutoAim; SCRIPT_GetNumber( scripthandle, "Controls","WeaponSwitchMode",&ud.weaponswitch); CONFIG_ReadKeys(); //CONFIG_SetupMouse(scripthandle); //CONFIG_SetupJoystick(scripthandle); return 0; }
void CONFIG_WriteSetup( void ) { int32 dummy; char buf[80]; if (scripthandle < 0) scripthandle = SCRIPT_Init(setupfilename); SCRIPT_PutNumber( scripthandle, "Screen Setup", "ScreenWidth", ScreenWidth,FALSE,FALSE); SCRIPT_PutNumber( scripthandle, "Screen Setup", "ScreenHeight",ScreenHeight,FALSE,FALSE); SCRIPT_PutNumber( scripthandle, "Screen Setup", "ScreenMode",ScreenMode,FALSE,FALSE); SCRIPT_PutNumber( scripthandle, "Screen Setup", "ScreenBPP",ScreenBPP,FALSE,FALSE); #ifdef RENDERTYPEWIN SCRIPT_PutNumber( scripthandle, "Screen Setup", "MaxRefreshFreq",maxrefreshfreq,FALSE,FALSE); #endif SCRIPT_PutNumber( scripthandle, "Screen Setup", "GLTextureMode",gltexfiltermode,FALSE,FALSE); SCRIPT_PutNumber( scripthandle, "Screen Setup", "GLAnisotropy",glanisotropy,FALSE,FALSE); SCRIPT_PutNumber( scripthandle, "Screen Setup", "GLUseTextureCompr",glusetexcompr,FALSE,FALSE); SCRIPT_PutNumber( scripthandle, "Sound Setup", "FXDevice", FXDevice, FALSE, FALSE); SCRIPT_PutNumber( scripthandle, "Sound Setup", "MusicDevice", MusicDevice, FALSE, FALSE); SCRIPT_PutNumber( scripthandle, "Sound Setup", "NumVoices", NumVoices, FALSE, FALSE); SCRIPT_PutNumber( scripthandle, "Sound Setup", "NumChannels", NumChannels, FALSE, FALSE); SCRIPT_PutNumber( scripthandle, "Sound Setup", "NumBits", NumBits, FALSE, FALSE); SCRIPT_PutNumber( scripthandle, "Sound Setup", "MixRate", MixRate, FALSE, FALSE); SCRIPT_PutNumber( scripthandle, "Sound Setup", "FXVolume",gs.SoundVolume,FALSE,FALSE); SCRIPT_PutNumber( scripthandle, "Sound Setup", "MusicVolume",gs.MusicVolume,FALSE,FALSE); dummy = gs.FlipStereo; SCRIPT_PutNumber( scripthandle, "Sound Setup", "ReverseStereo",dummy,FALSE,FALSE); SCRIPT_PutNumber( scripthandle, "Setup", "ForceSetup",ForceSetup,FALSE,FALSE); SCRIPT_PutNumber( scripthandle, "Controls","UseMouse",UseMouse,FALSE,FALSE); SCRIPT_PutNumber( scripthandle, "Controls","UseJoystick",UseJoystick,FALSE,FALSE); SCRIPT_PutNumber( scripthandle, "Controls","MouseSensitivity",gs.MouseSpeed,FALSE,FALSE); WriteGameSetup(scripthandle); for (dummy=0;dummy<NUMGAMEFUNCTIONS;dummy++) { SCRIPT_PutDoubleString( scripthandle, "KeyDefinitions", CONFIG_FunctionNumToName(dummy), KB_ScanCodeToString(KeyboardKeys[dummy][0]), KB_ScanCodeToString(KeyboardKeys[dummy][1])); } for (dummy=0;dummy<MAXMOUSEBUTTONS;dummy++) { Bsprintf(buf,"MouseButton%ld",dummy); SCRIPT_PutString( scripthandle,"Controls", buf, CONFIG_FunctionNumToName( MouseFunctions[dummy][0] )); if (dummy >= (MAXMOUSEBUTTONS-2)) continue; // scroll wheel Bsprintf(buf,"MouseButtonClicked%ld",dummy); SCRIPT_PutString( scripthandle,"Controls", buf, CONFIG_FunctionNumToName( MouseFunctions[dummy][1] )); } for (dummy=0;dummy<MAXMOUSEAXES;dummy++) { Bsprintf(buf,"MouseAnalogAxes%ld",dummy); SCRIPT_PutString(scripthandle, "Controls", buf, CONFIG_AnalogNumToName( MouseAnalogueAxes[dummy] )); Bsprintf(buf,"MouseDigitalAxes%ld_0",dummy); SCRIPT_PutString(scripthandle, "Controls", buf, CONFIG_FunctionNumToName(MouseDigitalFunctions[dummy][0])); Bsprintf(buf,"MouseDigitalAxes%ld_1",dummy); SCRIPT_PutString(scripthandle, "Controls", buf, CONFIG_FunctionNumToName(MouseDigitalFunctions[dummy][1])); Bsprintf(buf,"MouseAnalogScale%ld",dummy); SCRIPT_PutNumber(scripthandle, "Controls", buf, MouseAnalogueScale[dummy], FALSE, FALSE); } for (dummy=0;dummy<MAXJOYBUTTONS;dummy++) { Bsprintf(buf,"JoystickButton%ld",dummy); SCRIPT_PutString( scripthandle,"Controls", buf, CONFIG_FunctionNumToName( JoystickFunctions[dummy][0] )); Bsprintf(buf,"JoystickButtonClicked%ld",dummy); SCRIPT_PutString( scripthandle,"Controls", buf, CONFIG_FunctionNumToName( JoystickFunctions[dummy][1] )); } for (dummy=0;dummy<MAXJOYAXES;dummy++) { Bsprintf(buf,"JoystickAnalogAxes%ld",dummy); SCRIPT_PutString(scripthandle, "Controls", buf, CONFIG_AnalogNumToName( JoystickAnalogueAxes[dummy] )); Bsprintf(buf,"JoystickDigitalAxes%ld_0",dummy); SCRIPT_PutString(scripthandle, "Controls", buf, CONFIG_FunctionNumToName(JoystickDigitalFunctions[dummy][0])); Bsprintf(buf,"JoystickDigitalAxes%ld_1",dummy); SCRIPT_PutString(scripthandle, "Controls", buf, CONFIG_FunctionNumToName(JoystickDigitalFunctions[dummy][1])); Bsprintf(buf,"JoystickAnalogScale%ld",dummy); SCRIPT_PutNumber(scripthandle, "Controls", buf, JoystickAnalogueScale[dummy], FALSE, FALSE); Bsprintf(buf,"JoystickAnalogDead%ld",dummy); SCRIPT_PutNumber(scripthandle, "Controls", buf, JoystickAnalogueDead[dummy], FALSE, FALSE); Bsprintf(buf,"JoystickAnalogSaturate%ld",dummy); SCRIPT_PutNumber(scripthandle, "Controls", buf, JoystickAnalogueSaturate[dummy], FALSE, FALSE); } SCRIPT_Save (scripthandle, setupfilename); SCRIPT_Free (scripthandle); }
int32_t loadsetup(const char *fn) { BFILE *fp; #define VL 1024 char val[VL]; int32_t i; if ((fp = Bfopen(fn, "rt")) == NULL) return -1; if (readconfig(fp, "forcesetup", val, VL) > 0) { if (atoi_safe(val) != 0) forcesetup = 1; else forcesetup = 0; } if (readconfig(fp, "fullscreen", val, VL) > 0) { if (atoi_safe(val) != 0) fullscreen = 1; else fullscreen = 0; } if (readconfig(fp, "resolution", val, VL) > 0) { i = atoi_safe(val) & 0x0f; if ((unsigned)i<13) { xdimgame = xdim2d = vesares[i][0]; ydimgame = ydim2d = vesares[i][1]; } } if (readconfig(fp, "2dresolution", val, VL) > 0) { i = atoi_safe(val) & 0x0f; if ((unsigned)i<13) { xdim2d = vesares[i][0]; ydim2d = vesares[i][1]; } } if (readconfig(fp, "xdim2d", val, VL) > 0) xdim2d = atoi_safe(val); if (readconfig(fp, "ydim2d", val, VL) > 0) ydim2d = atoi_safe(val); if (readconfig(fp, "xdim3d", val, VL) > 0) xdimgame = atoi_safe(val); if (readconfig(fp, "ydim3d", val, VL) > 0) ydimgame = atoi_safe(val); // if (readconfig(fp, "samplerate", val, VL) > 0) option[7] = (atoi_safe(val) & 0x0f) << 4; // if (readconfig(fp, "music", val, VL) > 0) { if (atoi_safe(val) != 0) option[2] = 1; else option[2] = 0; } // if (readconfig(fp, "mouse", val, VL) > 0) { if (atoi_safe(val) != 0) option[3] = 1; else option[3] = 0; } if (readconfig(fp, "bpp", val, VL) > 0) bppgame = atoi_safe(val); if (readconfig(fp, "vsync", val, VL) > 0) vsync = !!atoi_safe(val); if (readconfig(fp, "editorgridextent", val, VL) > 0) { int32_t tmp = atoi_safe(val); editorgridextent = clamp(tmp, 65536, BXY_MAX); } if (readconfig(fp, "grid", val, VL) > 0) { grid = atoi_safe(val); default_grid = grid; autogrid = (grid==9); grid = clamp(grid, 0, 8); } #ifdef POLYMER if (readconfig(fp, "rendmode", val, VL) > 0) { i = atoi_safe(val); glrendmode = i; } #endif if (readconfig(fp, "vid_gamma", val, VL) > 0) vid_gamma = clampd(Bstrtod(val, NULL), 0.0, 10.0); if (readconfig(fp, "vid_brightness", val, VL) > 0) vid_brightness = clampd(Bstrtod(val, NULL), 0.0, 10.0); if (readconfig(fp, "vid_contrast", val, VL) > 0) vid_contrast = clampd(Bstrtod(val, NULL), 0.0, 10.0); #ifdef RENDERTYPEWIN if (readconfig(fp, "maxrefreshfreq", val, VL) > 0) maxrefreshfreq = atoi_safe(val); #endif #ifdef USE_OPENGL if (readconfig(fp, "usemodels", val, VL) > 0) usemodels = !!atoi_safe(val); if (readconfig(fp, "usehightile", val, VL) > 0) usehightile = !!atoi_safe(val); if (readconfig(fp, "lazytileselector", val, VL) > 0) g_lazy_tileselector = !!atoi_safe(val); glusetexcache = -1; if (readconfig(fp, "glusetexcache", val, VL) > 0) { glusetexcache = clamp(atoi_safe(val), 0, 2); } if (readconfig(fp, "glusememcache", val, VL) > 0) { glusememcache = !!atoi_safe(val); } if (readconfig(fp, "gltexfiltermode", val, VL) > 0) { gltexfiltermode = atoi_safe(val); } if (readconfig(fp, "glanisotropy", val, VL) > 0) { glanisotropy = atoi_safe(val); } if (readconfig(fp, "r_downsize", val, VL) > 0) { r_downsize = atoi_safe(val); r_downsize = clamp(r_downsize, 0, 5); r_downsizevar = r_downsize; } if (readconfig(fp, "r_texcompr", val, VL) > 0) glusetexcompr = !!atoi_safe(val); if (readconfig(fp, "r_shadescale", val, VL) > 0) shadescale = clampd(Bstrtod(val, NULL), 0.0, 10.0); if (readconfig(fp, "r_usenewshading", val, VL) > 0) r_usenewshading = clamp(atoi_safe(val), 0, 2); #endif if (readconfig(fp, "r_usenewaspect", val, VL) > 0) r_usenewaspect = !!atoi_safe(val); #ifndef RENDERTYPEWIN if (readconfig(fp, "r_screenxy", val, VL) > 0) { r_screenxy = clamp(atoi_safe(val), 0, 9999); if (r_screenxy/100==0 || r_screenxy%100==0) r_screenxy = 403; } #endif if (readconfig(fp, "gameexecutable", val, VL) > 0) Bstrcpy(game_executable, val); // option[0] = 1; // vesa all the way... // option[1] = 1; // sound all the way... // option[4] = 0; // no multiplayer // option[5] = 0; #if 1 if (readconfig(fp, "keyforward", val, VL) > 0) keys[0] = Bstrtol(val, NULL, 16); if (readconfig(fp, "keybackward", val, VL) > 0) keys[1] = Bstrtol(val, NULL, 16); if (readconfig(fp, "keyturnleft", val, VL) > 0) keys[2] = Bstrtol(val, NULL, 16); if (readconfig(fp, "keyturnright", val, VL) > 0) keys[3] = Bstrtol(val, NULL, 16); if (readconfig(fp, "keyrun", val, VL) > 0) keys[4] = Bstrtol(val, NULL, 16); if (readconfig(fp, "keystrafe", val, VL) > 0) keys[5] = Bstrtol(val, NULL, 16); if (readconfig(fp, "keyfire", val, VL) > 0) keys[6] = Bstrtol(val, NULL, 16); if (readconfig(fp, "keyuse", val, VL) > 0) keys[7] = Bstrtol(val, NULL, 16); if (readconfig(fp, "keystandhigh", val, VL) > 0) keys[8] = Bstrtol(val, NULL, 16); if (readconfig(fp, "keystandlow", val, VL) > 0) keys[9] = Bstrtol(val, NULL, 16); if (readconfig(fp, "keylookup", val, VL) > 0) keys[10] = Bstrtol(val, NULL, 16); if (readconfig(fp, "keylookdown", val, VL) > 0) keys[11] = Bstrtol(val, NULL, 16); if (readconfig(fp, "keystrafeleft", val, VL) > 0) keys[12] = Bstrtol(val, NULL, 16); if (readconfig(fp, "keystraferight", val, VL) > 0) keys[13] = Bstrtol(val, NULL, 16); if (readconfig(fp, "key2dmode", val, VL) > 0) keys[14] = Bstrtol(val, NULL, 16); if (readconfig(fp, "keyviewcycle", val, VL) > 0) keys[15] = Bstrtol(val, NULL, 16); if (readconfig(fp, "key2dzoomin", val, VL) > 0) keys[16] = Bstrtol(val, NULL, 16); if (readconfig(fp, "key2dzoomout", val, VL) > 0) keys[17] = Bstrtol(val, NULL, 16); if (readconfig(fp, "keychat", val, VL) > 0) keys[18] = Bstrtol(val, NULL, 16); #endif #ifdef RENDERTYPEWIN if (readconfig(fp, "windowpositioning", val, VL) > 0) windowpos = atoi_safe(val); windowx = -1; if (readconfig(fp, "windowposx", val, VL) > 0) windowx = atoi_safe(val); windowy = -1; if (readconfig(fp, "windowposy", val, VL) > 0) windowy = atoi_safe(val); #endif if (readconfig(fp, "keyconsole", val, VL) > 0) { keys[19] = Bstrtol(val, NULL, 16); OSD_CaptureKey(keys[19]); } if (readconfig(fp, "mousesensitivity", val, VL) > 0) msens = Bstrtod(val, NULL); if (readconfig(fp, "mousenavigation", val, VL) > 0) unrealedlook = !!atoi_safe(val); if (readconfig(fp, "mousenavigationaccel", val, VL) > 0) pk_uedaccel = atoi_safe(val); if (readconfig(fp, "quickmapcycling", val, VL) > 0) quickmapcycling = !!atoi_safe(val); if (readconfig(fp, "sideview_reversehorizrot", val, VL) > 0) sideview_reversehrot = !!atoi_safe(val); if (readconfig(fp, "revertCTRL", val, VL) > 0) revertCTRL = !!atoi_safe(val); if (readconfig(fp, "scrollamount", val, VL) > 0) scrollamount = atoi_safe(val); if (readconfig(fp, "turnaccel", val, VL) > 0) pk_turnaccel = atoi_safe(val); if (readconfig(fp, "turndecel", val, VL) > 0) pk_turndecel = atoi_safe(val); if (readconfig(fp, "autosavesec", val, VL) > 0) autosave = max(0, atoi_safe(val)); if (readconfig(fp, "autocorruptchecksec", val, VL) > 0) autocorruptcheck = max(0, atoi_safe(val)); if (readconfig(fp, "corruptcheck_noalreadyrefd", val, VL) > 0) corruptcheck_noalreadyrefd = !!atoi_safe(val); if (readconfig(fp, "fixmaponsave_sprites", val, VL) > 0) fixmaponsave_sprites = !!atoi_safe(val); if (readconfig(fp, "keeptexturestretch", val, VL) > 0) keeptexturestretch = !!atoi_safe(val); if (readconfig(fp, "showheightindicators", val, VL) > 0) showheightindicators = clamp(atoi_safe(val), 0, 2); if (readconfig(fp, "showambiencesounds", val, VL) > 0) showambiencesounds = clamp(atoi_safe(val), 0, 2); if (readconfig(fp, "autogray", val, VL) > 0) autogray = !!atoi_safe(val); // if (readconfig(fp, "showinnergray", val, VL) > 0) // showinnergray = !!atoi_safe(val); if (readconfig(fp, "graphicsmode", val, VL) > 0) graphicsmode = clamp(atoi_safe(val), 0, 2); if (readconfig(fp, "samplerate", val, VL) > 0) MixRate = clamp(atoi_safe(val), 8000, 48000); if (readconfig(fp, "ambiencetoggle", val, VL) > 0) AmbienceToggle = !!atoi_safe(val); if (readconfig(fp, "parlock", val, VL) > 0) ParentalLock = !!atoi_safe(val); if (readconfig(fp, "osdtryscript", val, VL) > 0) m32_osd_tryscript = !!atoi_safe(val); for (i=0; i<256; i++) remap[i]=i; remapinit=1; if (readconfig(fp, "remap", val, VL) > 0) { char *p=val; int32_t v1,v2; while (*p) { if (!sscanf(p,"%x",&v1))break; if ((p=strchr(p,'-'))==0)break; p++; if (!sscanf(p,"%x",&v2))break; remap[v1]=v2; initprintf("Remap %X key to %X\n",v1,v2); if ((p=strchr(p,','))==0)break; p++; } } // load m32script history for (i=0; i<SCRIPTHISTSIZ; i++) { Bsprintf(val, "hist%d", i); if (readconfig(fp, val, val, VL) <= 0) break; scripthist[i] = Bstrdup(val); } scripthistend = i; // copy script history into OSD history for (i=0; i<min(scripthistend, OSD_HISTORYDEPTH); i++) { Bstrncpyz(osdhistorybuf[i], scripthist[scripthistend-1-i], OSD_EDITLENGTH+1); osdhistorysize++; osdhistorytotal++; } scripthistend %= SCRIPTHISTSIZ; Bfclose(fp); return 0; }