mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-12-25 03:00:46 +00:00
Beginnings of support for selecting mods in the startup window... win32 only for now
git-svn-id: https://svn.eduke32.com/eduke32@984 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
9778af6489
commit
132db81381
12 changed files with 155 additions and 46 deletions
|
@ -1798,7 +1798,8 @@ static int kpegrend(const char *kfilebuf, int kfilength,
|
||||||
{
|
{
|
||||||
while (curbits < 24) //Getbits
|
while (curbits < 24) //Getbits
|
||||||
{
|
{
|
||||||
ch = *kfileptr++; if (ch == 255) kfileptr++;
|
ch = *kfileptr++;
|
||||||
|
if (ch == 255) kfileptr++;
|
||||||
num = (num<<8)+((int)ch); curbits += 8;
|
num = (num<<8)+((int)ch); curbits += 8;
|
||||||
}
|
}
|
||||||
i = ((num>>(curbits-10))&1023);
|
i = ((num>>(curbits-10))&1023);
|
||||||
|
|
|
@ -88,7 +88,7 @@
|
||||||
* deterministic/repeatable when the configuration otherwise is the same).
|
* deterministic/repeatable when the configuration otherwise is the same).
|
||||||
*/
|
*/
|
||||||
#ifndef INIT_HTAB
|
#ifndef INIT_HTAB
|
||||||
# define INIT_HTAB 0
|
# define INIT_HTAB 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -471,7 +471,7 @@ static int daskinloader(int filh, intptr_t *fptr, int *bpl, int *sizx, int *sizy
|
||||||
int r, g, b;
|
int r, g, b;
|
||||||
|
|
||||||
picfillen = kfilelength(filh);
|
picfillen = kfilelength(filh);
|
||||||
picfil = (char *)malloc(picfillen); if (!picfil) { return -1; }
|
picfil = (char *)malloc(picfillen+1); if (!picfil) { return -1; }
|
||||||
kread(filh, picfil, picfillen);
|
kread(filh, picfil, picfillen);
|
||||||
|
|
||||||
// tsizx/y = replacement texture's natural size
|
// tsizx/y = replacement texture's natural size
|
||||||
|
|
|
@ -594,6 +594,7 @@ extern char *duke3dgrp;
|
||||||
extern void check_valid_color(int *color,int prev_color);
|
extern void check_valid_color(int *color,int prev_color);
|
||||||
extern palette_t crosshair_colors;
|
extern palette_t crosshair_colors;
|
||||||
extern palette_t default_crosshair_colors;
|
extern palette_t default_crosshair_colors;
|
||||||
|
extern char mod_dir[BMAX_PATH];
|
||||||
|
|
||||||
int32 CONFIG_ReadSetup(void)
|
int32 CONFIG_ReadSetup(void)
|
||||||
{
|
{
|
||||||
|
@ -649,6 +650,8 @@ int32 CONFIG_ReadSetup(void)
|
||||||
SCRIPT_GetString(ud.config.scripthandle, "Misc","SelectedGRP",&duke3dgrp[0]);
|
SCRIPT_GetString(ud.config.scripthandle, "Misc","SelectedGRP",&duke3dgrp[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SCRIPT_GetString(ud.config.scripthandle, "Misc","ModDir",&mod_dir[0]);
|
||||||
|
|
||||||
SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "Shadows",&ud.shadows);
|
SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "Shadows",&ud.shadows);
|
||||||
|
|
||||||
if (!NAM)
|
if (!NAM)
|
||||||
|
@ -1110,6 +1113,7 @@ void CONFIG_WriteSetup(void)
|
||||||
|
|
||||||
|
|
||||||
SCRIPT_PutString(ud.config.scripthandle, "Misc","SelectedGRP",&duke3dgrp[0]);
|
SCRIPT_PutString(ud.config.scripthandle, "Misc","SelectedGRP",&duke3dgrp[0]);
|
||||||
|
SCRIPT_PutString(ud.config.scripthandle, "Misc","ModDir",&mod_dir[0]);
|
||||||
{
|
{
|
||||||
char commmacro[] = "CommbatMacro# ";
|
char commmacro[] = "CommbatMacro# ";
|
||||||
|
|
||||||
|
|
|
@ -112,7 +112,8 @@ char *duke3dgrp = defaultduke3dgrp;
|
||||||
char *duke3dgrpstring = NULL;
|
char *duke3dgrpstring = NULL;
|
||||||
static char defaultconfilename[BMAX_PATH] = {"EDUKE.CON"};
|
static char defaultconfilename[BMAX_PATH] = {"EDUKE.CON"};
|
||||||
static char *confilename = defaultconfilename;
|
static char *confilename = defaultconfilename;
|
||||||
static char *duke3ddef = "duke3d.def";
|
char *duke3ddef = "duke3d.def";
|
||||||
|
char mod_dir[BMAX_PATH] = "";
|
||||||
|
|
||||||
extern int lastvisinc;
|
extern int lastvisinc;
|
||||||
|
|
||||||
|
|
|
@ -92,6 +92,7 @@ char *textptr;
|
||||||
int error,warning;
|
int error,warning;
|
||||||
|
|
||||||
extern char *duke3dgrpstring;
|
extern char *duke3dgrpstring;
|
||||||
|
extern char *duke3ddef;
|
||||||
|
|
||||||
enum labeltypes
|
enum labeltypes
|
||||||
{
|
{
|
||||||
|
@ -468,6 +469,7 @@ const char *keyw[] =
|
||||||
"gettimedate", // 332
|
"gettimedate", // 332
|
||||||
"activatecheat", // 333
|
"activatecheat", // 333
|
||||||
"setgamepalette", // 334
|
"setgamepalette", // 334
|
||||||
|
"setdefname", // 335
|
||||||
"<null>"
|
"<null>"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -901,7 +903,6 @@ const memberlabel_t inputlabels[]=
|
||||||
|
|
||||||
char *bitptr;
|
char *bitptr;
|
||||||
|
|
||||||
|
|
||||||
#define BITPTR_DONTFUCKWITHIT 0
|
#define BITPTR_DONTFUCKWITHIT 0
|
||||||
#define BITPTR_POINTER 1
|
#define BITPTR_POINTER 1
|
||||||
|
|
||||||
|
@ -1660,7 +1661,7 @@ static int transnum(int type)
|
||||||
Bfree(gl);
|
Bfree(gl);
|
||||||
}
|
}
|
||||||
if (labeltype[i] != LABEL_DEFINE && labelcode[i] >= (intptr_t)&script[0] && labelcode[i] < (intptr_t)&script[g_ScriptSize])
|
if (labeltype[i] != LABEL_DEFINE && labelcode[i] >= (intptr_t)&script[0] && labelcode[i] < (intptr_t)&script[g_ScriptSize])
|
||||||
bitptr[(scriptptr-script)] = 1;
|
bitptr[(scriptptr-script)] = BITPTR_POINTER;
|
||||||
else bitptr[(scriptptr-script)] = BITPTR_DONTFUCKWITHIT;
|
else bitptr[(scriptptr-script)] = BITPTR_DONTFUCKWITHIT;
|
||||||
*(scriptptr++) = labelcode[i];
|
*(scriptptr++) = labelcode[i];
|
||||||
textptr += l;
|
textptr += l;
|
||||||
|
@ -2455,6 +2456,7 @@ static int parsecommand(void)
|
||||||
|
|
||||||
for (j=0;j<4;j++)
|
for (j=0;j<4;j++)
|
||||||
{
|
{
|
||||||
|
bitptr[(parsing_actor+j-script)] = BITPTR_DONTFUCKWITHIT;
|
||||||
*(parsing_actor+j) = 0;
|
*(parsing_actor+j) = 0;
|
||||||
if (j == 3)
|
if (j == 3)
|
||||||
{
|
{
|
||||||
|
@ -2499,6 +2501,10 @@ static int parsecommand(void)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
// bitptr[(parsing_actor+j-script)] = BITPTR_DONTFUCKWITHIT;
|
||||||
|
if (*(scriptptr-1) >= (intptr_t)&script[0] && *(scriptptr-1) < (intptr_t)&script[g_ScriptSize])
|
||||||
|
bitptr[(parsing_actor+j-script)] = BITPTR_POINTER;
|
||||||
|
else bitptr[(parsing_actor+j-script)] = BITPTR_DONTFUCKWITHIT;
|
||||||
*(parsing_actor+j) = *(scriptptr-1);
|
*(parsing_actor+j) = *(scriptptr-1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2664,7 +2670,10 @@ static int parsecommand(void)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
bitptr[(parsing_actor+j-script)] = BITPTR_DONTFUCKWITHIT;
|
// bitptr[(parsing_actor+j-script)] = BITPTR_DONTFUCKWITHIT;
|
||||||
|
if (*(scriptptr-1) >= (intptr_t)&script[0] && *(scriptptr-1) < (intptr_t)&script[g_ScriptSize])
|
||||||
|
bitptr[(parsing_actor+j-script)] = BITPTR_POINTER;
|
||||||
|
else bitptr[(parsing_actor+j-script)] = BITPTR_DONTFUCKWITHIT;
|
||||||
*(parsing_actor+j) = *(scriptptr-1);
|
*(parsing_actor+j) = *(scriptptr-1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4572,6 +4581,27 @@ repeatcase:
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
case CON_SETDEFNAME:
|
||||||
|
{
|
||||||
|
scriptptr--;
|
||||||
|
while (isaltok(*textptr) == 0)
|
||||||
|
{
|
||||||
|
if (*textptr == 0x0a) line_number++;
|
||||||
|
textptr++;
|
||||||
|
if (*textptr == 0) break;
|
||||||
|
}
|
||||||
|
j = 0;
|
||||||
|
while (isaltok(*textptr))
|
||||||
|
{
|
||||||
|
tempbuf[j] = *(textptr++);
|
||||||
|
j++;
|
||||||
|
}
|
||||||
|
tempbuf[j] = '\0';
|
||||||
|
duke3ddef = Bstrdup(tempbuf);
|
||||||
|
initprintf("Using DEF file: %s.\n",duke3ddef);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
|
||||||
case CON_DEFINEGAMETYPE:
|
case CON_DEFINEGAMETYPE:
|
||||||
scriptptr--;
|
scriptptr--;
|
||||||
transnum(LABEL_DEFINE);
|
transnum(LABEL_DEFINE);
|
||||||
|
|
|
@ -845,4 +845,5 @@ enum keywords
|
||||||
CON_GETTIMEDATE, // 332
|
CON_GETTIMEDATE, // 332
|
||||||
CON_ACTIVATECHEAT, // 333
|
CON_ACTIVATECHEAT, // 333
|
||||||
CON_SETGAMEPALETTE, // 334
|
CON_SETGAMEPALETTE, // 334
|
||||||
|
CON_SETDEFNAME, // 335
|
||||||
};
|
};
|
||||||
|
|
|
@ -683,7 +683,7 @@ void SetGameVarID(int id, int lValue, int iActor, int iPlayer)
|
||||||
{
|
{
|
||||||
if (iPlayer < 0 || iPlayer > MAXPLAYERS-1)
|
if (iPlayer < 0 || iPlayer > MAXPLAYERS-1)
|
||||||
{
|
{
|
||||||
OSD_Printf(OSD_ERROR "SetGameVarID(): invalid player (%d) for per-player gamevar %s from sprite %d (%d), player %d\n",iPlayer,aGameVars[id].szLabel,g_i,sprite[g_i].picnum,g_p);
|
OSD_Printf(OSD_ERROR "SetGameVarID(): invalid player (%d) for per-player gamevar %s from sprite %d, player %d\n",iPlayer,aGameVars[id].szLabel,g_i,g_p);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// for the current player
|
// for the current player
|
||||||
|
|
|
@ -50,6 +50,8 @@ FONT 8, "MS Shell Dlg"
|
||||||
BEGIN
|
BEGIN
|
||||||
CONTROL "&Game:", -1, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE, 5, 5, 100, 8
|
CONTROL "&Game:", -1, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE, 5, 5, 100, 8
|
||||||
CONTROL "", IDGDATA, "LISTBOX", LBS_NOINTEGRALHEIGHT | LBS_USETABSTOPS | LBS_STANDARD | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 15, 226, 70
|
CONTROL "", IDGDATA, "LISTBOX", LBS_NOINTEGRALHEIGHT | LBS_USETABSTOPS | LBS_STANDARD | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 15, 226, 70
|
||||||
|
CONTROL "&Mod:", -1, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE, 5, 90, 100, 8
|
||||||
|
CONTROL "", IDGGAMEDIR, "COMBOBOX", CBS_DROPDOWNLIST | WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_TABSTOP, 10, 99, 226, 156
|
||||||
END
|
END
|
||||||
|
|
||||||
#define FILEVER 1,4,9,9
|
#define FILEVER 1,4,9,9
|
||||||
|
|
|
@ -26,6 +26,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
extern char *bitptr;
|
extern char *bitptr;
|
||||||
|
|
||||||
|
#define BITPTR_POINTER 1
|
||||||
|
|
||||||
void readsavenames(void)
|
void readsavenames(void)
|
||||||
{
|
{
|
||||||
int dummy,j;
|
int dummy,j;
|
||||||
|
@ -641,7 +643,7 @@ int saveplayer(int spot)
|
||||||
scriptptrs = Bcalloc(1, g_ScriptSize * sizeof(scriptptrs));
|
scriptptrs = Bcalloc(1, g_ScriptSize * sizeof(scriptptrs));
|
||||||
for (i=0;i<g_ScriptSize;i++)
|
for (i=0;i<g_ScriptSize;i++)
|
||||||
{
|
{
|
||||||
if (bitptr[i])
|
if (bitptr[i] == BITPTR_POINTER)
|
||||||
// if ((intptr_t)script[i] >= (intptr_t)(&script[0]) && (intptr_t)script[i] < (intptr_t)(&script[g_ScriptSize]))
|
// if ((intptr_t)script[i] >= (intptr_t)(&script[0]) && (intptr_t)script[i] < (intptr_t)(&script[g_ScriptSize]))
|
||||||
{
|
{
|
||||||
scriptptrs[i] = 1;
|
scriptptrs[i] = 1;
|
||||||
|
|
|
@ -35,6 +35,7 @@ static struct
|
||||||
char selectedgrp[BMAX_PATH+1];
|
char selectedgrp[BMAX_PATH+1];
|
||||||
int game;
|
int game;
|
||||||
int crcval; // for finding the grp in the list again
|
int crcval; // for finding the grp in the list again
|
||||||
|
char *gamedir;
|
||||||
}
|
}
|
||||||
settings;
|
settings;
|
||||||
|
|
||||||
|
@ -45,9 +46,30 @@ static HWND pages[3] =
|
||||||
};
|
};
|
||||||
static int done = -1, mode = TAB_CONFIG;
|
static int done = -1, mode = TAB_CONFIG;
|
||||||
|
|
||||||
|
static CACHE1D_FIND_REC *finddirs=NULL;
|
||||||
|
static int numdirs=0;
|
||||||
|
|
||||||
|
void clearfilenames(void)
|
||||||
|
{
|
||||||
|
klistfree(finddirs);
|
||||||
|
finddirs = NULL;
|
||||||
|
numdirs = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int getfilenames(char *path)
|
||||||
|
{
|
||||||
|
CACHE1D_FIND_REC *r;
|
||||||
|
|
||||||
|
clearfilenames();
|
||||||
|
finddirs = klistpath(path,"*",CACHE1D_FIND_DIR);
|
||||||
|
for (r = finddirs; r; r=r->next) numdirs++;
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
|
||||||
#define POPULATE_VIDEO 1
|
#define POPULATE_VIDEO 1
|
||||||
#define POPULATE_CONFIG 2
|
#define POPULATE_CONFIG 2
|
||||||
#define POPULATE_GAME 4
|
#define POPULATE_GAME 4
|
||||||
|
#define POPULATE_MODS 8
|
||||||
|
|
||||||
static void PopulateForm(int pgs)
|
static void PopulateForm(int pgs)
|
||||||
{
|
{
|
||||||
|
@ -148,6 +170,25 @@ static void PopulateForm(int pgs)
|
||||||
if (!Bstrcasecmp(fg->name, settings.selectedgrp))(void)ListBox_SetCurSel(hwnd, j);
|
if (!Bstrcasecmp(fg->name, settings.selectedgrp))(void)ListBox_SetCurSel(hwnd, j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (pgs & POPULATE_MODS)
|
||||||
|
{
|
||||||
|
CACHE1D_FIND_REC *dirs = NULL;
|
||||||
|
|
||||||
|
hwnd = GetDlgItem(pages[TAB_GAME], IDGGAMEDIR);
|
||||||
|
|
||||||
|
getfilenames("/");
|
||||||
|
(void)ComboBox_ResetContent(hwnd);
|
||||||
|
j = ComboBox_AddString(hwnd, "None");
|
||||||
|
(void)ComboBox_SetItemData(hwnd, j, 0);
|
||||||
|
for (dirs=finddirs,i=1; dirs != NULL; dirs=dirs->next,i++)
|
||||||
|
{
|
||||||
|
Bsprintf(buf, "%s", dirs->name);
|
||||||
|
j = ComboBox_AddString(hwnd, buf);
|
||||||
|
(void)ComboBox_SetItemData(hwnd, j, i);
|
||||||
|
if (Bstrcmp(dirs->name,settings.gamedir) == 0)(void)ComboBox_SetCurSel(hwnd, j);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static INT_PTR CALLBACK ConfigPageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
static INT_PTR CALLBACK ConfigPageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
|
@ -216,6 +257,25 @@ static INT_PTR CALLBACK GamePageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPA
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
case IDGGAMEDIR:
|
||||||
|
if (HIWORD(wParam) == CBN_SELCHANGE)
|
||||||
|
{
|
||||||
|
int i,j;
|
||||||
|
CACHE1D_FIND_REC *dir = NULL;
|
||||||
|
i = ComboBox_GetCurSel((HWND)lParam);
|
||||||
|
if (i != CB_ERR) i = ComboBox_GetItemData((HWND)lParam, i);
|
||||||
|
if (i != CB_ERR)
|
||||||
|
{
|
||||||
|
for (j=0,dir=finddirs;dir != NULL;dir=dir->next,j++)
|
||||||
|
if (j == i)
|
||||||
|
{
|
||||||
|
if (i==0) settings.gamedir = NULL;
|
||||||
|
else settings.gamedir = dir->prev->name;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -252,6 +312,7 @@ static void EnableConfig(int n)
|
||||||
EnableWindow(GetDlgItem(pages[TAB_CONFIG], IDCINPUTJOY), n);
|
EnableWindow(GetDlgItem(pages[TAB_CONFIG], IDCINPUTJOY), n);
|
||||||
|
|
||||||
EnableWindow(GetDlgItem(pages[TAB_GAME], IDGDATA), n);
|
EnableWindow(GetDlgItem(pages[TAB_GAME], IDGDATA), n);
|
||||||
|
EnableWindow(GetDlgItem(pages[TAB_GAME], IDGGAMEDIR), n);
|
||||||
}
|
}
|
||||||
|
|
||||||
static INT_PTR CALLBACK startup_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
static INT_PTR CALLBACK startup_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
|
@ -567,6 +628,7 @@ int startwin_idle(void *v)
|
||||||
}
|
}
|
||||||
|
|
||||||
extern char *duke3dgrp, *duke3dgrpstring;
|
extern char *duke3dgrp, *duke3dgrpstring;
|
||||||
|
extern char mod_dir[BMAX_PATH];
|
||||||
|
|
||||||
int startwin_run(void)
|
int startwin_run(void)
|
||||||
{
|
{
|
||||||
|
@ -591,6 +653,7 @@ int startwin_run(void)
|
||||||
settings.game = g_GameType;
|
settings.game = g_GameType;
|
||||||
// settings.crcval = 0;
|
// settings.crcval = 0;
|
||||||
strncpy(settings.selectedgrp, duke3dgrp, BMAX_PATH);
|
strncpy(settings.selectedgrp, duke3dgrp, BMAX_PATH);
|
||||||
|
settings.gamedir = mod_dir;
|
||||||
PopulateForm(-1);
|
PopulateForm(-1);
|
||||||
|
|
||||||
while (done < 0)
|
while (done < 0)
|
||||||
|
@ -625,6 +688,11 @@ int startwin_run(void)
|
||||||
ud.config.UseJoystick = settings.usejoy;
|
ud.config.UseJoystick = settings.usejoy;
|
||||||
duke3dgrp = settings.selectedgrp;
|
duke3dgrp = settings.selectedgrp;
|
||||||
g_GameType = settings.game;
|
g_GameType = settings.game;
|
||||||
|
if (settings.gamedir)
|
||||||
|
{
|
||||||
|
addsearchpath(settings.gamedir);
|
||||||
|
Bstrcpy(mod_dir,settings.gamedir);
|
||||||
|
}
|
||||||
|
|
||||||
for (i = 0; i<numgrpfiles; i++) if (settings.crcval == grpfiles[i].crcval) break;
|
for (i = 0; i<numgrpfiles; i++) if (settings.crcval == grpfiles[i].crcval) break;
|
||||||
if (i != numgrpfiles)
|
if (i != numgrpfiles)
|
||||||
|
|
|
@ -24,4 +24,4 @@
|
||||||
|
|
||||||
// game page
|
// game page
|
||||||
#define IDGDATA 100
|
#define IDGDATA 100
|
||||||
|
#define IDGGAMEDIR 101
|
||||||
|
|
Loading…
Reference in a new issue