mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-11-10 23:02:03 +00:00
git-svn-id: https://svn.eduke32.com/eduke32@1100 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
60a4224533
commit
2a77b42672
10 changed files with 144 additions and 81 deletions
|
@ -95,6 +95,14 @@ void _printmessage16(const char *fmt, ...);
|
||||||
void getpoint(int searchxe, int searchye, int *x, int *y);
|
void getpoint(int searchxe, int searchye, int *x, int *y);
|
||||||
int getpointhighlight(int xplc, int yplc, int point);
|
int getpointhighlight(int xplc, int yplc, int point);
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
#define DEFAULT_GAME_EXEC "eduke32.exe"
|
||||||
|
#define DEFAULT_GAME_LOCAL_EXEC "eduke32.exe"
|
||||||
|
#else
|
||||||
|
#define DEFAULT_GAME_EXEC "eduke32"
|
||||||
|
#define DEFAULT_GAME_LOCAL_EXEC "./eduke32"
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -91,6 +91,7 @@ extern int cachesize, artsize;
|
||||||
|
|
||||||
static short oldmousebstatus = 0;
|
static short oldmousebstatus = 0;
|
||||||
short brightness = 0;
|
short brightness = 0;
|
||||||
|
char game_executable[BMAX_PATH] = DEFAULT_GAME_LOCAL_EXEC;
|
||||||
int zlock = 0x7fffffff, zmode = 0, whitecol, kensplayerheight = 32;
|
int zlock = 0x7fffffff, zmode = 0, whitecol, kensplayerheight = 32;
|
||||||
short defaultspritecstat = 0;
|
short defaultspritecstat = 0;
|
||||||
|
|
||||||
|
|
|
@ -56,6 +56,7 @@ static int readconfig(BFILE *fp, const char *key, char *value, unsigned len)
|
||||||
}
|
}
|
||||||
|
|
||||||
extern short brightness;
|
extern short brightness;
|
||||||
|
extern char game_executable[BMAX_PATH];
|
||||||
extern int fullscreen;
|
extern int fullscreen;
|
||||||
extern char option[8];
|
extern char option[8];
|
||||||
extern char keys[NUMBUILDKEYS];
|
extern char keys[NUMBUILDKEYS];
|
||||||
|
@ -165,6 +166,9 @@ int loadsetup(const char *fn)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (readconfig(fp, "gameexecutable", val, VL) > 0)
|
||||||
|
Bstrcpy(game_executable, val);
|
||||||
|
|
||||||
option[0] = 1; // vesa all the way...
|
option[0] = 1; // vesa all the way...
|
||||||
option[1] = 1; // sound all the way...
|
option[1] = 1; // sound all the way...
|
||||||
option[4] = 0; // no multiplayer
|
option[4] = 0; // no multiplayer
|
||||||
|
@ -299,6 +303,9 @@ int writesetup(const char *fn)
|
||||||
"; 15 - highest\n"
|
"; 15 - highest\n"
|
||||||
"brightness = %d\n"
|
"brightness = %d\n"
|
||||||
"\n"
|
"\n"
|
||||||
|
"; Game executable used for map testing\n"
|
||||||
|
"gameexecutable = %s\n"
|
||||||
|
"\n"
|
||||||
#if 0
|
#if 0
|
||||||
"; Sound sample frequency\n"
|
"; Sound sample frequency\n"
|
||||||
"; 0 - 6 KHz\n"
|
"; 0 - 6 KHz\n"
|
||||||
|
@ -411,7 +418,7 @@ int writesetup(const char *fn)
|
||||||
#ifdef RENDERTYPEWIN
|
#ifdef RENDERTYPEWIN
|
||||||
maxrefreshfreq, windowpos, windowx, windowy,
|
maxrefreshfreq, windowpos, windowx, windowy,
|
||||||
#endif
|
#endif
|
||||||
brightness,
|
brightness, game_executable,
|
||||||
#if 0
|
#if 0
|
||||||
option[7]>>4, option[2],
|
option[7]>>4, option[2],
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -693,7 +693,7 @@ int mdloadskin(md2model *m, int number, int pal, int surf)
|
||||||
if ((int)sk->palette == pal && sk->skinnum == number && sk->surfnum == surf)
|
if ((int)sk->palette == pal && sk->skinnum == number && sk->surfnum == surf)
|
||||||
{
|
{
|
||||||
skinfile = sk->fn;
|
skinfile = sk->fn;
|
||||||
texidx = &sk->texid[(globalnoeffect)?0:hictinting[pal].f ];
|
texidx = &sk->texid[(globalnoeffect)?0:(hictinting[pal].f&HICEFFECTMASK) ];
|
||||||
strcpy(fn,skinfile);
|
strcpy(fn,skinfile);
|
||||||
//OSD_Printf("Using exact match skin (pal=%d,skinnum=%d,surfnum=%d) %s\n",pal,number,surf,skinfile);
|
//OSD_Printf("Using exact match skin (pal=%d,skinnum=%d,surfnum=%d) %s\n",pal,number,surf,skinfile);
|
||||||
break;
|
break;
|
||||||
|
@ -713,7 +713,7 @@ int mdloadskin(md2model *m, int number, int pal, int surf)
|
||||||
if (skzero)
|
if (skzero)
|
||||||
{
|
{
|
||||||
skinfile = skzero->fn;
|
skinfile = skzero->fn;
|
||||||
texidx = &skzero->texid[(globalnoeffect)?0:hictinting[pal].f ];
|
texidx = &skzero->texid[(globalnoeffect)?0:(hictinting[pal].f&HICEFFECTMASK) ];
|
||||||
strcpy(fn,skinfile);
|
strcpy(fn,skinfile);
|
||||||
//OSD_Printf("Using def skin 0,0 as fallback, pal=%d\n", pal);
|
//OSD_Printf("Using def skin 0,0 as fallback, pal=%d\n", pal);
|
||||||
}
|
}
|
||||||
|
@ -721,7 +721,7 @@ int mdloadskin(md2model *m, int number, int pal, int surf)
|
||||||
{
|
{
|
||||||
if ((unsigned)number >= (unsigned)m->numskins) number = 0;
|
if ((unsigned)number >= (unsigned)m->numskins) number = 0;
|
||||||
skinfile = m->skinfn + number*64;
|
skinfile = m->skinfn + number*64;
|
||||||
texidx = &m->texid[ number * (HICEFFECTMASK+1) + (globalnoeffect)?0:hictinting[pal].f ];
|
texidx = &m->texid[ number * (HICEFFECTMASK+1) + (globalnoeffect)?0:(hictinting[pal].f&HICEFFECTMASK) ];
|
||||||
strcpy(fn,m->basepath); strcat(fn,skinfile);
|
strcpy(fn,m->basepath); strcat(fn,skinfile);
|
||||||
//OSD_Printf("Using MD2/MD3 skin (%d) %s, pal=%d\n",number,skinfile,pal);
|
//OSD_Printf("Using MD2/MD3 skin (%d) %s, pal=%d\n",number,skinfile,pal);
|
||||||
}
|
}
|
||||||
|
@ -735,10 +735,10 @@ int mdloadskin(md2model *m, int number, int pal, int surf)
|
||||||
if (pal >= (MAXPALOOKUPS - RESERVEDPALS))
|
if (pal >= (MAXPALOOKUPS - RESERVEDPALS))
|
||||||
for (i=0;i<nextmodelid;i++)
|
for (i=0;i<nextmodelid;i++)
|
||||||
for (skzero = ((md2model *)models[i])->skinmap; skzero; skzero = skzero->next)
|
for (skzero = ((md2model *)models[i])->skinmap; skzero; skzero = skzero->next)
|
||||||
if (!Bstrcasecmp(skzero->fn, sk->fn) && skzero->texid[(globalnoeffect)?0:hictinting[pal].f])
|
if (!Bstrcasecmp(skzero->fn, sk->fn) && skzero->texid[(globalnoeffect)?0:(hictinting[pal].f&HICEFFECTMASK)])
|
||||||
{
|
{
|
||||||
sk->texid[(globalnoeffect)?0:hictinting[pal].f] = skzero->texid[(globalnoeffect)?0:hictinting[pal].f];
|
sk->texid[(globalnoeffect)?0:(hictinting[pal].f&HICEFFECTMASK)] = skzero->texid[(globalnoeffect)?0:(hictinting[pal].f&HICEFFECTMASK)];
|
||||||
return sk->texid[(globalnoeffect)?0:hictinting[pal].f];
|
return sk->texid[(globalnoeffect)?0:(hictinting[pal].f&HICEFFECTMASK)];
|
||||||
}
|
}
|
||||||
|
|
||||||
*texidx = 0;
|
*texidx = 0;
|
||||||
|
@ -753,7 +753,7 @@ int mdloadskin(md2model *m, int number, int pal, int surf)
|
||||||
picfillen = kfilelength(filh);
|
picfillen = kfilelength(filh);
|
||||||
kclose(filh); // FIXME: shouldn't have to do this. bug in cache1d.c
|
kclose(filh); // FIXME: shouldn't have to do this. bug in cache1d.c
|
||||||
|
|
||||||
cachefil = mdloadskin_trytexcache(fn, picfillen, pal<<8, (globalnoeffect)?0:hictinting[pal].f, &cachead);
|
cachefil = mdloadskin_trytexcache(fn, picfillen, pal<<8, (globalnoeffect)?0:(hictinting[pal].f&HICEFFECTMASK), &cachead);
|
||||||
if (cachefil >= 0 && !mdloadskin_cached(cachefil, &cachead, &doalloc, texidx, &xsiz, &ysiz, pal))
|
if (cachefil >= 0 && !mdloadskin_cached(cachefil, &cachead, &doalloc, texidx, &xsiz, &ysiz, pal))
|
||||||
{
|
{
|
||||||
osizx = cachead.xdim;
|
osizx = cachead.xdim;
|
||||||
|
@ -770,7 +770,7 @@ int mdloadskin(md2model *m, int number, int pal, int surf)
|
||||||
cachefil = -1; // the compressed version will be saved to disk
|
cachefil = -1; // the compressed version will be saved to disk
|
||||||
|
|
||||||
if ((filh = kopen4load(fn, 0)) < 0) return -1;
|
if ((filh = kopen4load(fn, 0)) < 0) return -1;
|
||||||
if (daskinloader(filh,&fptr,&bpl,&xsiz,&ysiz,&osizx,&osizy,&hasalpha,pal,(globalnoeffect)?0:hictinting[pal].f,m,number,surf))
|
if (daskinloader(filh,&fptr,&bpl,&xsiz,&ysiz,&osizx,&osizy,&hasalpha,pal,(globalnoeffect)?0:(hictinting[pal].f&HICEFFECTMASK),m,number,surf))
|
||||||
{
|
{
|
||||||
kclose(filh);
|
kclose(filh);
|
||||||
OSD_Printf("Failed loading skin file \"%s\"\n", fn);
|
OSD_Printf("Failed loading skin file \"%s\"\n", fn);
|
||||||
|
@ -862,7 +862,7 @@ int mdloadskin(md2model *m, int number, int pal, int surf)
|
||||||
}
|
}
|
||||||
cachead.flags = (i!=3) | (hasalpha ? 2 : 0);
|
cachead.flags = (i!=3) | (hasalpha ? 2 : 0);
|
||||||
OSD_Printf("No cached tex for %s.\n",fn);
|
OSD_Printf("No cached tex for %s.\n",fn);
|
||||||
writexcache(fn, picfillen, pal<<8, (globalnoeffect)?0:hictinting[pal].f, &cachead);
|
writexcache(fn, picfillen, pal<<8, (globalnoeffect)?0:(hictinting[pal].f&HICEFFECTMASK), &cachead);
|
||||||
}
|
}
|
||||||
|
|
||||||
return(*texidx);
|
return(*texidx);
|
||||||
|
|
|
@ -155,6 +155,7 @@ static void on_vmode3dcombo_changed(GtkComboBox *combobox, gpointer user_data)
|
||||||
gtk_tree_model_get(data, &iter, 1, &val, -1);
|
gtk_tree_model_get(data, &iter, 1, &val, -1);
|
||||||
settings.xdim3d = validmode[val].xdim;
|
settings.xdim3d = validmode[val].xdim;
|
||||||
settings.ydim3d = validmode[val].ydim;
|
settings.ydim3d = validmode[val].ydim;
|
||||||
|
settings.bpp3d = validmode[val].bpp;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void on_fullscreencheck_toggled(GtkToggleButton *togglebutton, gpointer user_data)
|
static void on_fullscreencheck_toggled(GtkToggleButton *togglebutton, gpointer user_data)
|
||||||
|
|
|
@ -41,6 +41,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#define WIN32_LEAN_AND_MEAN
|
#define WIN32_LEAN_AND_MEAN
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
#include <shellapi.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define BUILDDATE " 20081011"
|
#define BUILDDATE " 20081011"
|
||||||
|
@ -175,6 +176,7 @@ static int infobox=3; // bit0: current window, bit1: mouse pointer, the variable
|
||||||
extern char mskip;
|
extern char mskip;
|
||||||
extern short capturecount;
|
extern short capturecount;
|
||||||
extern int editorgridextent; // in engine.c
|
extern int editorgridextent; // in engine.c
|
||||||
|
extern char game_executable[BMAX_PATH];
|
||||||
|
|
||||||
static void clearfilenames(void)
|
static void clearfilenames(void)
|
||||||
{
|
{
|
||||||
|
@ -7353,28 +7355,26 @@ static void addgroup(const char *buffer)
|
||||||
CommandGrps = s;
|
CommandGrps = s;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _WIN32
|
|
||||||
#define COPYARG(i) \
|
#define COPYARG(i) \
|
||||||
Bmemcpy(&testplay_addparam[j], argv[i], lengths[i]); \
|
Bmemcpy(&testplay_addparam[j], argv[i], lengths[i]); \
|
||||||
j += lengths[i]; \
|
j += lengths[i]; \
|
||||||
testplay_addparam[j++] = ' ';
|
testplay_addparam[j++] = ' ';
|
||||||
#else
|
|
||||||
#define COPYARG(i)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static void checkcommandline(int argc, const char **argv)
|
static void checkcommandline(int argc, const char **argv)
|
||||||
{
|
{
|
||||||
int i = 1, j, maxlen=0, *lengths;
|
int i = 1, j, maxlen=0, *lengths;
|
||||||
char *c, *k;
|
char *c, *k;
|
||||||
|
|
||||||
|
mapster32_fullpath = (char*)argv[0];
|
||||||
|
|
||||||
if (argc > 1)
|
if (argc > 1)
|
||||||
{
|
{
|
||||||
lengths = Bmalloc(argc*sizeof(int));
|
lengths = Bmalloc(argc*sizeof(int));
|
||||||
for (j=1; j<argc; j++) maxlen += (lengths[j] = Bstrlen(argv[j]));
|
for (j=1; j<argc; j++) maxlen += (lengths[j] = Bstrlen(argv[j]));
|
||||||
#ifdef _WIN32
|
|
||||||
testplay_addparam = Bmalloc(maxlen+argc);
|
testplay_addparam = Bmalloc(maxlen+argc);
|
||||||
testplay_addparam[0] = 0;
|
testplay_addparam[0] = 0;
|
||||||
#endif
|
|
||||||
j = 0;
|
j = 0;
|
||||||
|
|
||||||
while (i < argc)
|
while (i < argc)
|
||||||
|
@ -7530,7 +7530,7 @@ static void checkcommandline(int argc, const char **argv)
|
||||||
}
|
}
|
||||||
|
|
||||||
Bfree(lengths);
|
Bfree(lengths);
|
||||||
#ifdef _WIN32
|
|
||||||
if (j > 0)
|
if (j > 0)
|
||||||
{
|
{
|
||||||
testplay_addparam[j-1] = 0;
|
testplay_addparam[j-1] = 0;
|
||||||
|
@ -7541,7 +7541,6 @@ static void checkcommandline(int argc, const char **argv)
|
||||||
Bfree(testplay_addparam);
|
Bfree(testplay_addparam);
|
||||||
testplay_addparam = NULL;
|
testplay_addparam = NULL;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#undef COPYARG
|
#undef COPYARG
|
||||||
|
@ -7706,7 +7705,6 @@ static int osdcmd_noclip(const osdfuncparm_t *parm)
|
||||||
return OSDCMD_OK;
|
return OSDCMD_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _WIN32
|
|
||||||
static int osdcmd_testplay_addparam(const osdfuncparm_t *parm)
|
static int osdcmd_testplay_addparam(const osdfuncparm_t *parm)
|
||||||
{
|
{
|
||||||
int slen;
|
int slen;
|
||||||
|
@ -7743,7 +7741,6 @@ static int osdcmd_testplay_addparam(const osdfuncparm_t *parm)
|
||||||
|
|
||||||
return OSDCMD_OK;
|
return OSDCMD_OK;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
static int osdcmd_showheightindicators(const osdfuncparm_t *parm)
|
static int osdcmd_showheightindicators(const osdfuncparm_t *parm)
|
||||||
{
|
{
|
||||||
|
@ -7829,9 +7826,7 @@ static int registerosdcommands(void)
|
||||||
OSD_RegisterFunction("pk_turndecel", "pk_turndecel: sets turning deceleration", osdcmd_vars_pk);
|
OSD_RegisterFunction("pk_turndecel", "pk_turndecel: sets turning deceleration", osdcmd_vars_pk);
|
||||||
OSD_RegisterFunction("pk_uedaccel", "pk_uedaccel: sets UnrealEd movement speed factor (0-5, exponentially)", osdcmd_vars_pk);
|
OSD_RegisterFunction("pk_uedaccel", "pk_uedaccel: sets UnrealEd movement speed factor (0-5, exponentially)", osdcmd_vars_pk);
|
||||||
OSD_RegisterFunction("pk_quickmapcycling", "pk_quickmapcycling: allows cycling of maps with (Shift-)Ctrl-X", osdcmd_vars_pk);
|
OSD_RegisterFunction("pk_quickmapcycling", "pk_quickmapcycling: allows cycling of maps with (Shift-)Ctrl-X", osdcmd_vars_pk);
|
||||||
#ifdef _WIN32
|
|
||||||
OSD_RegisterFunction("testplay_addparam", "testplay_addparam \"string\": set additional parameters for test playing", osdcmd_testplay_addparam);
|
OSD_RegisterFunction("testplay_addparam", "testplay_addparam \"string\": set additional parameters for test playing", osdcmd_testplay_addparam);
|
||||||
#endif
|
|
||||||
OSD_RegisterFunction("showheightindicators", "showheightindicators [012]: toggles height indicators in 2D mode", osdcmd_showheightindicators);
|
OSD_RegisterFunction("showheightindicators", "showheightindicators [012]: toggles height indicators in 2D mode", osdcmd_showheightindicators);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -8442,7 +8437,10 @@ int ExtInit(void)
|
||||||
addsearchpath(seekinappcontainer);
|
addsearchpath(seekinappcontainer);
|
||||||
#endif
|
#endif
|
||||||
addsearchpath(cwd);
|
addsearchpath(cwd);
|
||||||
|
Bstrcpy(program_origcwd, cwd);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
program_origcwd[0] = '\0';
|
||||||
|
|
||||||
if (CommandPaths)
|
if (CommandPaths)
|
||||||
{
|
{
|
||||||
|
@ -8881,11 +8879,6 @@ void ExtAnalyzeSprites(void)
|
||||||
#define MESSAGEX 3 // (xdimgame>>1)
|
#define MESSAGEX 3 // (xdimgame>>1)
|
||||||
#define MESSAGEY 3 // ((i/charsperline)<<3)+(ydimgame-(ydimgame>>3))-(((getmessageleng-1)/charsperline)<<3)
|
#define MESSAGEY 3 // ((i/charsperline)<<3)+(ydimgame-(ydimgame>>3))-(((getmessageleng-1)/charsperline)<<3)
|
||||||
|
|
||||||
#ifdef _WIN32
|
|
||||||
#include <windows.h>
|
|
||||||
#include <shellapi.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static void Keys2d3d(void)
|
static void Keys2d3d(void)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
@ -8900,7 +8893,10 @@ static void Keys2d3d(void)
|
||||||
if (keystatus[KEYSC_QUOTE] && keystatus[KEYSC_A]) // ' a
|
if (keystatus[KEYSC_QUOTE] && keystatus[KEYSC_A]) // ' a
|
||||||
{
|
{
|
||||||
keystatus[KEYSC_A] = 0;
|
keystatus[KEYSC_A] = 0;
|
||||||
autosave=autosave?0:180; // 3 minutes
|
|
||||||
|
if (qsetmode == 200) autosave=autosave?0:getnumber256("Autosave interval, in seconds: ",180,3600,0);
|
||||||
|
else autosave=autosave?0:getnumber16("Autosave interval, in seconds: ",180,3600,0);
|
||||||
|
|
||||||
if (autosave) message("Autosave enabled, interval: %d seconds",autosave);
|
if (autosave) message("Autosave enabled, interval: %d seconds",autosave);
|
||||||
else message("Autosave disabled");
|
else message("Autosave disabled");
|
||||||
}
|
}
|
||||||
|
@ -8948,11 +8944,8 @@ static void Keys2d3d(void)
|
||||||
if (!f) f = levelname; else f++;
|
if (!f) f = levelname; else f++;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _WIN32
|
|
||||||
if (keystatus[KEYSC_P]) // Ctrl-P: Map playtesting
|
if (keystatus[KEYSC_P]) // Ctrl-P: Map playtesting
|
||||||
{
|
{
|
||||||
static int tp_lastkeypresstime=0;
|
|
||||||
|
|
||||||
keystatus[KEYSC_P] = 0;
|
keystatus[KEYSC_P] = 0;
|
||||||
|
|
||||||
if (!eitherALT)
|
if (!eitherALT)
|
||||||
|
@ -8962,24 +8955,56 @@ static void Keys2d3d(void)
|
||||||
|
|
||||||
if ((!eitherALT && cursectnum >= 0) || (eitherALT && startsectnum >= 0))
|
if ((!eitherALT && cursectnum >= 0) || (eitherALT && startsectnum >= 0))
|
||||||
{
|
{
|
||||||
if (tp_lastkeypresstime+120*4 >= totalclock)
|
|
||||||
message("Please wait while starting EDuke32...");
|
|
||||||
else
|
|
||||||
{
|
|
||||||
SHELLEXECUTEINFOA sinfo;
|
|
||||||
char *prog = "eduke32";
|
|
||||||
char *param = " -map autosave.map -noinstancechecking";
|
char *param = " -map autosave.map -noinstancechecking";
|
||||||
char *fullparam;
|
char *fullparam;
|
||||||
int slen;
|
char current_cwd[BMAX_PATH];
|
||||||
|
int slen = 0;
|
||||||
|
BFILE *fp;
|
||||||
|
|
||||||
tp_lastkeypresstime = totalclock;
|
if ((program_origcwd[0] == '\0') || !getcwd(current_cwd, BMAX_PATH))
|
||||||
|
current_cwd[0] = '\0';
|
||||||
|
else // Before we check if file exists, for the case there's no absolute path.
|
||||||
|
chdir(program_origcwd);
|
||||||
|
|
||||||
slen = testplay_addparam ? Bstrlen(testplay_addparam) : 0;
|
fp = fopen(game_executable, "rb"); // File exists?
|
||||||
fullparam = Bmalloc(Bstrlen(param)+slen+1);
|
if (fp != NULL)
|
||||||
if (testplay_addparam)
|
fclose(fp);
|
||||||
Bstrcpy(fullparam, testplay_addparam);
|
|
||||||
else
|
else
|
||||||
fullparam[0]=0;
|
{
|
||||||
|
#ifdef _WIN32
|
||||||
|
fullparam = Bstrrchr(mapster32_fullpath, '\\');
|
||||||
|
#else
|
||||||
|
fullparam = Bstrrchr(mapster32_fullpath, '/');
|
||||||
|
#endif
|
||||||
|
if (fullparam)
|
||||||
|
{
|
||||||
|
slen = fullparam-mapster32_fullpath+1;
|
||||||
|
Bstrncpy(game_executable, mapster32_fullpath, slen);
|
||||||
|
// game_executable is now expected to not be NULL-terminated!
|
||||||
|
Bstrcpy(game_executable+slen, DEFAULT_GAME_EXEC);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
Bstrcpy(game_executable, DEFAULT_GAME_LOCAL_EXEC);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (current_cwd[0] != '\0') // Temporarily changing back,
|
||||||
|
chdir(current_cwd); // after checking if file exists.
|
||||||
|
|
||||||
|
if (testplay_addparam)
|
||||||
|
slen = Bstrlen(testplay_addparam);
|
||||||
|
|
||||||
|
// Considering the NULL character, quatation marks
|
||||||
|
// and a possible extra space not in testplay_addparam,
|
||||||
|
// the length should be Bstrlen(game_executable)+Bstrlen(param)+(slen+1)+2+1.
|
||||||
|
|
||||||
|
fullparam = Bmalloc(Bstrlen(game_executable)+Bstrlen(param)+slen+4);
|
||||||
|
Bsprintf(fullparam,"\"%s\"",game_executable);
|
||||||
|
|
||||||
|
if (testplay_addparam)
|
||||||
|
{
|
||||||
|
Bstrcat(fullparam, " ");
|
||||||
|
Bstrcat(fullparam, testplay_addparam);
|
||||||
|
}
|
||||||
Bstrcat(fullparam, param);
|
Bstrcat(fullparam, param);
|
||||||
|
|
||||||
fixspritesectors(); //Do this before saving!
|
fixspritesectors(); //Do this before saving!
|
||||||
|
@ -8988,26 +9013,41 @@ static void Keys2d3d(void)
|
||||||
saveboard("autosave.map",&startposx,&startposy,&startposz,&startang,&startsectnum);
|
saveboard("autosave.map",&startposx,&startposy,&startposz,&startang,&startsectnum);
|
||||||
else
|
else
|
||||||
saveboard("autosave.map",&posx,&posy,&posz,&ang,&cursectnum);
|
saveboard("autosave.map",&posx,&posy,&posz,&ang,&cursectnum);
|
||||||
message("Board saved to AUTOSAVE.MAP. Starting EDuke32...");
|
message("Board saved to AUTOSAVE.MAP. Starting the game...");
|
||||||
|
|
||||||
Bmemset(&sinfo, 0, sizeof(sinfo));
|
uninitmouse();
|
||||||
sinfo.cbSize = sizeof(sinfo);
|
#ifdef _WIN32
|
||||||
sinfo.fMask = SEE_MASK_FLAG_NO_UI;
|
{
|
||||||
sinfo.lpVerb = "open";
|
STARTUPINFO si;
|
||||||
sinfo.lpFile = prog;
|
PROCESS_INFORMATION pi;
|
||||||
sinfo.lpParameters = fullparam;
|
|
||||||
sinfo.nShow = SW_SHOWNORMAL;
|
|
||||||
|
|
||||||
if (!ShellExecuteExA(&sinfo))
|
ZeroMemory(&si,sizeof(si));
|
||||||
message("Error launching EDuke32!");
|
ZeroMemory(&pi,sizeof(pi));
|
||||||
|
si.cb = sizeof(si);
|
||||||
|
|
||||||
|
if (!CreateProcess(NULL,fullparam,NULL,NULL,0,0,NULL,NULL,&si,&pi))
|
||||||
|
message("Error launching the game!");
|
||||||
|
else WaitForSingleObject(pi.hProcess,INFINITE);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
if (current_cwd[0] != '\0')
|
||||||
|
{
|
||||||
|
chdir(program_origcwd);
|
||||||
|
system(fullparam);
|
||||||
|
// message("Error launching the game!");
|
||||||
|
chdir(current_cwd);
|
||||||
|
}
|
||||||
|
else system(fullparam);
|
||||||
|
#endif
|
||||||
|
// message("Error launching the game!");
|
||||||
|
message("Game process exited");
|
||||||
|
initmouse();
|
||||||
|
|
||||||
Bfree(fullparam);
|
Bfree(fullparam);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else
|
else
|
||||||
message("Must be in valid player space for test playing.");
|
message("Position must be in valid player space to test map!");
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
if (keystatus[KEYSC_S]) // S
|
if (keystatus[KEYSC_S]) // S
|
||||||
{
|
{
|
||||||
|
@ -9135,6 +9175,8 @@ static void Keys2d3d(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
#undef EDUKE32_EXEC
|
||||||
|
#undef EDUKE32_LOCALEXEC
|
||||||
|
|
||||||
void ExtCheckKeys(void)
|
void ExtCheckKeys(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -624,6 +624,8 @@ int32 CONFIG_ReadSetup(void)
|
||||||
|
|
||||||
if (ud.config.scripthandle >= 0)
|
if (ud.config.scripthandle >= 0)
|
||||||
{
|
{
|
||||||
|
char dummybuf[64];
|
||||||
|
|
||||||
for (dummy = 0;dummy < 10;dummy++)
|
for (dummy = 0;dummy < 10;dummy++)
|
||||||
{
|
{
|
||||||
commmacro[13] = dummy+'0';
|
commmacro[13] = dummy+'0';
|
||||||
|
@ -632,7 +634,7 @@ int32 CONFIG_ReadSetup(void)
|
||||||
|
|
||||||
SCRIPT_GetString(ud.config.scripthandle, "Comm Setup","PlayerName",&tempbuf[0]);
|
SCRIPT_GetString(ud.config.scripthandle, "Comm Setup","PlayerName",&tempbuf[0]);
|
||||||
|
|
||||||
while (Bstrlen(stripcolorcodes(tempbuf,tempbuf)) > 10)
|
while (Bstrlen(stripcolorcodes(dummybuf,tempbuf)) > 10)
|
||||||
tempbuf[Bstrlen(tempbuf)-1] = '\0';
|
tempbuf[Bstrlen(tempbuf)-1] = '\0';
|
||||||
|
|
||||||
Bstrncpy(myname,tempbuf,sizeof(myname)-1);
|
Bstrncpy(myname,tempbuf,sizeof(myname)-1);
|
||||||
|
|
|
@ -10466,22 +10466,6 @@ static void Startup(void)
|
||||||
if (numplayers > 1)
|
if (numplayers > 1)
|
||||||
initprintf("Multiplayer initialized.\n");
|
initprintf("Multiplayer initialized.\n");
|
||||||
|
|
||||||
if (CONTROL_Startup(1, &GetTime, TICRATE))
|
|
||||||
{
|
|
||||||
uninitengine();
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
SetupGameButtons();
|
|
||||||
CONFIG_SetupMouse();
|
|
||||||
CONFIG_SetupJoystick();
|
|
||||||
|
|
||||||
CONTROL_JoystickEnabled = (ud.config.UseJoystick && CONTROL_JoyPresent);
|
|
||||||
CONTROL_MouseEnabled = (ud.config.UseMouse && CONTROL_MousePresent);
|
|
||||||
|
|
||||||
// JBF 20040215: evil and nasty place to do this, but joysticks are evil and nasty too
|
|
||||||
for (i=0;i<joynumaxes;i++)
|
|
||||||
setjoydeadzone(i,ud.config.JoystickAnalogueDead[i],ud.config.JoystickAnalogueSaturate[i]);
|
|
||||||
|
|
||||||
//initprintf("* Hold Esc to Abort. *\n");
|
//initprintf("* Hold Esc to Abort. *\n");
|
||||||
// initprintf("Loading art header...\n");
|
// initprintf("Loading art header...\n");
|
||||||
|
|
||||||
|
@ -11249,11 +11233,27 @@ void app_main(int argc,const char **argv)
|
||||||
SoundStartup();
|
SoundStartup();
|
||||||
loadtmb();
|
loadtmb();
|
||||||
|
|
||||||
if (VOLUMEONE)
|
/* if (VOLUMEONE)
|
||||||
{
|
{
|
||||||
if (numplayers > 4 || ud.multimode > 4)
|
if (numplayers > 4 || ud.multimode > 4)
|
||||||
gameexit(" The full version of Duke Nukem 3D supports 5 or more players.");
|
gameexit(" The full version of Duke Nukem 3D supports 5 or more players.");
|
||||||
|
} */
|
||||||
|
|
||||||
|
if (CONTROL_Startup(1, &GetTime, TICRATE))
|
||||||
|
{
|
||||||
|
uninitengine();
|
||||||
|
exit(1);
|
||||||
}
|
}
|
||||||
|
SetupGameButtons();
|
||||||
|
CONFIG_SetupMouse();
|
||||||
|
CONFIG_SetupJoystick();
|
||||||
|
|
||||||
|
CONTROL_JoystickEnabled = (ud.config.UseJoystick && CONTROL_JoyPresent);
|
||||||
|
CONTROL_MouseEnabled = (ud.config.UseMouse && CONTROL_MousePresent);
|
||||||
|
|
||||||
|
// JBF 20040215: evil and nasty place to do this, but joysticks are evil and nasty too
|
||||||
|
for (i=0;i<joynumaxes;i++)
|
||||||
|
setjoydeadzone(i,ud.config.JoystickAnalogueDead[i],ud.config.JoystickAnalogueSaturate[i]);
|
||||||
|
|
||||||
setbrightness(ud.brightness>>2,&g_player[myconnectindex].ps->palette[0],0);
|
setbrightness(ud.brightness>>2,&g_player[myconnectindex].ps->palette[0],0);
|
||||||
|
|
||||||
|
|
|
@ -218,9 +218,9 @@ extern short localartlookup[MAXTILES], localartlookupnum;
|
||||||
extern int lockclock;
|
extern int lockclock;
|
||||||
extern void clearkeys(void);
|
extern void clearkeys(void);
|
||||||
|
|
||||||
#ifdef _WIN32
|
static char program_origcwd[BMAX_PATH];
|
||||||
|
static char *mapster32_fullpath;
|
||||||
static char *testplay_addparam = 0;
|
static char *testplay_addparam = 0;
|
||||||
#endif
|
|
||||||
|
|
||||||
int gs_sprite[3][7];
|
int gs_sprite[3][7];
|
||||||
char gs_spritewhat[3][7];
|
char gs_spritewhat[3][7];
|
||||||
|
|
|
@ -876,9 +876,11 @@ void menus(void)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
// because stripcolorcodes needs a valid target and tempbuf is used in strget()
|
||||||
|
char dummybuf[64];
|
||||||
x = strget(d-50,37,buf,30,0);
|
x = strget(d-50,37,buf,30,0);
|
||||||
|
|
||||||
while (Bstrlen(stripcolorcodes(tempbuf,buf)) > 10)
|
while (Bstrlen(stripcolorcodes(dummybuf,buf)) > 10)
|
||||||
{
|
{
|
||||||
buf[Bstrlen(buf)-1] = '\0';
|
buf[Bstrlen(buf)-1] = '\0';
|
||||||
inputloc--;
|
inputloc--;
|
||||||
|
@ -3742,7 +3744,7 @@ cheat_for_port_credits:
|
||||||
modval(0,1,(int *)&ud.config.SmoothInput,1,probey == (MAXMOUSEBUTTONS-2)*2+2+2+1);
|
modval(0,1,(int *)&ud.config.SmoothInput,1,probey == (MAXMOUSEBUTTONS-2)*2+2+2+1);
|
||||||
if (probey == (MAXMOUSEBUTTONS-2)*2+2+2+1)
|
if (probey == (MAXMOUSEBUTTONS-2)*2+2+2+1)
|
||||||
{
|
{
|
||||||
mgametext(160,160+9,"THIS OPTION INCURS A MOVEMENT DELAY",0,2+8+16);
|
// mgametext(160,160+9,"THIS OPTION INCURS A MOVEMENT DELAY",0,2+8+16);
|
||||||
control_smoothmouse = ud.config.SmoothInput;
|
control_smoothmouse = ud.config.SmoothInput;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue