New event/userdef CON extensions to allow fiddling with the movement interpolation in multiplayer.

git-svn-id: https://svn.eduke32.com/eduke32@296 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
terminx 2006-09-19 23:02:33 +00:00
parent c1f5d7fd0d
commit 4f021f4736
8 changed files with 244 additions and 47 deletions

View file

@ -4099,10 +4099,13 @@ int ExtInit(void)
int asperr;
#if defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
addsearchpath("/usr/share/games/eduke32");
addsearchpath("/usr/local/games/eduke32");
addsearchpath("/usr/share/games/jfduke3d");
addsearchpath("/usr/local/share/games/jfduke3d");
addsearchpath("/usr/share/games/eduke32");
addsearchpath("/usr/local/share/games/eduke32");
#elif defined(__APPLE__)
addsearchpath("/Library/Application Support/EDuke32");
addsearchpath("/Library/Application Support/JFDuke3D");
addsearchpath("/Library/Application Support/EDuke32");
#endif
if (getcwd(cwd,BMAX_PATH)) addsearchpath(cwd);
if ((homedir = Bgethomedir())) {

View file

@ -562,8 +562,8 @@ void readsavenames(void)
if(dfread(&j,sizeof(long),1,fil) != 1) { Bfclose(fil); continue; }
if(dfread(g_szBuf,j,1,fil) != 1) { Bfclose(fil); continue; }
if (dfread(&dummy,4,1,fil) != 1) { Bfclose(fil); continue; }
if(dummy != BYTEVERSION) return;
if (dfread(&dummy,4,1,fil) != 1) { Bfclose(fil); continue; }
if(dummy != BYTEVERSION) { Bfclose(fil); continue; }
if (dfread(&dummy,4,1,fil) != 1) { Bfclose(fil); continue; }
if (dfread(&ud.savegame[i][0],19,1,fil) != 1) { ud.savegame[i][0] = 0; }
Bfclose(fil);
}

View file

@ -136,7 +136,7 @@ enum gamemodes {
#define MAXCYCLERS 1024
#define MAXSCRIPTSIZE 65536
#define MAXSCRIPTSIZE 98304
#define MAXANIMATES 256
@ -702,13 +702,14 @@ enum events {
EVENT_DOFIRE,
EVENT_PRESSEDFIRE,
EVENT_USE,
EVENT_PROCESSINPUT
EVENT_PROCESSINPUT,
EVENT_FAKEDOMOVETHINGS
};
// store global game definitions
enum gamevarflags {
MAXGAMEVARS = 1024,
MAXGAMEVARS = 2048,
MAXVARLABEL = 26,
GAMEVAR_FLAG_NORMAL = 0, // normal
GAMEVAR_FLAG_PERPLAYER = 1, // per-player variable

View file

@ -8935,9 +8935,12 @@ void app_main(int argc,char **argv)
initprintf("Copyright (c) 2006 EDuke32 team\n");
#if defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
addsearchpath("/usr/share/games/jfduke3d");
addsearchpath("/usr/local/share/games/jfduke3d");
addsearchpath("/usr/share/games/eduke32");
addsearchpath("/usr/local/share/games/eduke32");
#elif defined(__APPLE__)
addsearchpath("/Library/Application Support/JFDuke3D");
addsearchpath("/Library/Application Support/EDuke32");
#endif
@ -9873,6 +9876,8 @@ void fakedomovethings(void)
syn = (input *)&inputfifo[fakemovefifoplc&(MOVEFIFOSIZ-1)][myconnectindex];
OnEvent(EVENT_FAKEDOMOVETHINGS, ps[myconnectindex].i, myconnectindex, -1);
p = &ps[myconnectindex];
backcstat = sprite[p->i].cstat;

View file

@ -817,6 +817,27 @@ LABELS userdefslabels[]= {
{ "automsg", USERDEFS_AUTOMSG, 0, 0 },
{ "idplayers", USERDEFS_IDPLAYERS, 0, 0 },
{ "team", USERDEFS_TEAM, 0, 0 },
{ "myx", USERDEFS_MYX, 0, 0 },
{ "omyx", USERDEFS_OMYX, 0, 0 },
{ "myxvel", USERDEFS_MYXVEL, 0, 0 },
{ "myy", USERDEFS_MYY, 0, 0 },
{ "omyy", USERDEFS_OMYY, 0, 0 },
{ "myyvel", USERDEFS_MYYVEL, 0, 0 },
{ "myz", USERDEFS_MYZ, 0, 0 },
{ "omyz", USERDEFS_OMYZ, 0, 0 },
{ "myzvel", USERDEFS_MYZVEL, 0, 0 },
{ "myhoriz", USERDEFS_MYHORIZ, 0, 0 },
{ "omyhoriz", USERDEFS_OMYHORIZ, 0, 0 },
{ "myhorizoff", USERDEFS_MYHORIZOFF, 0, 0 },
{ "omyhorizoff", USERDEFS_OMYHORIZOFF, 0, 0 },
{ "myang", USERDEFS_MYANG, 0, 0 },
{ "omyang", USERDEFS_OMYANG, 0, 0 },
{ "mycursectnum", USERDEFS_MYCURSECTNUM, 0, 0 },
{ "myjumpingcounter", USERDEFS_MYJUMPINGCOUNTER, 0, 0 },
{ "myjumpingtoggle", USERDEFS_MYJUMPINGTOGGLE, 0, 0 },
{ "myonground", USERDEFS_MYONGROUND, 0, 0 },
{ "myhardlanding", USERDEFS_MYHARDLANDING, 0, 0 },
{ "myreturntocenter", USERDEFS_MYRETURNTOCENTER, 0, 0 },
{ "", -1, 0, 0 } // END OF LIST
};
@ -1022,6 +1043,7 @@ char CheckEventSync(int iEventID)
case EVENT_DISPLAYCROSSHAIR:
case EVENT_DISPLAYREST:
case EVENT_ENTERLEVEL:
case EVENT_FAKEDOMOVETHINGS:
case EVENT_GETLOADTILE:
case EVENT_GETMENUTILE:
case EVENT_INIT:
@ -1796,19 +1818,19 @@ void transvartype(int type)
*scriptptr++=i;
}
inline void transvar(void)
static inline void transvar(void)
{
transvartype(0);
}
inline void transmultvarstype(int type, char num)
static inline void transmultvarstype(int type, char num)
{
char i;
for(i=0;i<num;i++)
transvartype(type);
}
inline void transmultvars(char num)
static inline void transmultvars(char num)
{
transmultvarstype(0,num);
}
@ -1951,6 +1973,9 @@ char parsecommand(void)
if( (error+warning) > 63 || ( *textptr == '\0' ) || ( *(textptr+1) == '\0' ) ) return 1;
if(condebug)
ReportError(-1);
if (checking_switch > 0 )
{
//Bsprintf(g_szBuf,"PC(): '%.25s'",textptr);
@ -2732,8 +2757,8 @@ char parsecommand(void)
if(j > 2)
{
ReportError(-1);
error++;
initprintf("%s:%ld: error: invalid useractor type.\n",compilefile,line_number);
initprintf("%s:%ld: warning: invalid useractor type.\n",compilefile,line_number);
j = 0;
}
transnum(LABEL_DEFINE);
@ -4763,11 +4788,11 @@ repeatcase:
if (j != 25) continue;
if (keyword() != -1) {
initprintf("Version 1.3D CON files detected.\n");
initprintf("Duke Nukem 3D v1.3D style CON files detected.\n");
break;
} else {
conversion = 14;
initprintf("Version 1.4+ CON files detected.\n");
initprintf("Duke Nukem 3D v1.4+ style CON files detected.\n");
}
}
@ -5531,6 +5556,7 @@ void AddDefaultDefinitions(void)
AddDefinition("EVENT_DRAWWEAPON",EVENT_DRAWWEAPON,LABEL_DEFINE);
AddDefinition("EVENT_EGS",EVENT_EGS,LABEL_DEFINE);
AddDefinition("EVENT_ENTERLEVEL",EVENT_ENTERLEVEL,LABEL_DEFINE);
AddDefinition("EVENT_FAKEDOMOVETHINGS",EVENT_FAKEDOMOVETHINGS,LABEL_DEFINE);
AddDefinition("EVENT_FIRE",EVENT_FIRE,LABEL_DEFINE);
AddDefinition("EVENT_FIREWEAPON",EVENT_FIREWEAPON,LABEL_DEFINE);
AddDefinition("EVENT_GAME",EVENT_GAME,LABEL_DEFINE);

View file

@ -291,7 +291,29 @@ enum userdefslabels {
USERDEFS_AUTOVOTE,
USERDEFS_AUTOMSG,
USERDEFS_IDPLAYERS,
USERDEFS_TEAM
USERDEFS_TEAM,
// this stuff isn't really userdef stuff, but getuserdef/setuserdef is already set up for what I want to do
USERDEFS_MYX,
USERDEFS_OMYX,
USERDEFS_MYXVEL,
USERDEFS_MYY,
USERDEFS_OMYY,
USERDEFS_MYYVEL,
USERDEFS_MYZ,
USERDEFS_OMYZ,
USERDEFS_MYZVEL,
USERDEFS_MYHORIZ,
USERDEFS_OMYHORIZ,
USERDEFS_MYHORIZOFF,
USERDEFS_OMYHORIZOFF,
USERDEFS_MYANG,
USERDEFS_OMYANG,
USERDEFS_MYCURSECTNUM,
USERDEFS_MYJUMPINGCOUNTER,
USERDEFS_MYJUMPINGTOGGLE,
USERDEFS_MYONGROUND,
USERDEFS_MYHARDLANDING,
USERDEFS_MYRETURNTOCENTER
};
enum sectorlabels {

View file

@ -656,6 +656,153 @@ void DoUserDef(char bSet, long lLabelID, long lVar2, short sActor, short sPlayer
SetGameVarID((int)lVar2, ud.team, sActor, sPlayer);
break;
case USERDEFS_MYX:
if(bSet)
myx = lValue;
else
SetGameVarID((int)lVar2, myx, sActor, sPlayer);
break;
case USERDEFS_OMYX:
if(bSet)
omyx = lValue;
else
SetGameVarID((int)lVar2, omyx, sActor, sPlayer);
break;
case USERDEFS_MYXVEL:
if(bSet)
myxvel = lValue;
else
SetGameVarID((int)lVar2, myxvel, sActor, sPlayer);
break;
case USERDEFS_MYY:
if(bSet)
myy = lValue;
else
SetGameVarID((int)lVar2, myy, sActor, sPlayer);
break;
case USERDEFS_OMYY:
if(bSet)
omyy = lValue;
else
SetGameVarID((int)lVar2, omyy, sActor, sPlayer);
break;
case USERDEFS_MYYVEL:
if(bSet)
myyvel = lValue;
else
SetGameVarID((int)lVar2, myyvel, sActor, sPlayer);
break;
case USERDEFS_MYZ:
if(bSet)
myx = lValue;
else
SetGameVarID((int)lVar2, myx, sActor, sPlayer);
break;
case USERDEFS_OMYZ:
if(bSet)
omyz = lValue;
else
SetGameVarID((int)lVar2, omyz, sActor, sPlayer);
break;
case USERDEFS_MYZVEL:
if(bSet)
myzvel = lValue;
else
SetGameVarID((int)lVar2, myzvel, sActor, sPlayer);
break;
case USERDEFS_MYHORIZ:
if(bSet)
myhoriz = lValue;
else
SetGameVarID((int)lVar2, myhoriz, sActor, sPlayer);
break;
case USERDEFS_OMYHORIZ:
if(bSet)
omyhoriz = lValue;
else
SetGameVarID((int)lVar2, omyhoriz, sActor, sPlayer);
break;
case USERDEFS_MYHORIZOFF:
if(bSet)
myhorizoff = lValue;
else
SetGameVarID((int)lVar2, myhorizoff, sActor, sPlayer);
break;
case USERDEFS_OMYHORIZOFF:
if(bSet)
omyhorizoff = lValue;
else
SetGameVarID((int)lVar2, omyhorizoff, sActor, sPlayer);
break;
case USERDEFS_MYANG:
if(bSet)
myang = lValue;
else
SetGameVarID((int)lVar2, myang, sActor, sPlayer);
break;
case USERDEFS_OMYANG:
if(bSet)
omyang = lValue;
else
SetGameVarID((int)lVar2, omyang, sActor, sPlayer);
break;
case USERDEFS_MYCURSECTNUM:
if(bSet)
mycursectnum = lValue;
else
SetGameVarID((int)lVar2, mycursectnum, sActor, sPlayer);
break;
case USERDEFS_MYJUMPINGCOUNTER:
if(bSet)
myjumpingcounter = lValue;
else
SetGameVarID((int)lVar2, myjumpingcounter, sActor, sPlayer);
break;
case USERDEFS_MYJUMPINGTOGGLE:
if(bSet)
myjumpingtoggle = lValue;
else
SetGameVarID((int)lVar2, myjumpingtoggle, sActor, sPlayer);
break;
case USERDEFS_MYONGROUND:
if(bSet)
myonground = lValue;
else
SetGameVarID((int)lVar2, myonground, sActor, sPlayer);
break;
case USERDEFS_MYHARDLANDING:
if(bSet)
myhardlanding = lValue;
else
SetGameVarID((int)lVar2, myhardlanding, sActor, sPlayer);
break;
case USERDEFS_MYRETURNTOCENTER:
if(bSet)
myreturntocenter = lValue;
else
SetGameVarID((int)lVar2, myreturntocenter, sActor, sPlayer);
break;
default:
break;
}
@ -5368,8 +5515,8 @@ SKIPJIBS:
{
long var1, var2, var3, var4, sq, dq;
insptr++;
dq = *insptr++;
sq = *insptr++;
dq = *insptr++;
sq = *insptr++;
if(fta_quotes[sq] != NULL && fta_quotes[dq] != NULL)
{
Bstrcpy(tempbuf,fta_quotes[sq]);
@ -5813,19 +5960,16 @@ good:
lVar3=*insptr++;
lSprite=GetGameVarID(lVar1, g_i, g_p);
if(lSprite >= 0)
switch(tw)
{
switch(tw)
{
case CON_SETACTORVAR:
lTemp=GetGameVarID(lVar3, g_i, g_p);
SetGameVarID(lVar2, lTemp, lSprite, g_p);
break;
case CON_GETACTORVAR:
lTemp=GetGameVarID(lVar2, lSprite, g_p);
SetGameVarID(lVar3, lTemp, g_i, g_p);
break;
}
case CON_SETACTORVAR:
lTemp=GetGameVarID(lVar3, g_i, g_p);
SetGameVarID(lVar2, lTemp, lSprite, g_p);
break;
case CON_GETACTORVAR:
lTemp=GetGameVarID(lVar2, lSprite, g_p);
SetGameVarID(lVar3, lTemp, g_i, g_p);
break;
}
break;
}
@ -5846,19 +5990,16 @@ good:
lVar3=*insptr++;
lSprite=GetGameVarID(lVar1, g_i, g_p);
if(lSprite >= 0)
switch(tw)
{
switch(tw)
{
case CON_SETPLAYERVAR:
lTemp=GetGameVarID(lVar3, g_i, g_p);
SetGameVarID(lVar2, lTemp, g_i, lSprite);
break;
case CON_GETPLAYERVAR:
lTemp=GetGameVarID(lVar2, g_i, lSprite);
SetGameVarID(lVar3, lTemp, g_i, g_p);
break;
}
case CON_SETPLAYERVAR:
lTemp=GetGameVarID(lVar3, g_i, g_p);
SetGameVarID(lVar2, lTemp, g_i, lSprite);
break;
case CON_GETPLAYERVAR:
lTemp=GetGameVarID(lVar2, g_i, lSprite);
SetGameVarID(lVar3, lTemp, g_i, g_p);
break;
}
break;
}
@ -6686,9 +6827,8 @@ good:
}
default:
Bsprintf(tempbuf,"fatal error: Default processing in parse(): %ld, %ld\ncurrent actor: %d %d",*insptr,*(insptr-1),g_i,g_sp->picnum);
AddLog(tempbuf);
gameexit("An error has occurred in the EDuke32 CON parser.\n\nPlease mail all of your CON files along with the file eduke32.log\nto terminx@gmail.com.\n\nThank you.");
OSD_Printf("fatal error: default processing: %ld, %ld\ncurrent actor: %d (%d)\n",*insptr,*(insptr-1),g_i,g_sp->picnum);
gameexit("An error has occurred in the EDuke32 CON executor.\n\nPlease mail all of your CON files along with the file eduke32.log\nto terminx@gmail.com.\n\nThank you.");
break;
}
return 0;

View file

@ -38,7 +38,7 @@ int loadpheader(char spot,struct savehead *saveh)
if(kdfread(&bv,sizeof(bv),1,fil) != 1) goto corrupt;
if(kdfread(g_szBuf,bv,1,fil) != 1) goto corrupt;
g_szBuf[bv]=0;
AddLog(g_szBuf);
// AddLog(g_szBuf);
if (kdfread(&bv,4,1,fil) != 1) goto corrupt;
if(bv != BYTEVERSION) {
@ -113,7 +113,7 @@ int loadplayer(signed char spot)
if(kdfread(&bv,sizeof(bv),1,fil) != 1) goto corrupt;
if(kdfread(g_szBuf,bv,1,fil) != 1) goto corrupt;
g_szBuf[bv]=0;
AddLog(g_szBuf);
// AddLog(g_szBuf);
if (kdfread(&bv,4,1,fil) != 1) return -1;
if(bv != BYTEVERSION)