static int osdcmd_vars(const osdfuncparm_t *parm) { int showval = (parm->numparms < 1); if (!Bstrcasecmp(parm->name, "screencaptureformat")) { const char *fmts[2][2] = { {"TGA", "PCX"}, {"0", "1"} }; if (showval) { OSD_Printf("captureformat is %s\n", fmts[captureformat]); } else { int i,j; for (j=0; j<2; j++) for (i=0; i<2; i++) if (!Bstrcasecmp(parm->parms[0], fmts[j][i])) break; if (j == 2) return OSDCMD_SHOWHELP; captureformat = i; } return OSDCMD_OK; } #ifdef SUPERBUILD else if (!Bstrcasecmp(parm->name, "novoxmips")) { if (showval) { OSD_Printf("novoxmips is %d\n", novoxmips); } else { novoxmips = (atoi(parm->parms[0]) != 0); } } else if (!Bstrcasecmp(parm->name, "usevoxels")) { if (showval) { OSD_Printf("usevoxels is %d\n", usevoxels); } else { usevoxels = (atoi(parm->parms[0]) != 0); } } #endif return OSDCMD_SHOWHELP; }
static int osdcmd_vars(const osdfuncparm_t *parm) { int showval = (parm->numparms < 1); if (!Bstrcasecmp(parm->name, "myname")) { if (showval) { OSD_Printf("Your name is \"%s\"\n", myname); } else { Bstrncpy(myname, parm->parms[0], sizeof(myname)-1); myname[sizeof(myname)-1] = 0; // XXX: now send the update over the wire } return OSDCMD_OK; } else if (!Bstrcasecmp(parm->name, "showfps")) { if (showval) { OSD_Printf("showfps is %d\n", ud.tickrate); } else ud.tickrate = (atoi(parm->parms[0]) != 0); return OSDCMD_OK; } else if (!Bstrcasecmp(parm->name, "showcoords")) { if (showval) { OSD_Printf("showcoords is %d\n", ud.coords); } else ud.coords = (atoi(parm->parms[0]) != 0); return OSDCMD_OK; } else if (!Bstrcasecmp(parm->name, "useprecache")) { if (showval) { OSD_Printf("useprecache is %d\n", useprecache); } else useprecache = (atoi(parm->parms[0]) != 0); return OSDCMD_OK; } return OSDCMD_SHOWHELP; }
static int32_t osdcmd_cvar_set_baselayer(const osdfuncparm_t *parm) { int32_t r = osdcmd_cvar_set(parm); if (r != OSDCMD_OK) return r; /* if (!Bstrcasecmp(parm->name, "r_scrcaptureformat")) { const char *fmts[] = {"TGA", "PCX"}; if (showval) { OSD_Printf("r_scrcaptureformat is %s\n", fmts[captureformat]); } else { int32_t j; for (j=0; j<2; j++) if (!Bstrcasecmp(parm->parms[0], fmts[j])) break; if (j == 2) return OSDCMD_SHOWHELP; captureformat = j; } return OSDCMD_OK; } else */ if (!Bstrcasecmp(parm->name, "vid_gamma") || !Bstrcasecmp(parm->name, "vid_brightness") || !Bstrcasecmp(parm->name, "vid_contrast")) { setbrightness(GAMMA_CALC,palette,0); return r; } return r; }
// // addnewsymbol() -- Allocates space for a new symbol and attaches it // appropriately to the lists, sorted. // static symbol_t *addnewsymbol(const char *name) { symbol_t *newsymb, *s, *t; newsymb = (symbol_t *)Bmalloc(sizeof(symbol_t)); if (!newsymb) { return NULL; } Bmemset(newsymb, 0, sizeof(symbol_t)); // link it to the main chain if (!symbols) { symbols = newsymb; } else { if (Bstrcasecmp(name, symbols->name) <= 0) { t = symbols; symbols = newsymb; symbols->next = t; } else { s = symbols; while (s->next) { if (Bstrcasecmp(s->next->name, name) > 0) break; s=s->next; } t = s->next; s->next = newsymb; newsymb->next = t; } } return newsymb; }
int scriptfile_addsymbolvalue(char *name, int val) { int x; char *sp; //if (scriptfile_getsymbolvalue(name, &x)) return -1; // already exists if (symbtab) { char *scanner = symbtab; while (scanner - symbtab < symbtablength) { if (!Bstrcasecmp(name, scanner)) { *(int*)(scanner + strlen(scanner) + 1) = val; return 1; } scanner += strlen(scanner) + 1 + sizeof(int); } } sp = getsymbtabspace(strlen(name) + 1 + sizeof(int)); if (!sp) return 0; strcpy(sp, name); sp += strlen(name)+1; *(int*)sp = val; return 1; // added }
kb_scancode KB_StringToScanCode( char * string ) { unsigned s; for (s=0; s < (sizeof(sctokeylut)/sizeof(sctokeylut[0])); s++) if (!Bstrcasecmp(sctokeylut[s].key, string)) return sctokeylut[s].sc; return 0; }
// Copy FN to WBUF and append an extension if it's not there, which is checked // case-insensitively. // Returns: 1 if not all characters could be written to WBUF, 0 else. int32_t maybe_append_ext(char *wbuf, int32_t wbufsiz, const char *fn, const char *ext) { const int32_t slen=Bstrlen(fn), extslen=Bstrlen(ext); const int32_t haveext = (slen>=extslen && Bstrcasecmp(&fn[slen-extslen], ext)==0); Bassert((intptr_t)wbuf != (intptr_t)fn); // no aliasing // If 'fn' has no extension suffixed, append one. return (Bsnprintf(wbuf, wbufsiz, "%s%s", fn, haveext ? "" : ext) >= wbufsiz); }
/* =================== = = CONFIG_AnalogNameToNum = =================== */ int32 CONFIG_AnalogNameToNum( char * func ) { if (!Bstrcasecmp(func,"analog_turning")) { return analog_turning; } if (!Bstrcasecmp(func,"analog_strafing")) { return analog_strafing; } if (!Bstrcasecmp(func,"analog_moving")) { return analog_moving; } if (!Bstrcasecmp(func,"analog_lookingupanddown")) { return analog_lookingupanddown; } return -1; }
int32_t G_CheckCmdSwitch(int32_t argc, const char **argv, const char *str) { int32_t i; for (i=0; i<argc; i++) { if (str && !Bstrcasecmp(argv[i], str)) return 1; } return 0; }
// // findexactsymbol() -- Finds a symbol, complete named // static symbol_t *findexactsymbol(const char *name) { symbol_t *startingat; if (!symbols) return NULL; startingat = symbols; for (; startingat; startingat=startingat->next) if (!Bstrcasecmp(name, startingat->name)) return startingat; return NULL; }
void playmusic(char *fn) { int fp; char * testfn, * extension; if(MusicToggle == 0) return; if(MusicDevice < 0) return; stopmusic(); testfn = (char *) malloc( strlen(fn) + 5 ); printf("Playing song: %s\n", fn); strcpy(testfn, fn); extension = strrchr(testfn, '.'); do { if (extension && !Bstrcasecmp(extension, ".mid")) { // we've been asked to load a .mid file, but first // let's see if there's an ogg with the same base name // lying around strcpy(extension, ".ogg"); fp = kopen4load(testfn, 0); if (fp >= 0) { printf("OGG found: %s\n", testfn); free(testfn); break; } } free(testfn); // just use what we've been given fp = kopen4load(fn, 0); } while (0); if (fp < 0) return; MusicLen = kfilelength( fp ); MusicPtr = (char *) malloc(MusicLen); kread( fp, MusicPtr, MusicLen); kclose( fp ); if (!memcmp(MusicPtr, "MThd", 4)) { MUSIC_PlaySong( MusicPtr, MusicLen, MUSIC_LoopSong ); MusicIsWaveform = 0; } else { MusicVoice = FX_PlayLoopedAuto(MusicPtr, MusicLen, 0, 0, 0, MusicVolume, MusicVolume, MusicVolume, FX_MUSIC_PRIORITY, MUSIC_ID); MusicIsWaveform = 1; } MusicPaused = 0; }
int osdcmd_usemousejoy(const osdfuncparm_t *parm) { int showval = (parm->numparms < 1); if (!Bstrcasecmp(parm->name, "usemouse")) { if (showval) { OSD_Printf("usemouse is %d\n", UseMouse); } else { UseMouse = (atoi(parm->parms[0]) != 0); CONTROL_MouseEnabled = (UseMouse && CONTROL_MousePresent); } return OSDCMD_OK; } else if (!Bstrcasecmp(parm->name, "usejoystick")) { if (showval) { OSD_Printf("usejoystick is %d\n", UseJoystick); } else { UseJoystick = (atoi(parm->parms[0]) != 0); CONTROL_JoystickEnabled = (UseJoystick && CONTROL_JoyPresent); } return OSDCMD_OK; } return OSDCMD_SHOWHELP; }
int32 CONFIG_FunctionNameToNum( const char * func ) { int32 i; for (i=0;i<NUMGAMEFUNCTIONS;i++) { if (!Bstrcasecmp(func,gamefunctions[i])) { return i; } } return -1; }
ScriptEntryType * SCRIPT_EntryExists ( ScriptSectionType * section, const char * entryname ) { ScriptEntryType *e,*le=NULL; if (!section) return NULL; if (!entryname) return NULL; if (!section->entries) return NULL; for (e = section->entries; le != e; le=e,e=e->nextentry) if (!Bstrcasecmp(e->name, entryname)) return e; return NULL; }
ScriptSectionType * SCRIPT_SectionExists( int32 scripthandle, const char * sectionname ) { ScriptSectionType *s, *ls=NULL; if (scripthandle < 0 || scripthandle >= MAXSCRIPTFILES) return NULL; if (!sectionname) return NULL; if (!SC(scripthandle)) return NULL; if (!SCRIPT(scripthandle,script)) return NULL; for (s = SCRIPT(scripthandle,script); ls != s; ls=s,s=s->nextsection) if (!Bstrcasecmp(s->name, sectionname)) return s; return NULL; }
static int _internal_osdfunc_vars(const osdfuncparm_t *parm) { int showval = (parm->numparms < 1); if (!Bstrcasecmp(parm->name, "osdrows")) { if (showval) { OSD_Printf("osdrows is %d\n", osdrows); return OSDCMD_OK; } else { osdrows = atoi(parm->parms[0]); if (osdrows < 1) osdrows = 1; else if (osdrows > osdmaxrows) osdrows = osdmaxrows; return OSDCMD_OK; } } return OSDCMD_SHOWHELP; }
int scriptfile_getsymbolvalue(char *name, int *val) { char *scanner = symbtab; if (!symbtab) return 0; while (scanner - symbtab < symbtablength) { if (!Bstrcasecmp(name, scanner)) { *val = *(int*)(scanner + strlen(scanner) + 1); return 1; } scanner += strlen(scanner) + 1 + sizeof(int); } return 0; }
static int getatoken(scriptfile *sf, tokenlist *tl, int ntokens) { char *tok; int i; if (!sf) return T_ERROR; tok = scriptfile_gettoken(sf); if (!tok) return T_EOF; for(i=0;i<ntokens;i++) { if (!Bstrcasecmp(tok, tl[i].text)) return tl[i].tokenid; } return T_ERROR; }
int32_t getatoken(scriptfile *sf, const tokenlist *tl, int32_t ntokens) { char *tok; int32_t i; if (!sf) return T_ERROR; tok = scriptfile_gettoken(sf); if (!tok) return T_EOF; for (i=ntokens-1; i>=0; i--) { if (!Bstrcasecmp(tok, tl[i].text)) return tl[i].tokenid; } return T_ERROR; }
void ExternalSoundMod(void) { FILE *fin; VOC_INFOp vp; char name[40]; char new_name[40]; int pri; int pitch_lo, pitch_hi; int ret; fin = fopen("swextern.snd", "r"); if (!fin) return; while (TRUE) { ret = fscanf(fin, "%s %s %d %d", name, new_name, &pitch_lo, &pitch_hi); if (ret == EOF) break; for (vp = voc; vp < &voc[SIZ(voc)]; vp++) { if (!vp->name) continue; if (!Bstrcasecmp(name, vp->name)) { // vp->priority = pri; strcpy(vp->name, new_name); vp->pitch_lo = pitch_lo; vp->pitch_hi = pitch_hi; } } } fclose(fin); }
static int32_t readconfig(BFILE *fp, const char *key, char *value, uint32_t len) { char buf[1000], *k, *v, *eq; int32_t x=0; if (len < 1) return 0; Brewind(fp); while (1) { if (!Bfgets(buf, 1000, fp)) return 0; if (buf[0] == ';') continue; eq = Bstrchr(buf, '='); if (!eq) continue; k = buf; v = eq+1; while (*k == ' ' || *k == '\t') k++; *(eq--) = 0; while ((*eq == ' ' || *eq == '\t') && eq>=k) *(eq--) = 0; if (Bstrcasecmp(k, key)) continue; while (*v == ' ' || *k == '\t') v++; eq = v + Bstrlen(v)-1; while ((*eq == ' ' || *eq == '\t' || *eq == '\r' || *eq == '\n') && eq>=v) *(eq--) = 0; value[--len] = 0; do value[x] = v[x]; while (v[x++] != 0 && len-- > 0); return x-1; } }
int loadsetup(const char *fn) { scriptfile *cfg; char *token; int item; cfg = scriptfile_fromfile(fn); if (!cfg) { return -1; } scriptfile_clearsymbols(); option[0] = 1; // vesa all the way... option[1] = 1; // sound all the way... option[4] = 0; // no multiplayer option[5] = 0; while (1) { token = scriptfile_gettoken(cfg); if (!token) break; //EOF for (item = 0; configspec[item].name; item++) { if (!Bstrcasecmp(token, configspec[item].name)) { // Seek past any = symbol. token = scriptfile_peektoken(cfg); if (!Bstrcasecmp("=", token)) { scriptfile_gettoken(cfg); } switch (configspec[item].type) { case type_bool: { int value = 0; if (scriptfile_getnumber(cfg, &value)) break; *(int*)configspec[item].store = (value != 0); break; } case type_int: { int value = 0; if (scriptfile_getnumber(cfg, &value)) break; *(int*)configspec[item].store = value; break; } case type_hex: { int value = 0; if (scriptfile_gethex(cfg, &value)) break; *(int*)configspec[item].store = value; break; } case type_double: { double value = 0.0; if (scriptfile_getdouble(cfg, &value)) break; *(double*)configspec[item].store = value; break; } default: { buildputs("loadsetup: unhandled value type\n"); break; } } break; } } if (!configspec[item].name) { buildprintf("loadsetup: error on line %d\n", scriptfile_getlinum(cfg, cfg->ltextptr)); continue; } } #if USE_POLYMOST if (tmprenderer >= 0) { setrendermode(tmprenderer); } #endif if (tmpbrightness >= 0) { brightness = min(max(tmpbrightness,0),15); } OSD_CaptureKey(keys[19]); scriptfile_close(cfg); scriptfile_clearsymbols(); return 0; }
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); } } }
static int osdcmd_spawn(const osdfuncparm_t *parm) { long x=0,y=0,z=0; unsigned short cstat=0,picnum=0; unsigned char pal=0; short ang=0; short set=0, idx; if (numplayers > 1 || !(ps[myconnectindex].gm & MODE_GAME)) { OSD_Printf("spawn: Can't spawn sprites in multiplayer games or demos\n"); return OSDCMD_OK; } switch (parm->numparms) { case 7: // x,y,z x = Batol(parm->parms[4]); y = Batol(parm->parms[5]); z = Batol(parm->parms[6]); set |= 8; case 4: // ang ang = Batol(parm->parms[3]) & 2047; set |= 4; case 3: // cstat cstat = (unsigned short)Batol(parm->parms[2]); set |= 2; case 2: // pal pal = (unsigned char)Batol(parm->parms[1]); set |= 1; case 1: // tile number if (isdigit(parm->parms[0][0])) { picnum = (unsigned short)Batol(parm->parms[0]); } else { int i,j; for (j=0; j<2; j++) { for (i=0; i<labelcnt; i++) { if ( (j == 0 && !Bstrcmp(label+(i<<6), parm->parms[0])) || (j == 1 && !Bstrcasecmp(label+(i<<6), parm->parms[0])) ) { picnum = (unsigned short)labelcode[i]; break; } } if (i<labelcnt) break; } if (i==labelcnt) { OSD_Printf("spawn: Invalid tile label given\n"); return OSDCMD_OK; } } if (picnum >= MAXTILES) { OSD_Printf("spawn: Invalid tile number\n"); return OSDCMD_OK; } break; default: return OSDCMD_SHOWHELP; } idx = spawn(ps[myconnectindex].i, (short)picnum); if (set & 1) sprite[idx].pal = (char)pal; if (set & 2) sprite[idx].cstat = (short)cstat; if (set & 4) sprite[idx].ang = ang; if (set & 8) { if (setsprite(idx, x,y,z) < 0) { OSD_Printf("spawn: Sprite can't be spawned into null space\n"); deletesprite(idx); } } return OSDCMD_OK; }
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); } } } }
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); } } } }
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; } } } }