mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-12-25 03:00:46 +00:00
Give most of the gamevar stuff its own object
git-svn-id: https://svn.eduke32.com/eduke32@398 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
6b7ef5cd75
commit
169e0c824b
18 changed files with 1794 additions and 1895 deletions
|
@ -3489,6 +3489,20 @@ BOLT:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static short LocateTheLocator(short n,short sn)
|
||||||
|
{
|
||||||
|
short i;
|
||||||
|
|
||||||
|
i = headspritestat[7];
|
||||||
|
while (i >= 0)
|
||||||
|
{
|
||||||
|
if ((sn == -1 || sn == SECT) && n == SLT)
|
||||||
|
return i;
|
||||||
|
i = nextspritestat[i];
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
static void moveactors(void)
|
static void moveactors(void)
|
||||||
{
|
{
|
||||||
long x, m, l, *t;
|
long x, m, l, *t;
|
||||||
|
|
|
@ -149,7 +149,7 @@ char *Help3d[]= {
|
||||||
" END = PGUP/PGDN MODIFIER (512 UNITS)",
|
" END = PGUP/PGDN MODIFIER (512 UNITS)",
|
||||||
};
|
};
|
||||||
|
|
||||||
long GetTime(void)
|
static inline long GetTime(void)
|
||||||
{
|
{
|
||||||
return totalclock;
|
return totalclock;
|
||||||
}
|
}
|
||||||
|
@ -1061,7 +1061,7 @@ void ExtShowWallData(short wallnum) //F6
|
||||||
PrintStatus("Boss4 =",numsprite[BOSS4],x,y+8,11);
|
PrintStatus("Boss4 =",numsprite[BOSS4],x,y+8,11);
|
||||||
}// end ExtShowWallData
|
}// end ExtShowWallData
|
||||||
|
|
||||||
void Show2dText(char *name)
|
static void Show2dText(char *name)
|
||||||
{
|
{
|
||||||
int fp,t;
|
int fp,t;
|
||||||
unsigned char x=0,y=4,xmax=0,xx=0,col=0;
|
unsigned char x=0,y=4,xmax=0,xx=0,col=0;
|
||||||
|
@ -1107,7 +1107,7 @@ void Show2dText(char *name)
|
||||||
|
|
||||||
}// end Show2dText
|
}// end Show2dText
|
||||||
|
|
||||||
void Show3dText(char *name)
|
static void Show3dText(char *name)
|
||||||
{
|
{
|
||||||
int fp,t;
|
int fp,t;
|
||||||
unsigned char x=0,y=4,xmax=0,xx=0,col=0;
|
unsigned char x=0,y=4,xmax=0,xx=0,col=0;
|
||||||
|
@ -1151,7 +1151,7 @@ void Show3dText(char *name)
|
||||||
kclose(fp);
|
kclose(fp);
|
||||||
}// end Show3dText
|
}// end Show3dText
|
||||||
|
|
||||||
void ShowHelpText(char *name)
|
static void ShowHelpText(char *name)
|
||||||
{
|
{
|
||||||
BFILE *fp;
|
BFILE *fp;
|
||||||
char x=0,y=4;
|
char x=0,y=4;
|
||||||
|
@ -1207,7 +1207,7 @@ void ExtShowSpriteData(short spritenum) //F6
|
||||||
|
|
||||||
int fofsizex = -1;
|
int fofsizex = -1;
|
||||||
int fofsizey = -1;
|
int fofsizey = -1;
|
||||||
void ResetFOFSize()
|
static void ResetFOFSize()
|
||||||
{
|
{
|
||||||
if (fofsizex != -1) tilesizx[FOF] = fofsizex;
|
if (fofsizex != -1) tilesizx[FOF] = fofsizex;
|
||||||
if (fofsizey != -1) tilesizy[FOF] = fofsizey;
|
if (fofsizey != -1) tilesizy[FOF] = fofsizey;
|
||||||
|
@ -1368,7 +1368,7 @@ static void ExtSE40Draw(int spnum,long x,long y,long z,short a,short h)
|
||||||
|
|
||||||
} // end SE40
|
} // end SE40
|
||||||
|
|
||||||
void ExtSE40Code(long x,long y,long z,long a,long h)
|
static void SE40Code(long x,long y,long z,long a,long h)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
@ -1459,7 +1459,7 @@ void ExtEditSpriteData(short spritenum) //F8
|
||||||
else EditSpriteData(spritenum);
|
else EditSpriteData(spritenum);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PrintStatus(char *string,int num,char x,char y,char color)
|
static void PrintStatus(char *string,int num,char x,char y,char color)
|
||||||
{
|
{
|
||||||
Bsprintf(tempbuf,"%s %d",string,num);
|
Bsprintf(tempbuf,"%s %d",string,num);
|
||||||
begindrawing();
|
begindrawing();
|
||||||
|
@ -1467,12 +1467,12 @@ void PrintStatus(char *string,int num,char x,char y,char color)
|
||||||
enddrawing();
|
enddrawing();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SpriteName(short spritenum, char *lo2)
|
static inline void SpriteName(short spritenum, char *lo2)
|
||||||
{
|
{
|
||||||
Bsprintf(lo2,names[sprite[spritenum].picnum]);
|
Bsprintf(lo2,names[sprite[spritenum].picnum]);
|
||||||
}// end SpriteName
|
}// end SpriteName
|
||||||
|
|
||||||
void ReadPaletteTable()
|
static void ReadPaletteTable()
|
||||||
{
|
{
|
||||||
int i,j,fp;
|
int i,j,fp;
|
||||||
char lookup_num;
|
char lookup_num;
|
||||||
|
@ -1499,14 +1499,9 @@ void ReadPaletteTable()
|
||||||
tempbuf[j] = j;
|
tempbuf[j] = j;
|
||||||
num_tables++;
|
num_tables++;
|
||||||
makepalookup(num_tables, tempbuf, 15, 15, 15, 1);
|
makepalookup(num_tables, tempbuf, 15, 15, 15, 1);
|
||||||
num_tables++;
|
makepalookup(num_tables + 1, tempbuf, 15, 0, 0, 1);
|
||||||
makepalookup(num_tables, tempbuf, 15, 0, 0, 1);
|
makepalookup(num_tables + 2, tempbuf, 0, 15, 0, 1);
|
||||||
num_tables++;
|
makepalookup(num_tables + 3, tempbuf, 0, 0, 15, 1);
|
||||||
makepalookup(num_tables, tempbuf, 0, 15, 0, 1);
|
|
||||||
num_tables++;
|
|
||||||
makepalookup(num_tables, tempbuf, 0, 0, 15, 1);
|
|
||||||
|
|
||||||
num_tables -= 3;
|
|
||||||
|
|
||||||
kread(fp,WATERpalette,768);
|
kread(fp,WATERpalette,768);
|
||||||
kread(fp,SLIMEpalette,768);
|
kread(fp,SLIMEpalette,768);
|
||||||
|
@ -1517,7 +1512,7 @@ void ReadPaletteTable()
|
||||||
initprintf("success.\n");
|
initprintf("success.\n");
|
||||||
}// end ReadPaletteTable
|
}// end ReadPaletteTable
|
||||||
|
|
||||||
void ReadGamePalette()
|
static void ReadGamePalette()
|
||||||
{
|
{
|
||||||
int i,fp;
|
int i,fp;
|
||||||
if ((fp=kopen4load("palette.dat",0)) == -1)
|
if ((fp=kopen4load("palette.dat",0)) == -1)
|
||||||
|
@ -1536,14 +1531,14 @@ void ReadGamePalette()
|
||||||
ReadPaletteTable();
|
ReadPaletteTable();
|
||||||
}
|
}
|
||||||
|
|
||||||
void _message(char message[162])
|
static inline void _message(char message[162])
|
||||||
{
|
{
|
||||||
Bsprintf(getmessage,message);
|
Bsprintf(getmessage,message);
|
||||||
getmessageleng = strlen(getmessage);
|
getmessageleng = strlen(getmessage);
|
||||||
getmessagetimeoff = totalclock+120*5;
|
getmessagetimeoff = totalclock+120*5;
|
||||||
}
|
}
|
||||||
|
|
||||||
void message(char message[162])
|
static void message(char message[162])
|
||||||
{
|
{
|
||||||
char tmpbuf[2048];
|
char tmpbuf[2048];
|
||||||
|
|
||||||
|
@ -1558,7 +1553,7 @@ static char lockbyte4094;
|
||||||
|
|
||||||
long lastupdate, mousecol, mouseadd = 1, bstatus;
|
long lastupdate, mousecol, mouseadd = 1, bstatus;
|
||||||
|
|
||||||
void m32_showmouse(void)
|
static void m32_showmouse(void)
|
||||||
{
|
{
|
||||||
int i, j, col;
|
int i, j, col;
|
||||||
|
|
||||||
|
@ -1612,7 +1607,7 @@ void m32_showmouse(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int AskIfSure(void)
|
static int AskIfSure(void)
|
||||||
{
|
{
|
||||||
int retval=1;
|
int retval=1;
|
||||||
|
|
||||||
|
@ -1648,7 +1643,7 @@ int AskIfSure(void)
|
||||||
return(retval);
|
return(retval);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Keys3d(void)
|
static void Keys3d(void)
|
||||||
{
|
{
|
||||||
long i,count,rate,nexti;
|
long i,count,rate,nexti;
|
||||||
long j, k, templong, changedir, hiz, loz;
|
long j, k, templong, changedir, hiz, loz;
|
||||||
|
@ -3597,7 +3592,7 @@ void Keys3d(void)
|
||||||
|
|
||||||
}// end 3d
|
}// end 3d
|
||||||
|
|
||||||
void Keys2d(void)
|
static void Keys2d(void)
|
||||||
{
|
{
|
||||||
short temp=0;
|
short temp=0;
|
||||||
int i=0, j,k;
|
int i=0, j,k;
|
||||||
|
@ -3841,9 +3836,7 @@ void Keys2d(void)
|
||||||
|
|
||||||
if (keystatus[KEYSC_QUOTE] && keystatus[KEYSC_F]) // ' F
|
if (keystatus[KEYSC_QUOTE] && keystatus[KEYSC_F]) // ' F
|
||||||
{
|
{
|
||||||
void FuncMenu(void);
|
|
||||||
keystatus[KEYSC_F] = 0;
|
keystatus[KEYSC_F] = 0;
|
||||||
|
|
||||||
FuncMenu();
|
FuncMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4230,7 +4223,7 @@ void ExtSetupSpecialSpriteCols(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void InitCustomColors(void)
|
static void InitCustomColors(void)
|
||||||
{
|
{
|
||||||
/* blue */
|
/* blue */
|
||||||
/* vgapal16[9*4+0] = 63;
|
/* vgapal16[9*4+0] = 63;
|
||||||
|
@ -4523,7 +4516,7 @@ void ExtPreCheckKeys(void) // just before drawrooms
|
||||||
{
|
{
|
||||||
if (qsetmode == 200) //In 3D mode
|
if (qsetmode == 200) //In 3D mode
|
||||||
{
|
{
|
||||||
if (floor_over_floor) ExtSE40Code(posx,posy,posz,ang,horiz);
|
if (floor_over_floor) SE40Code(posx,posy,posz,ang,horiz);
|
||||||
if (purpleon) clearview(255);
|
if (purpleon) clearview(255);
|
||||||
if (sidemode != 0)
|
if (sidemode != 0)
|
||||||
{
|
{
|
||||||
|
@ -4670,7 +4663,7 @@ void ExtAnalyzeSprites(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Keys2d3d(void)
|
static void Keys2d3d(void)
|
||||||
{
|
{
|
||||||
int i, j;
|
int i, j;
|
||||||
if (keystatus[KEYSC_QUOTE]==1 && keystatus[0x1e]==1) // ' a
|
if (keystatus[KEYSC_QUOTE]==1 && keystatus[0x1e]==1) // ' a
|
||||||
|
@ -4852,7 +4845,7 @@ void faketimerhandler(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetBOSS1Palette()
|
static void SetBOSS1Palette()
|
||||||
{
|
{
|
||||||
if (acurpalette==3) return;
|
if (acurpalette==3) return;
|
||||||
acurpalette=3;
|
acurpalette=3;
|
||||||
|
@ -4860,14 +4853,14 @@ void SetBOSS1Palette()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SetSLIMEPalette()
|
static void SetSLIMEPalette()
|
||||||
{
|
{
|
||||||
if (acurpalette==2) return;
|
if (acurpalette==2) return;
|
||||||
acurpalette=2;
|
acurpalette=2;
|
||||||
kensetpalette(SLIMEpalette);
|
kensetpalette(SLIMEpalette);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetWATERPalette()
|
static void SetWATERPalette()
|
||||||
{
|
{
|
||||||
if (acurpalette==1) return;
|
if (acurpalette==1) return;
|
||||||
acurpalette=1;
|
acurpalette=1;
|
||||||
|
@ -4875,14 +4868,14 @@ void SetWATERPalette()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SetGAMEPalette()
|
static void SetGAMEPalette()
|
||||||
{
|
{
|
||||||
if (acurpalette==0) return;
|
if (acurpalette==0) return;
|
||||||
acurpalette=0;
|
acurpalette=0;
|
||||||
kensetpalette(GAMEpalette);
|
kensetpalette(GAMEpalette);
|
||||||
}
|
}
|
||||||
|
|
||||||
void kensetpalette(char *vgapal)
|
static void kensetpalette(char *vgapal)
|
||||||
{
|
{
|
||||||
long i;
|
long i;
|
||||||
char vesapal[1024];
|
char vesapal[1024];
|
||||||
|
@ -4897,7 +4890,7 @@ void kensetpalette(char *vgapal)
|
||||||
setpalette(0L,256L,vesapal);
|
setpalette(0L,256L,vesapal);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SearchSectorsForward()
|
static void SearchSectorsForward()
|
||||||
{
|
{
|
||||||
long ii=0;
|
long ii=0;
|
||||||
if (cursector_lotag!=0)
|
if (cursector_lotag!=0)
|
||||||
|
@ -4920,7 +4913,7 @@ void SearchSectorsForward()
|
||||||
printmessage16("> Sector search: none found");
|
printmessage16("> Sector search: none found");
|
||||||
}
|
}
|
||||||
|
|
||||||
void SearchSectorsBackward()
|
static void SearchSectorsBackward()
|
||||||
{
|
{
|
||||||
long ii=0;
|
long ii=0;
|
||||||
if (cursector_lotag!=0)
|
if (cursector_lotag!=0)
|
||||||
|
@ -4944,7 +4937,7 @@ void SearchSectorsBackward()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Build edit originally by Ed Coolidge <semicharm@earthlink.net>
|
// Build edit originally by Ed Coolidge <semicharm@earthlink.net>
|
||||||
void EditSectorData(short sectnum)
|
static void EditSectorData(short sectnum)
|
||||||
{
|
{
|
||||||
char disptext[80];
|
char disptext[80];
|
||||||
char edittext[80];
|
char edittext[80];
|
||||||
|
@ -5182,7 +5175,7 @@ void EditSectorData(short sectnum)
|
||||||
keystatus[1] = 0;
|
keystatus[1] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void EditWallData(short wallnum)
|
static void EditWallData(short wallnum)
|
||||||
{
|
{
|
||||||
char disptext[80];
|
char disptext[80];
|
||||||
char edittext[80];
|
char edittext[80];
|
||||||
|
@ -5315,7 +5308,7 @@ void EditWallData(short wallnum)
|
||||||
keystatus[1] = 0;
|
keystatus[1] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void EditSpriteData(short spritenum)
|
static void EditSpriteData(short spritenum)
|
||||||
{
|
{
|
||||||
char disptext[80];
|
char disptext[80];
|
||||||
char edittext[80];
|
char edittext[80];
|
||||||
|
@ -5667,7 +5660,7 @@ void EditSpriteData(short spritenum)
|
||||||
|
|
||||||
// Build edit
|
// Build edit
|
||||||
|
|
||||||
void FuncMenuOpts(void)
|
static void FuncMenuOpts(void)
|
||||||
{
|
{
|
||||||
char snotbuf[80];
|
char snotbuf[80];
|
||||||
|
|
||||||
|
@ -5726,7 +5719,7 @@ void FuncMenuOpts(void)
|
||||||
printext16(400,ydim-STATUS2DSIZ+96,11,-1,snotbuf,0); */
|
printext16(400,ydim-STATUS2DSIZ+96,11,-1,snotbuf,0); */
|
||||||
}
|
}
|
||||||
|
|
||||||
void FuncMenu(void)
|
static void FuncMenu(void)
|
||||||
{
|
{
|
||||||
char disptext[80];
|
char disptext[80];
|
||||||
unsigned char col=0, row=0, rowmax=7, dispwidth = 24, editval = 0;
|
unsigned char col=0, row=0, rowmax=7, dispwidth = 24, editval = 0;
|
||||||
|
|
|
@ -561,52 +561,6 @@ void CONFIG_SetupJoystick(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void readsavenames(void)
|
|
||||||
{
|
|
||||||
long dummy,j;
|
|
||||||
short i;
|
|
||||||
char fn[13];
|
|
||||||
BFILE *fil;
|
|
||||||
|
|
||||||
Bstrcpy(fn,"egam_.sav");
|
|
||||||
|
|
||||||
for (i=0;i<10;i++)
|
|
||||||
{
|
|
||||||
fn[4] = i+'0';
|
|
||||||
if ((fil = Bfopen(fn,"rb")) == NULL) continue;
|
|
||||||
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)
|
|
||||||
{
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
===================
|
===================
|
||||||
=
|
=
|
||||||
|
|
|
@ -35,8 +35,6 @@ extern void SoundStartup(void);
|
||||||
extern void SoundShutdown(void);
|
extern void SoundShutdown(void);
|
||||||
extern void MusicStartup(void);
|
extern void MusicStartup(void);
|
||||||
extern void MusicShutdown(void);
|
extern void MusicShutdown(void);
|
||||||
extern int USRHOOKS_GetMem(char **ptr,unsigned long size);
|
|
||||||
extern int USRHOOKS_FreeMem(char *ptr);
|
|
||||||
extern void intomenusounds(void);
|
extern void intomenusounds(void);
|
||||||
extern void playmusic(char *fn);
|
extern void playmusic(char *fn);
|
||||||
extern char loadsound(unsigned short num);
|
extern char loadsound(unsigned short num);
|
||||||
|
@ -93,66 +91,39 @@ extern void resetweapons(short snum);
|
||||||
extern void resetinventory(short snum);
|
extern void resetinventory(short snum);
|
||||||
extern void newgame(char vn,char ln,char sk);
|
extern void newgame(char vn,char ln,char sk);
|
||||||
extern void resettimevars(void);
|
extern void resettimevars(void);
|
||||||
extern void genspriteremaps(void);
|
|
||||||
extern void waitforeverybody(void);
|
extern void waitforeverybody(void);
|
||||||
extern char checksum(long sum);
|
|
||||||
extern char getsound(unsigned short num);
|
|
||||||
extern void cacheit(void);
|
extern void cacheit(void);
|
||||||
extern void dofrontscreens(char *);
|
|
||||||
extern void clearfifo(void);
|
extern void clearfifo(void);
|
||||||
extern void resetmys(void);
|
extern void resetmys(void);
|
||||||
extern int enterlevel(char g);
|
extern int enterlevel(char g);
|
||||||
extern void backtomenu(void);
|
extern void backtomenu(void);
|
||||||
extern void setpal(struct player_struct *p);
|
extern void setpal(struct player_struct *p);
|
||||||
extern void incur_damage(struct player_struct *p);
|
|
||||||
extern void quickkill(struct player_struct *p);
|
extern void quickkill(struct player_struct *p);
|
||||||
extern void forceplayerangle(struct player_struct *p);
|
|
||||||
extern void tracers(long x1,long y1,long z1,long x2,long y2,long z2,long n);
|
|
||||||
extern long hits(short i);
|
extern long hits(short i);
|
||||||
extern long hitasprite(short i,short *hitsp);
|
extern long hitasprite(short i,short *hitsp);
|
||||||
extern long hitawall(struct player_struct *p,short *hitw);
|
|
||||||
extern short aim(spritetype *s,short aang,short atwith);
|
|
||||||
extern short shoot(short i,short atwith);
|
extern short shoot(short i,short atwith);
|
||||||
extern void displayloogie(short snum);
|
|
||||||
extern void displaymasks(short snum);
|
extern void displaymasks(short snum);
|
||||||
extern void displayweapon(short snum);
|
extern void displayweapon(short snum);
|
||||||
extern void getinput(short snum);
|
extern void getinput(short snum);
|
||||||
extern char doincrements(struct player_struct *p);
|
|
||||||
extern void checkweapons(struct player_struct *p);
|
extern void checkweapons(struct player_struct *p);
|
||||||
extern void processinput(short snum);
|
extern void processinput(short snum);
|
||||||
extern void cmenu(short cm);
|
extern void cmenu(short cm);
|
||||||
extern void savetemp(char *fn,long daptr,long dasiz);
|
extern void savetemp(char *fn,long daptr,long dasiz);
|
||||||
extern void getangplayers(short snum);
|
|
||||||
// extern int loadpheader(char spot,int32 *vn,int32 *ln,int32 *psk,int32 *numplr);
|
// extern int loadpheader(char spot,int32 *vn,int32 *ln,int32 *psk,int32 *numplr);
|
||||||
extern int loadplayer(signed char spot);
|
extern int loadplayer(signed char spot);
|
||||||
extern int saveplayer(signed char spot);
|
extern int saveplayer(signed char spot);
|
||||||
extern void sendgameinfo(void);
|
|
||||||
extern int probe(int x,int y,int i,int n);
|
|
||||||
extern int menutext(int x,int y,short s,short p,char *t);
|
extern int menutext(int x,int y,short s,short p,char *t);
|
||||||
extern void bar(int x,int y,short *p,short dainc,char damodify,short s,short pa);
|
|
||||||
extern void barsm(int x,int y,short *p,short dainc,char damodify,short s,short pa);
|
|
||||||
extern void dispnames(void);
|
|
||||||
extern int getfilenames(char *path, char kind[]);
|
extern int getfilenames(char *path, char kind[]);
|
||||||
extern void sortfilenames(void);
|
|
||||||
extern void menus(void);
|
extern void menus(void);
|
||||||
extern void palto(char r,char g,char b,long e);
|
extern void palto(char r,char g,char b,long e);
|
||||||
extern void playanm(char *fn,char);
|
extern void playanm(char *fn,char);
|
||||||
extern short getincangle(short a,short na);
|
extern short getincangle(short a,short na);
|
||||||
extern char ispecial(char c);
|
|
||||||
extern char isaltok(char c);
|
|
||||||
extern void getglobalz(short sActor);
|
extern void getglobalz(short sActor);
|
||||||
extern void makeitfall(short sActor);
|
extern void makeitfall(short sActor);
|
||||||
extern void getlabel(void);
|
|
||||||
extern long keyword(void);
|
|
||||||
extern long transword(void);
|
|
||||||
extern long transnum(long type);
|
|
||||||
extern char parsecommand(void);
|
|
||||||
extern void passone(void);
|
|
||||||
extern void loadefs(char *fn);
|
extern void loadefs(char *fn);
|
||||||
extern short furthestangle(short sActor,short angs);
|
extern short furthestangle(short sActor,short angs);
|
||||||
extern void execute(const short *sActor,const short *sPlayer,const long *lDist);
|
extern void execute(const short *sActor,const short *sPlayer,const long *lDist);
|
||||||
extern void overwritesprite(long thex,long they,short tilenum,signed char shade,char stat,char dapalnum);
|
extern void overwritesprite(long thex,long they,short tilenum,signed char shade,char stat,char dapalnum);
|
||||||
extern void timerhandler(void);
|
|
||||||
extern int gametext(int x,int y,char *t,char s,short dabits);
|
extern int gametext(int x,int y,char *t,char s,short dabits);
|
||||||
extern int gametextpal(int x,int y,char *t,char s,char p);
|
extern int gametextpal(int x,int y,char *t,char s,char p);
|
||||||
extern int minitext(int x,int y,char *t,char p,short sb);
|
extern int minitext(int x,int y,char *t,char p,short sb);
|
||||||
|
@ -165,32 +136,22 @@ extern short badguy(spritetype *s);
|
||||||
extern short badguypic(short pn);
|
extern short badguypic(short pn);
|
||||||
extern void myos(long x,long y,short tilenum,signed char shade,char orientation);
|
extern void myos(long x,long y,short tilenum,signed char shade,char orientation);
|
||||||
extern void myospal(long x,long y,short tilenum,signed char shade,char orientation,char p);
|
extern void myospal(long x,long y,short tilenum,signed char shade,char orientation,char p);
|
||||||
extern void scratchmarks(long x,long y,long n,char s,char p);
|
|
||||||
extern void clocks(void);
|
|
||||||
extern void displayfragbar(void);
|
extern void displayfragbar(void);
|
||||||
extern void FTA(short q,struct player_struct *p);
|
extern void FTA(short q,struct player_struct *p);
|
||||||
extern void binscreen(void);
|
|
||||||
extern void gameexit(char *t);
|
extern void gameexit(char *t);
|
||||||
extern short strget(short x,short y,char *t,short dalen,short c);
|
extern short strget(short x,short y,char *t,short dalen,short c);
|
||||||
extern void displayrest(long smoothratio);
|
extern void displayrest(long smoothratio);
|
||||||
extern void updatesectorz(long x,long y,long z,short *sectnum);
|
extern void updatesectorz(long x,long y,long z,short *sectnum);
|
||||||
extern void drawbackground(void);
|
extern void drawbackground(void);
|
||||||
extern void displayrooms(short snum,long smoothratio);
|
extern void displayrooms(short snum,long smoothratio);
|
||||||
extern short LocateTheLocator(short n,short sn);
|
|
||||||
extern short EGS(short whatsect,long s_x,long s_y,long s_z,short s_pn,signed char s_s,signed char s_xr,signed char s_yr,short s_a,short s_ve,long s_zv,short s_ow,signed char s_ss);
|
extern short EGS(short whatsect,long s_x,long s_y,long s_z,short s_pn,signed char s_s,signed char s_xr,signed char s_yr,short s_a,short s_ve,long s_zv,short s_ow,signed char s_ss);
|
||||||
extern char wallswitchcheck(short i);
|
extern char wallswitchcheck(short i);
|
||||||
extern short spawn(short j,short pn);
|
extern short spawn(short j,short pn);
|
||||||
extern void animatesprites(long x,long y,short a,long smoothratio);
|
extern void animatesprites(long x,long y,short a,long smoothratio);
|
||||||
extern void cheats(void);
|
|
||||||
extern void nonsharedkeys(void);
|
|
||||||
extern void comlinehelp(void);
|
|
||||||
extern void checkcommandline(int argc,char **argv);
|
|
||||||
extern void printstr(short x,short y,char string[],char attribute);
|
extern void printstr(short x,short y,char string[],char attribute);
|
||||||
extern void Logo(void);
|
extern void Logo(void);
|
||||||
extern void loadtmb(void);
|
extern void loadtmb(void);
|
||||||
extern void compilecons(void);
|
extern void compilecons(void);
|
||||||
extern void Startup(long argc, char **argv);
|
|
||||||
extern void getnames(void);
|
|
||||||
extern int main(int argc,char **argv);
|
extern int main(int argc,char **argv);
|
||||||
extern void opendemowrite(void);
|
extern void opendemowrite(void);
|
||||||
extern void closedemowrite(void);
|
extern void closedemowrite(void);
|
||||||
|
@ -200,11 +161,6 @@ extern void spriteglass(short i,short n);
|
||||||
extern void ceilingglass(short i,short sectnum,short n);
|
extern void ceilingglass(short i,short sectnum,short n);
|
||||||
extern void lotsofcolourglass(short i,short wallnum,short n);
|
extern void lotsofcolourglass(short i,short wallnum,short n);
|
||||||
extern long GetTime(void);
|
extern long GetTime(void);
|
||||||
extern void CenterCenter(void);
|
|
||||||
extern void UpperLeft(void);
|
|
||||||
extern void LowerRight(void);
|
|
||||||
extern void CenterThrottle(void);
|
|
||||||
extern void CenterRudder(void);
|
|
||||||
extern void CONFIG_GetSetupFilename(void);
|
extern void CONFIG_GetSetupFilename(void);
|
||||||
extern int32 CONFIG_FunctionNameToNum(char *func);
|
extern int32 CONFIG_FunctionNameToNum(char *func);
|
||||||
extern char *CONFIG_FunctionNumToName(int32 func);
|
extern char *CONFIG_FunctionNumToName(int32 func);
|
||||||
|
@ -215,12 +171,6 @@ extern void CONFIG_ReadKeys(void);
|
||||||
extern void readsavenames(void);
|
extern void readsavenames(void);
|
||||||
extern int32 CONFIG_ReadSetup(void);
|
extern int32 CONFIG_ReadSetup(void);
|
||||||
extern void CONFIG_WriteSetup(void);
|
extern void CONFIG_WriteSetup(void);
|
||||||
extern void CheckAnimStarted(char *funcname);
|
|
||||||
extern uint16 findpage(uint16 framenumber);
|
|
||||||
extern void loadpage(uint16 pagenumber,uint16 *pagepointer);
|
|
||||||
extern void CPlayRunSkipDump(char *srcP,char *dstP);
|
|
||||||
extern void renderframe(uint16 framenumber,uint16 *pagepointer);
|
|
||||||
extern void drawframe(uint16 framenumber);
|
|
||||||
extern void updateinterpolations(void);
|
extern void updateinterpolations(void);
|
||||||
extern void setinterpolation(long *posptr);
|
extern void setinterpolation(long *posptr);
|
||||||
extern void stopinterpolation(long *posptr);
|
extern void stopinterpolation(long *posptr);
|
||||||
|
@ -258,14 +208,11 @@ extern void fadepal(int r, int g, int b, int start, int end, int step);
|
||||||
extern int minitextshade(int x,int y,char *t,char s,char p,short sb);
|
extern int minitextshade(int x,int y,char *t,char s,char p,short sb);
|
||||||
extern int gametext_(int small, int starttile, int x,int y,char *t,char s,char p,short orientation,long x1, long y1, long x2, long y2);
|
extern int gametext_(int small, int starttile, int x,int y,char *t,char s,char p,short orientation,long x1, long y1, long x2, long y2);
|
||||||
extern void txdigitalnumber(short starttile, long x,long y,long n,char s,char pal,char cs,long x1, long y1, long x2, long y2);
|
extern void txdigitalnumber(short starttile, long x,long y,long n,char s,char pal,char cs,long x1, long y1, long x2, long y2);
|
||||||
extern long txdist(spritetype *s1,spritetype *s2);
|
|
||||||
extern void myosx(long x,long y,short tilenum,signed char shade,char orientation);
|
extern void myosx(long x,long y,short tilenum,signed char shade,char orientation);
|
||||||
extern void myospalx(long x,long y,short tilenum,signed char shade,char orientation,char p);
|
extern void myospalx(long x,long y,short tilenum,signed char shade,char orientation,char p);
|
||||||
extern void ResetGameVars(void);
|
extern void ResetGameVars(void);
|
||||||
extern void ResetActorGameVars(short sActor);
|
extern void ResetActorGameVars(short sActor);
|
||||||
|
|
||||||
extern void sanitizegametype();
|
|
||||||
// extern void readnames();
|
|
||||||
extern void setupdynamictostatic();
|
extern void setupdynamictostatic();
|
||||||
extern void processnames(char *szLabel, long lValue);
|
extern void processnames(char *szLabel, long lValue);
|
||||||
|
|
||||||
|
@ -281,9 +228,10 @@ extern void InitGameVars(void);
|
||||||
extern void SaveGameVars(FILE *fil);
|
extern void SaveGameVars(FILE *fil);
|
||||||
extern int ReadGameVars(long fil);
|
extern int ReadGameVars(long fil);
|
||||||
|
|
||||||
extern int GetGameID(char *szGameLabel);
|
|
||||||
extern long GetGameVarID(int id, short sActor, short sPlayer);
|
extern long GetGameVarID(int id, short sActor, short sPlayer);
|
||||||
extern void SetGameVarID(int id, long lValue, short sActor, short sPlayer);
|
extern void SetGameVarID(int id, long lValue, short sActor, short sPlayer);
|
||||||
|
extern char AddGameVar(char *pszLabel, long lValue, unsigned long dwFlags);
|
||||||
|
extern void ReportError(int iError);
|
||||||
|
|
||||||
extern void onvideomodechange(int newmode);
|
extern void onvideomodechange(int newmode);
|
||||||
|
|
||||||
|
@ -299,6 +247,4 @@ extern void sendquit(void);
|
||||||
extern void adduserquote(char *daquote);
|
extern void adduserquote(char *daquote);
|
||||||
extern char *strip_color_codes(char *t);
|
extern char *strip_color_codes(char *t);
|
||||||
|
|
||||||
extern void get_level_from_filename(char *fn, int *volume, int *level);
|
|
||||||
|
|
||||||
#endif // __funct_h__
|
#endif // __funct_h__
|
||||||
|
|
|
@ -510,6 +510,307 @@ void getpackets(void)
|
||||||
#endif
|
#endif
|
||||||
switch (packbuf[0])
|
switch (packbuf[0])
|
||||||
{
|
{
|
||||||
|
case 0: //[0] (receive master sync buffer)
|
||||||
|
j = 1;
|
||||||
|
|
||||||
|
if ((movefifoend[other]&(TIMERUPDATESIZ-1)) == 0)
|
||||||
|
for (i=connectpoint2[connecthead];i>=0;i=connectpoint2[i])
|
||||||
|
{
|
||||||
|
if (playerquitflag[i] == 0) continue;
|
||||||
|
if (i == myconnectindex)
|
||||||
|
otherminlag = (long)((signed char)packbuf[j]);
|
||||||
|
j++;
|
||||||
|
}
|
||||||
|
|
||||||
|
osyn = (input *)&inputfifo[(movefifoend[connecthead]-1)&(MOVEFIFOSIZ-1)][0];
|
||||||
|
nsyn = (input *)&inputfifo[(movefifoend[connecthead])&(MOVEFIFOSIZ-1)][0];
|
||||||
|
|
||||||
|
k = j;
|
||||||
|
for (i=connecthead;i>=0;i=connectpoint2[i])
|
||||||
|
j += playerquitflag[i]+playerquitflag[i];
|
||||||
|
for (i=connecthead;i>=0;i=connectpoint2[i])
|
||||||
|
{
|
||||||
|
if (playerquitflag[i] == 0) continue;
|
||||||
|
|
||||||
|
l = packbuf[k++];
|
||||||
|
l += (long)(packbuf[k++]<<8);
|
||||||
|
|
||||||
|
if (i == myconnectindex)
|
||||||
|
{
|
||||||
|
j += ((l&1)<<1)+(l&2)+((l&4)>>2)+((l&8)>>3)+((l&16)>>4)+((l&32)>>5)+((l&64)>>6)+((l&128)>>7)+((l&256)>>8)+((l&512)>>9)+((l&1024)>>10)+((l&2048)>>11);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
copybufbyte(&osyn[i],&nsyn[i],sizeof(input));
|
||||||
|
if (l&1) nsyn[i].fvel = packbuf[j]+((short)packbuf[j+1]<<8), j += 2;
|
||||||
|
if (l&2) nsyn[i].svel = packbuf[j]+((short)packbuf[j+1]<<8), j += 2;
|
||||||
|
if (l&4) nsyn[i].avel = (signed char)packbuf[j++];
|
||||||
|
if (l&8) nsyn[i].bits = ((nsyn[i].bits&0xffffff00)|((long)packbuf[j++]));
|
||||||
|
if (l&16) nsyn[i].bits = ((nsyn[i].bits&0xffff00ff)|((long)packbuf[j++])<<8);
|
||||||
|
if (l&32) nsyn[i].bits = ((nsyn[i].bits&0xff00ffff)|((long)packbuf[j++])<<16);
|
||||||
|
if (l&64) nsyn[i].bits = ((nsyn[i].bits&0x00ffffff)|((long)packbuf[j++])<<24);
|
||||||
|
if (l&128) nsyn[i].horz = (signed char)packbuf[j++];
|
||||||
|
if (l&256) nsyn[i].extbits = ((nsyn[i].extbits&0xffffff00)|((long)packbuf[j++]));
|
||||||
|
if (l&512) nsyn[i].extbits = ((nsyn[i].extbits&0xffff00ff)|((long)packbuf[j++])<<8);
|
||||||
|
if (l&1024) nsyn[i].extbits = ((nsyn[i].extbits&0xff00ffff)|((long)packbuf[j++])<<16);
|
||||||
|
if (l&2048) nsyn[i].extbits = ((nsyn[i].extbits&0x00ffffff)|((long)packbuf[j++])<<24);
|
||||||
|
|
||||||
|
if (nsyn[i].bits&(1<<26)) playerquitflag[i] = 0;
|
||||||
|
movefifoend[i]++;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (j != packbufleng)
|
||||||
|
{
|
||||||
|
for (i=connecthead;i>=0;i=connectpoint2[i])
|
||||||
|
if (i != myconnectindex)
|
||||||
|
{
|
||||||
|
syncval[i][syncvalhead[i]&(MOVEFIFOSIZ-1)] = packbuf[j];
|
||||||
|
syncvalhead[i]++;
|
||||||
|
}
|
||||||
|
j++;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i=connecthead;i>=0;i=connectpoint2[i])
|
||||||
|
if (i != myconnectindex)
|
||||||
|
for (j=1;j<movesperpacket;j++)
|
||||||
|
{
|
||||||
|
copybufbyte(&nsyn[i],&inputfifo[movefifoend[i]&(MOVEFIFOSIZ-1)][i],sizeof(input));
|
||||||
|
movefifoend[i]++;
|
||||||
|
}
|
||||||
|
|
||||||
|
movefifosendplc += movesperpacket;
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 1: //[1] (receive slave sync buffer)
|
||||||
|
j = 3;
|
||||||
|
k = packbuf[1] + (long)(packbuf[2]<<8);
|
||||||
|
|
||||||
|
osyn = (input *)&inputfifo[(movefifoend[other]-1)&(MOVEFIFOSIZ-1)][0];
|
||||||
|
nsyn = (input *)&inputfifo[(movefifoend[other])&(MOVEFIFOSIZ-1)][0];
|
||||||
|
|
||||||
|
copybufbyte(&osyn[other],&nsyn[other],sizeof(input));
|
||||||
|
if (k&1) nsyn[other].fvel = packbuf[j]+((short)packbuf[j+1]<<8), j += 2;
|
||||||
|
if (k&2) nsyn[other].svel = packbuf[j]+((short)packbuf[j+1]<<8), j += 2;
|
||||||
|
if (k&4) nsyn[other].avel = (signed char)packbuf[j++];
|
||||||
|
if (k&8) nsyn[other].bits = ((nsyn[other].bits&0xffffff00)|((long)packbuf[j++]));
|
||||||
|
if (k&16) nsyn[other].bits = ((nsyn[other].bits&0xffff00ff)|((long)packbuf[j++])<<8);
|
||||||
|
if (k&32) nsyn[other].bits = ((nsyn[other].bits&0xff00ffff)|((long)packbuf[j++])<<16);
|
||||||
|
if (k&64) nsyn[other].bits = ((nsyn[other].bits&0x00ffffff)|((long)packbuf[j++])<<24);
|
||||||
|
if (k&128) nsyn[other].horz = (signed char)packbuf[j++];
|
||||||
|
if (k&256) nsyn[other].extbits = ((nsyn[other].extbits&0xffffff00)|((long)packbuf[j++]));
|
||||||
|
if (k&512) nsyn[other].extbits = ((nsyn[other].extbits&0xffff00ff)|((long)packbuf[j++])<<8);
|
||||||
|
if (k&1024) nsyn[other].extbits = ((nsyn[other].extbits&0xff00ffff)|((long)packbuf[j++])<<16);
|
||||||
|
if (k&2048) nsyn[other].extbits = ((nsyn[other].extbits&0x00ffffff)|((long)packbuf[j++])<<24);
|
||||||
|
movefifoend[other]++;
|
||||||
|
|
||||||
|
while (j != packbufleng)
|
||||||
|
{
|
||||||
|
syncval[other][syncvalhead[other]&(MOVEFIFOSIZ-1)] = packbuf[j++];
|
||||||
|
syncvalhead[other]++;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i=1;i<movesperpacket;i++)
|
||||||
|
{
|
||||||
|
copybufbyte(&nsyn[other],&inputfifo[movefifoend[other]&(MOVEFIFOSIZ-1)][other],sizeof(input));
|
||||||
|
movefifoend[other]++;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 16:
|
||||||
|
movefifoend[other] = movefifoplc = movefifosendplc = fakemovefifoplc = 0;
|
||||||
|
syncvalhead[other] = syncvaltottail = 0L;
|
||||||
|
case 17:
|
||||||
|
j = 1;
|
||||||
|
|
||||||
|
if ((movefifoend[other]&(TIMERUPDATESIZ-1)) == 0)
|
||||||
|
if (other == connecthead)
|
||||||
|
for (i=connectpoint2[connecthead];i>=0;i=connectpoint2[i])
|
||||||
|
{
|
||||||
|
if (i == myconnectindex)
|
||||||
|
otherminlag = (long)((signed char)packbuf[j]);
|
||||||
|
j++;
|
||||||
|
}
|
||||||
|
|
||||||
|
osyn = (input *)&inputfifo[(movefifoend[other]-1)&(MOVEFIFOSIZ-1)][0];
|
||||||
|
nsyn = (input *)&inputfifo[(movefifoend[other])&(MOVEFIFOSIZ-1)][0];
|
||||||
|
|
||||||
|
copybufbyte(&osyn[other],&nsyn[other],sizeof(input));
|
||||||
|
k = packbuf[j++];
|
||||||
|
k += (long)(packbuf[j++]<<8);
|
||||||
|
|
||||||
|
if (k&1) nsyn[other].fvel = packbuf[j]+((short)packbuf[j+1]<<8), j += 2;
|
||||||
|
if (k&2) nsyn[other].svel = packbuf[j]+((short)packbuf[j+1]<<8), j += 2;
|
||||||
|
if (k&4) nsyn[other].avel = (signed char)packbuf[j++];
|
||||||
|
if (k&8) nsyn[other].bits = ((nsyn[other].bits&0xffffff00)|((long)packbuf[j++]));
|
||||||
|
if (k&16) nsyn[other].bits = ((nsyn[other].bits&0xffff00ff)|((long)packbuf[j++])<<8);
|
||||||
|
if (k&32) nsyn[other].bits = ((nsyn[other].bits&0xff00ffff)|((long)packbuf[j++])<<16);
|
||||||
|
if (k&64) nsyn[other].bits = ((nsyn[other].bits&0x00ffffff)|((long)packbuf[j++])<<24);
|
||||||
|
if (k&128) nsyn[other].horz = (signed char)packbuf[j++];
|
||||||
|
if (k&256) nsyn[other].extbits = ((nsyn[other].extbits&0xffffff00)|((long)packbuf[j++]));
|
||||||
|
if (k&512) nsyn[other].extbits = ((nsyn[other].extbits&0xffff00ff)|((long)packbuf[j++])<<8);
|
||||||
|
if (k&1024) nsyn[other].extbits = ((nsyn[other].extbits&0xff00ffff)|((long)packbuf[j++])<<16);
|
||||||
|
if (k&2048) nsyn[other].extbits = ((nsyn[other].extbits&0x00ffffff)|((long)packbuf[j++])<<24);
|
||||||
|
movefifoend[other]++;
|
||||||
|
|
||||||
|
for (i=1;i<movesperpacket;i++)
|
||||||
|
{
|
||||||
|
copybufbyte(&nsyn[other],&inputfifo[movefifoend[other]&(MOVEFIFOSIZ-1)][other],sizeof(input));
|
||||||
|
movefifoend[other]++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (j > packbufleng)
|
||||||
|
initprintf("INVALID GAME PACKET!!! (packet %d, %ld too many bytes (%ld %ld))\n",packbuf[0],j-packbufleng,packbufleng,k);
|
||||||
|
|
||||||
|
while (j < packbufleng)
|
||||||
|
{
|
||||||
|
syncval[other][syncvalhead[other]&(MOVEFIFOSIZ-1)] = packbuf[j++];
|
||||||
|
syncvalhead[other]++;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 127:
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 250:
|
||||||
|
if (playerreadyflag[other] == 0)
|
||||||
|
initprintf("Player %ld is ready\n", other);
|
||||||
|
playerreadyflag[other]++;
|
||||||
|
break;
|
||||||
|
case 255:
|
||||||
|
gameexit(" ");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
switch (packbuf[0])
|
||||||
|
{
|
||||||
|
case 4:
|
||||||
|
//slaves in M/S mode only send to master
|
||||||
|
if ((!networkmode) && (myconnectindex == connecthead))
|
||||||
|
{
|
||||||
|
if (packbuf[1] == 255)
|
||||||
|
{
|
||||||
|
//Master re-transmits message to all others
|
||||||
|
for (i=connectpoint2[connecthead];i>=0;i=connectpoint2[i])
|
||||||
|
if (i != other)
|
||||||
|
sendpacket(i,packbuf,packbufleng);
|
||||||
|
}
|
||||||
|
else if (((long)packbuf[1]) != myconnectindex)
|
||||||
|
{
|
||||||
|
//Master re-transmits message not intended for master
|
||||||
|
sendpacket((long)packbuf[1],packbuf,packbufleng);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Bstrcpy(recbuf,packbuf+2);
|
||||||
|
recbuf[packbufleng-2] = 0;
|
||||||
|
|
||||||
|
adduserquote(recbuf);
|
||||||
|
sound(EXITMENUSOUND);
|
||||||
|
|
||||||
|
pus = NUMPAGES;
|
||||||
|
pub = NUMPAGES;
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 5:
|
||||||
|
//Slaves in M/S mode only send to master
|
||||||
|
//Master re-transmits message to all others
|
||||||
|
if ((!networkmode) && (myconnectindex == connecthead))
|
||||||
|
for (i=connectpoint2[connecthead];i>=0;i=connectpoint2[i])
|
||||||
|
if (i != other) sendpacket(i,packbuf,packbufleng);
|
||||||
|
|
||||||
|
if (vote_map != -1 || vote_episode != -1 || voting != -1)
|
||||||
|
adduserquote("VOTE SUCCEEDED");
|
||||||
|
|
||||||
|
ud.m_level_number = ud.level_number = packbuf[1];
|
||||||
|
ud.m_volume_number = ud.volume_number = packbuf[2];
|
||||||
|
ud.m_player_skill = ud.player_skill = packbuf[3];
|
||||||
|
ud.m_monsters_off = ud.monsters_off = packbuf[4];
|
||||||
|
ud.m_respawn_monsters = ud.respawn_monsters = packbuf[5];
|
||||||
|
ud.m_respawn_items = ud.respawn_items = packbuf[6];
|
||||||
|
ud.m_respawn_inventory = ud.respawn_inventory = packbuf[7];
|
||||||
|
ud.m_coop = packbuf[8];
|
||||||
|
ud.m_marker = ud.marker = packbuf[9];
|
||||||
|
ud.m_ffire = ud.ffire = packbuf[10];
|
||||||
|
ud.m_noexits = ud.noexits = packbuf[11];
|
||||||
|
|
||||||
|
for (i=connecthead;i>=0;i=connectpoint2[i])
|
||||||
|
{
|
||||||
|
resetweapons(i);
|
||||||
|
resetinventory(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
newgame(ud.volume_number,ud.level_number,ud.player_skill);
|
||||||
|
ud.coop = ud.m_coop;
|
||||||
|
|
||||||
|
if (enterlevel(MODE_GAME)) backtomenu();
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
//slaves in M/S mode only send to master
|
||||||
|
//Master re-transmits message to all others
|
||||||
|
if ((!networkmode) && (myconnectindex == connecthead))
|
||||||
|
for (i=connectpoint2[connecthead];i>=0;i=connectpoint2[i])
|
||||||
|
if (i != other) sendpacket(i,packbuf,packbufleng);
|
||||||
|
|
||||||
|
if (packbuf[2] != BYTEVERSION)
|
||||||
|
gameexit("\nYou cannot play Duke with different versions.");
|
||||||
|
|
||||||
|
other = packbuf[1];
|
||||||
|
|
||||||
|
for (i=3;packbuf[i];i++)
|
||||||
|
ud.user_name[other][i-3] = packbuf[i];
|
||||||
|
ud.user_name[other][i-3] = 0;
|
||||||
|
i++;
|
||||||
|
|
||||||
|
ps[other].aim_mode = packbuf[i++];
|
||||||
|
ps[other].auto_aim = packbuf[i++];
|
||||||
|
ps[other].weaponswitch = packbuf[i++];
|
||||||
|
ps[other].palookup = ud.pcolor[other] = packbuf[i++];
|
||||||
|
ud.pteam[other] = packbuf[i++];
|
||||||
|
|
||||||
|
/* if(ps[other].team != j && sprite[ps[other].i].picnum == APLAYER)
|
||||||
|
{
|
||||||
|
hittype[ps[other].i].extra = 1000;
|
||||||
|
hittype[ps[other].i].picnum = APLAYERTOP;
|
||||||
|
} */
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 10:
|
||||||
|
//slaves in M/S mode only send to master
|
||||||
|
//Master re-transmits message to all others
|
||||||
|
if ((!networkmode) && (myconnectindex == connecthead))
|
||||||
|
for (i=connectpoint2[connecthead];i>=0;i=connectpoint2[i])
|
||||||
|
if (i != other) sendpacket(i,packbuf,packbufleng);
|
||||||
|
|
||||||
|
other = packbuf[1];
|
||||||
|
|
||||||
|
i = 2;
|
||||||
|
|
||||||
|
j = i; //This used to be Duke packet #9... now concatenated with Duke packet #6
|
||||||
|
for (;i-j<10;i++) ud.wchoice[other][i-j] = packbuf[i];
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
//slaves in M/S mode only send to master
|
||||||
|
//Master re-transmits message to all others
|
||||||
|
if ((!networkmode) && (myconnectindex == connecthead))
|
||||||
|
for (i=connectpoint2[connecthead];i>=0;i=connectpoint2[i])
|
||||||
|
if (i != other) sendpacket(i,packbuf,packbufleng);
|
||||||
|
|
||||||
|
if (numlumps == 0) break;
|
||||||
|
|
||||||
|
if (SoundToggle == 0 || ud.lockout == 1 || FXDevice < 0)
|
||||||
|
break;
|
||||||
|
rtsptr = (char *)RTS_GetSound(packbuf[1]-1);
|
||||||
|
if (*rtsptr == 'C')
|
||||||
|
FX_PlayVOC3D(rtsptr,0,0,0,255,-packbuf[1]);
|
||||||
|
else
|
||||||
|
FX_PlayWAV3D(rtsptr,0,0,0,255,-packbuf[1]);
|
||||||
|
rtsplaying = 7;
|
||||||
|
break;
|
||||||
|
|
||||||
case 254:
|
case 254:
|
||||||
//slaves in M/S mode only send to master
|
//slaves in M/S mode only send to master
|
||||||
if (myconnectindex == connecthead)
|
if (myconnectindex == connecthead)
|
||||||
|
@ -641,303 +942,7 @@ void getpackets(void)
|
||||||
loadplayer(multipos);
|
loadplayer(multipos);
|
||||||
multiflag = 0;
|
multiflag = 0;
|
||||||
break;
|
break;
|
||||||
case 0: //[0] (receive master sync buffer)
|
|
||||||
j = 1;
|
|
||||||
|
|
||||||
if ((movefifoend[other]&(TIMERUPDATESIZ-1)) == 0)
|
|
||||||
for (i=connectpoint2[connecthead];i>=0;i=connectpoint2[i])
|
|
||||||
{
|
|
||||||
if (playerquitflag[i] == 0) continue;
|
|
||||||
if (i == myconnectindex)
|
|
||||||
otherminlag = (long)((signed char)packbuf[j]);
|
|
||||||
j++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
osyn = (input *)&inputfifo[(movefifoend[connecthead]-1)&(MOVEFIFOSIZ-1)][0];
|
|
||||||
nsyn = (input *)&inputfifo[(movefifoend[connecthead])&(MOVEFIFOSIZ-1)][0];
|
|
||||||
|
|
||||||
k = j;
|
|
||||||
for (i=connecthead;i>=0;i=connectpoint2[i])
|
|
||||||
j += playerquitflag[i]+playerquitflag[i];
|
|
||||||
for (i=connecthead;i>=0;i=connectpoint2[i])
|
|
||||||
{
|
|
||||||
if (playerquitflag[i] == 0) continue;
|
|
||||||
|
|
||||||
l = packbuf[k++];
|
|
||||||
l += (long)(packbuf[k++]<<8);
|
|
||||||
|
|
||||||
if (i == myconnectindex)
|
|
||||||
{
|
|
||||||
j += ((l&1)<<1)+(l&2)+((l&4)>>2)+((l&8)>>3)+((l&16)>>4)+((l&32)>>5)+((l&64)>>6)+((l&128)>>7)+((l&256)>>8)+((l&512)>>9)+((l&1024)>>10)+((l&2048)>>11);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
copybufbyte(&osyn[i],&nsyn[i],sizeof(input));
|
|
||||||
if (l&1) nsyn[i].fvel = packbuf[j]+((short)packbuf[j+1]<<8), j += 2;
|
|
||||||
if (l&2) nsyn[i].svel = packbuf[j]+((short)packbuf[j+1]<<8), j += 2;
|
|
||||||
if (l&4) nsyn[i].avel = (signed char)packbuf[j++];
|
|
||||||
if (l&8) nsyn[i].bits = ((nsyn[i].bits&0xffffff00)|((long)packbuf[j++]));
|
|
||||||
if (l&16) nsyn[i].bits = ((nsyn[i].bits&0xffff00ff)|((long)packbuf[j++])<<8);
|
|
||||||
if (l&32) nsyn[i].bits = ((nsyn[i].bits&0xff00ffff)|((long)packbuf[j++])<<16);
|
|
||||||
if (l&64) nsyn[i].bits = ((nsyn[i].bits&0x00ffffff)|((long)packbuf[j++])<<24);
|
|
||||||
if (l&128) nsyn[i].horz = (signed char)packbuf[j++];
|
|
||||||
if (l&256) nsyn[i].extbits = ((nsyn[i].extbits&0xffffff00)|((long)packbuf[j++]));
|
|
||||||
if (l&512) nsyn[i].extbits = ((nsyn[i].extbits&0xffff00ff)|((long)packbuf[j++])<<8);
|
|
||||||
if (l&1024) nsyn[i].extbits = ((nsyn[i].extbits&0xff00ffff)|((long)packbuf[j++])<<16);
|
|
||||||
if (l&2048) nsyn[i].extbits = ((nsyn[i].extbits&0x00ffffff)|((long)packbuf[j++])<<24);
|
|
||||||
|
|
||||||
if (nsyn[i].bits&(1<<26)) playerquitflag[i] = 0;
|
|
||||||
movefifoend[i]++;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (j != packbufleng)
|
|
||||||
{
|
|
||||||
for (i=connecthead;i>=0;i=connectpoint2[i])
|
|
||||||
if (i != myconnectindex)
|
|
||||||
{
|
|
||||||
syncval[i][syncvalhead[i]&(MOVEFIFOSIZ-1)] = packbuf[j];
|
|
||||||
syncvalhead[i]++;
|
|
||||||
}
|
|
||||||
j++;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i=connecthead;i>=0;i=connectpoint2[i])
|
|
||||||
if (i != myconnectindex)
|
|
||||||
for (j=1;j<movesperpacket;j++)
|
|
||||||
{
|
|
||||||
copybufbyte(&nsyn[i],&inputfifo[movefifoend[i]&(MOVEFIFOSIZ-1)][i],sizeof(input));
|
|
||||||
movefifoend[i]++;
|
|
||||||
}
|
|
||||||
|
|
||||||
movefifosendplc += movesperpacket;
|
|
||||||
|
|
||||||
break;
|
|
||||||
case 1: //[1] (receive slave sync buffer)
|
|
||||||
j = 3;
|
|
||||||
k = packbuf[1] + (long)(packbuf[2]<<8);
|
|
||||||
|
|
||||||
osyn = (input *)&inputfifo[(movefifoend[other]-1)&(MOVEFIFOSIZ-1)][0];
|
|
||||||
nsyn = (input *)&inputfifo[(movefifoend[other])&(MOVEFIFOSIZ-1)][0];
|
|
||||||
|
|
||||||
copybufbyte(&osyn[other],&nsyn[other],sizeof(input));
|
|
||||||
if (k&1) nsyn[other].fvel = packbuf[j]+((short)packbuf[j+1]<<8), j += 2;
|
|
||||||
if (k&2) nsyn[other].svel = packbuf[j]+((short)packbuf[j+1]<<8), j += 2;
|
|
||||||
if (k&4) nsyn[other].avel = (signed char)packbuf[j++];
|
|
||||||
if (k&8) nsyn[other].bits = ((nsyn[other].bits&0xffffff00)|((long)packbuf[j++]));
|
|
||||||
if (k&16) nsyn[other].bits = ((nsyn[other].bits&0xffff00ff)|((long)packbuf[j++])<<8);
|
|
||||||
if (k&32) nsyn[other].bits = ((nsyn[other].bits&0xff00ffff)|((long)packbuf[j++])<<16);
|
|
||||||
if (k&64) nsyn[other].bits = ((nsyn[other].bits&0x00ffffff)|((long)packbuf[j++])<<24);
|
|
||||||
if (k&128) nsyn[other].horz = (signed char)packbuf[j++];
|
|
||||||
if (k&256) nsyn[other].extbits = ((nsyn[other].extbits&0xffffff00)|((long)packbuf[j++]));
|
|
||||||
if (k&512) nsyn[other].extbits = ((nsyn[other].extbits&0xffff00ff)|((long)packbuf[j++])<<8);
|
|
||||||
if (k&1024) nsyn[other].extbits = ((nsyn[other].extbits&0xff00ffff)|((long)packbuf[j++])<<16);
|
|
||||||
if (k&2048) nsyn[other].extbits = ((nsyn[other].extbits&0x00ffffff)|((long)packbuf[j++])<<24);
|
|
||||||
movefifoend[other]++;
|
|
||||||
|
|
||||||
while (j != packbufleng)
|
|
||||||
{
|
|
||||||
syncval[other][syncvalhead[other]&(MOVEFIFOSIZ-1)] = packbuf[j++];
|
|
||||||
syncvalhead[other]++;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i=1;i<movesperpacket;i++)
|
|
||||||
{
|
|
||||||
copybufbyte(&nsyn[other],&inputfifo[movefifoend[other]&(MOVEFIFOSIZ-1)][other],sizeof(input));
|
|
||||||
movefifoend[other]++;
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 4:
|
|
||||||
//slaves in M/S mode only send to master
|
|
||||||
if ((!networkmode) && (myconnectindex == connecthead))
|
|
||||||
{
|
|
||||||
if (packbuf[1] == 255)
|
|
||||||
{
|
|
||||||
//Master re-transmits message to all others
|
|
||||||
for (i=connectpoint2[connecthead];i>=0;i=connectpoint2[i])
|
|
||||||
if (i != other)
|
|
||||||
sendpacket(i,packbuf,packbufleng);
|
|
||||||
}
|
|
||||||
else if (((long)packbuf[1]) != myconnectindex)
|
|
||||||
{
|
|
||||||
//Master re-transmits message not intended for master
|
|
||||||
sendpacket((long)packbuf[1],packbuf,packbufleng);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Bstrcpy(recbuf,packbuf+2);
|
|
||||||
recbuf[packbufleng-2] = 0;
|
|
||||||
|
|
||||||
adduserquote(recbuf);
|
|
||||||
sound(EXITMENUSOUND);
|
|
||||||
|
|
||||||
pus = NUMPAGES;
|
|
||||||
pub = NUMPAGES;
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 5:
|
|
||||||
//Slaves in M/S mode only send to master
|
|
||||||
//Master re-transmits message to all others
|
|
||||||
if ((!networkmode) && (myconnectindex == connecthead))
|
|
||||||
for (i=connectpoint2[connecthead];i>=0;i=connectpoint2[i])
|
|
||||||
if (i != other) sendpacket(i,packbuf,packbufleng);
|
|
||||||
|
|
||||||
if (vote_map != -1 || vote_episode != -1 || voting != -1)
|
|
||||||
adduserquote("VOTE SUCCEEDED");
|
|
||||||
|
|
||||||
ud.m_level_number = ud.level_number = packbuf[1];
|
|
||||||
ud.m_volume_number = ud.volume_number = packbuf[2];
|
|
||||||
ud.m_player_skill = ud.player_skill = packbuf[3];
|
|
||||||
ud.m_monsters_off = ud.monsters_off = packbuf[4];
|
|
||||||
ud.m_respawn_monsters = ud.respawn_monsters = packbuf[5];
|
|
||||||
ud.m_respawn_items = ud.respawn_items = packbuf[6];
|
|
||||||
ud.m_respawn_inventory = ud.respawn_inventory = packbuf[7];
|
|
||||||
ud.m_coop = packbuf[8];
|
|
||||||
ud.m_marker = ud.marker = packbuf[9];
|
|
||||||
ud.m_ffire = ud.ffire = packbuf[10];
|
|
||||||
ud.m_noexits = ud.noexits = packbuf[11];
|
|
||||||
|
|
||||||
for (i=connecthead;i>=0;i=connectpoint2[i])
|
|
||||||
{
|
|
||||||
resetweapons(i);
|
|
||||||
resetinventory(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
newgame(ud.volume_number,ud.level_number,ud.player_skill);
|
|
||||||
ud.coop = ud.m_coop;
|
|
||||||
|
|
||||||
if (enterlevel(MODE_GAME)) backtomenu();
|
|
||||||
|
|
||||||
break;
|
|
||||||
case 6:
|
|
||||||
//slaves in M/S mode only send to master
|
|
||||||
//Master re-transmits message to all others
|
|
||||||
if ((!networkmode) && (myconnectindex == connecthead))
|
|
||||||
for (i=connectpoint2[connecthead];i>=0;i=connectpoint2[i])
|
|
||||||
if (i != other) sendpacket(i,packbuf,packbufleng);
|
|
||||||
|
|
||||||
if (packbuf[2] != BYTEVERSION)
|
|
||||||
gameexit("\nYou cannot play Duke with different versions.");
|
|
||||||
|
|
||||||
other = packbuf[1];
|
|
||||||
|
|
||||||
for (i=3;packbuf[i];i++)
|
|
||||||
ud.user_name[other][i-3] = packbuf[i];
|
|
||||||
ud.user_name[other][i-3] = 0;
|
|
||||||
i++;
|
|
||||||
|
|
||||||
ps[other].aim_mode = packbuf[i++];
|
|
||||||
ps[other].auto_aim = packbuf[i++];
|
|
||||||
ps[other].weaponswitch = packbuf[i++];
|
|
||||||
ps[other].palookup = ud.pcolor[other] = packbuf[i++];
|
|
||||||
ud.pteam[other] = packbuf[i++];
|
|
||||||
|
|
||||||
/* if(ps[other].team != j && sprite[ps[other].i].picnum == APLAYER)
|
|
||||||
{
|
|
||||||
hittype[ps[other].i].extra = 1000;
|
|
||||||
hittype[ps[other].i].picnum = APLAYERTOP;
|
|
||||||
} */
|
|
||||||
|
|
||||||
break;
|
|
||||||
case 10:
|
|
||||||
//slaves in M/S mode only send to master
|
|
||||||
//Master re-transmits message to all others
|
|
||||||
if ((!networkmode) && (myconnectindex == connecthead))
|
|
||||||
for (i=connectpoint2[connecthead];i>=0;i=connectpoint2[i])
|
|
||||||
if (i != other) sendpacket(i,packbuf,packbufleng);
|
|
||||||
|
|
||||||
other = packbuf[1];
|
|
||||||
|
|
||||||
i = 2;
|
|
||||||
|
|
||||||
j = i; //This used to be Duke packet #9... now concatenated with Duke packet #6
|
|
||||||
for (;i-j<10;i++) ud.wchoice[other][i-j] = packbuf[i];
|
|
||||||
|
|
||||||
break;
|
|
||||||
case 7:
|
|
||||||
//slaves in M/S mode only send to master
|
|
||||||
//Master re-transmits message to all others
|
|
||||||
if ((!networkmode) && (myconnectindex == connecthead))
|
|
||||||
for (i=connectpoint2[connecthead];i>=0;i=connectpoint2[i])
|
|
||||||
if (i != other) sendpacket(i,packbuf,packbufleng);
|
|
||||||
|
|
||||||
if (numlumps == 0) break;
|
|
||||||
|
|
||||||
if (SoundToggle == 0 || ud.lockout == 1 || FXDevice < 0)
|
|
||||||
break;
|
|
||||||
rtsptr = (char *)RTS_GetSound(packbuf[1]-1);
|
|
||||||
if (*rtsptr == 'C')
|
|
||||||
FX_PlayVOC3D(rtsptr,0,0,0,255,-packbuf[1]);
|
|
||||||
else
|
|
||||||
FX_PlayWAV3D(rtsptr,0,0,0,255,-packbuf[1]);
|
|
||||||
rtsplaying = 7;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 16:
|
|
||||||
movefifoend[other] = movefifoplc = movefifosendplc = fakemovefifoplc = 0;
|
|
||||||
syncvalhead[other] = syncvaltottail = 0L;
|
|
||||||
case 17:
|
|
||||||
j = 1;
|
|
||||||
|
|
||||||
if ((movefifoend[other]&(TIMERUPDATESIZ-1)) == 0)
|
|
||||||
if (other == connecthead)
|
|
||||||
for (i=connectpoint2[connecthead];i>=0;i=connectpoint2[i])
|
|
||||||
{
|
|
||||||
if (i == myconnectindex)
|
|
||||||
otherminlag = (long)((signed char)packbuf[j]);
|
|
||||||
j++;
|
|
||||||
}
|
|
||||||
|
|
||||||
osyn = (input *)&inputfifo[(movefifoend[other]-1)&(MOVEFIFOSIZ-1)][0];
|
|
||||||
nsyn = (input *)&inputfifo[(movefifoend[other])&(MOVEFIFOSIZ-1)][0];
|
|
||||||
|
|
||||||
copybufbyte(&osyn[other],&nsyn[other],sizeof(input));
|
|
||||||
k = packbuf[j++];
|
|
||||||
k += (long)(packbuf[j++]<<8);
|
|
||||||
|
|
||||||
if (k&1) nsyn[other].fvel = packbuf[j]+((short)packbuf[j+1]<<8), j += 2;
|
|
||||||
if (k&2) nsyn[other].svel = packbuf[j]+((short)packbuf[j+1]<<8), j += 2;
|
|
||||||
if (k&4) nsyn[other].avel = (signed char)packbuf[j++];
|
|
||||||
if (k&8) nsyn[other].bits = ((nsyn[other].bits&0xffffff00)|((long)packbuf[j++]));
|
|
||||||
if (k&16) nsyn[other].bits = ((nsyn[other].bits&0xffff00ff)|((long)packbuf[j++])<<8);
|
|
||||||
if (k&32) nsyn[other].bits = ((nsyn[other].bits&0xff00ffff)|((long)packbuf[j++])<<16);
|
|
||||||
if (k&64) nsyn[other].bits = ((nsyn[other].bits&0x00ffffff)|((long)packbuf[j++])<<24);
|
|
||||||
if (k&128) nsyn[other].horz = (signed char)packbuf[j++];
|
|
||||||
if (k&256) nsyn[other].extbits = ((nsyn[other].extbits&0xffffff00)|((long)packbuf[j++]));
|
|
||||||
if (k&512) nsyn[other].extbits = ((nsyn[other].extbits&0xffff00ff)|((long)packbuf[j++])<<8);
|
|
||||||
if (k&1024) nsyn[other].extbits = ((nsyn[other].extbits&0xff00ffff)|((long)packbuf[j++])<<16);
|
|
||||||
if (k&2048) nsyn[other].extbits = ((nsyn[other].extbits&0x00ffffff)|((long)packbuf[j++])<<24);
|
|
||||||
movefifoend[other]++;
|
|
||||||
|
|
||||||
for (i=1;i<movesperpacket;i++)
|
|
||||||
{
|
|
||||||
copybufbyte(&nsyn[other],&inputfifo[movefifoend[other]&(MOVEFIFOSIZ-1)][other],sizeof(input));
|
|
||||||
movefifoend[other]++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (j > packbufleng)
|
|
||||||
initprintf("INVALID GAME PACKET!!! (packet %d, %ld too many bytes (%ld %ld))\n",packbuf[0],j-packbufleng,packbufleng,k);
|
|
||||||
|
|
||||||
while (j < packbufleng)
|
|
||||||
{
|
|
||||||
syncval[other][syncvalhead[other]&(MOVEFIFOSIZ-1)] = packbuf[j++];
|
|
||||||
syncvalhead[other]++;
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
case 127:
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 250:
|
|
||||||
if (playerreadyflag[other] == 0)
|
|
||||||
initprintf("Player %ld is ready\n", other);
|
|
||||||
playerreadyflag[other]++;
|
|
||||||
break;
|
|
||||||
case 255:
|
|
||||||
gameexit(" ");
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1813,23 +1818,6 @@ void txdigitalnumber(short starttile, long x,long y,long n,char s,char pal,char
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
void scratchmarks(long x,long y,long n,char s,char p)
|
|
||||||
{
|
|
||||||
long i, ni;
|
|
||||||
|
|
||||||
ni = n/5;
|
|
||||||
for(i=ni;i >= 0;i--)
|
|
||||||
{
|
|
||||||
overwritesprite(x-2,y,SCRATCH+4,s,0,0);
|
|
||||||
x += tilesizx[SCRATCH+4]-1;
|
|
||||||
}
|
|
||||||
|
|
||||||
ni = n%5;
|
|
||||||
if(ni) overwritesprite(x,y,SCRATCH+ni-1,s,p,0);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
static void displayinventory(struct player_struct *p)
|
static void displayinventory(struct player_struct *p)
|
||||||
{
|
{
|
||||||
short n, j, xoff, y;
|
short n, j, xoff, y;
|
||||||
|
@ -2533,6 +2521,13 @@ void FTA(short q,struct player_struct *p)
|
||||||
else OSD_Printf("%s %d null quote %d\n",__FILE__,__LINE__,p->ftq);
|
else OSD_Printf("%s %d null quote %d\n",__FILE__,__LINE__,p->ftq);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void fadepal(int r, int g, int b, int start, int end, int step)
|
||||||
|
{
|
||||||
|
if (getrendermode() >= 3) return;
|
||||||
|
if (step > 0) for (; start < end; start += step) palto(r,g,b,start);
|
||||||
|
else for (; start >= end; start += step) palto(r,g,b,start);
|
||||||
|
}
|
||||||
|
|
||||||
static void showtwoscreens(void)
|
static void showtwoscreens(void)
|
||||||
{
|
{
|
||||||
if (!VOLUMEALL)
|
if (!VOLUMEALL)
|
||||||
|
@ -2564,20 +2559,6 @@ static void showtwoscreens(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
void binscreen(void)
|
|
||||||
{
|
|
||||||
long fil;
|
|
||||||
#ifdef VOLUMEONE
|
|
||||||
fil = kopen4load("dukesw.bin",1);
|
|
||||||
#else
|
|
||||||
fil = kopen4load("duke3d.bin",1);
|
|
||||||
#endif
|
|
||||||
if(fil == -1) return;
|
|
||||||
kread(fil,(char *)0xb8000,4000);
|
|
||||||
kclose(fil);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
extern long qsetmode;
|
extern long qsetmode;
|
||||||
|
|
||||||
|
@ -4146,20 +4127,6 @@ void displayrooms(short snum,long smoothratio)
|
||||||
else p->visibility = ud.const_visibility;
|
else p->visibility = ud.const_visibility;
|
||||||
}
|
}
|
||||||
|
|
||||||
short LocateTheLocator(short n,short sn)
|
|
||||||
{
|
|
||||||
short i;
|
|
||||||
|
|
||||||
i = headspritestat[7];
|
|
||||||
while (i >= 0)
|
|
||||||
{
|
|
||||||
if ((sn == -1 || sn == SECT) && n == SLT)
|
|
||||||
return i;
|
|
||||||
i = nextspritestat[i];
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void dumpdebugdata(void)
|
static void dumpdebugdata(void)
|
||||||
{
|
{
|
||||||
int i,j,x;
|
int i,j,x;
|
||||||
|
@ -7194,7 +7161,7 @@ void CheatGetInventory(void)
|
||||||
|
|
||||||
signed char cheatbuf[MAXCHEATLEN],cheatbuflen;
|
signed char cheatbuf[MAXCHEATLEN],cheatbuflen;
|
||||||
|
|
||||||
void cheats(void)
|
static void cheats(void)
|
||||||
{
|
{
|
||||||
short ch, i, j, k=0, weapon;
|
short ch, i, j, k=0, weapon;
|
||||||
static char z=0;
|
static char z=0;
|
||||||
|
@ -7703,7 +7670,7 @@ FOUNDCHEAT:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void nonsharedkeys(void)
|
static void nonsharedkeys(void)
|
||||||
{
|
{
|
||||||
short i,ch;
|
short i,ch;
|
||||||
long j;
|
long j;
|
||||||
|
@ -8226,7 +8193,7 @@ FAKE_F3:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void comlinehelp(void)
|
static void comlinehelp(void)
|
||||||
{
|
{
|
||||||
char *s = "Command line help.\n"
|
char *s = "Command line help.\n"
|
||||||
"?, -?\t\tThis help message\n"
|
"?, -?\t\tThis help message\n"
|
||||||
|
@ -8482,7 +8449,7 @@ int loadgroupfiles(char *fn)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void checkcommandline(int argc,char **argv)
|
static void checkcommandline(int argc,char **argv)
|
||||||
{
|
{
|
||||||
short i, j;
|
short i, j;
|
||||||
char *c;
|
char *c;
|
||||||
|
@ -9250,7 +9217,7 @@ void compilecons(void)
|
||||||
OnEvent(EVENT_INIT, -1, -1, -1);
|
OnEvent(EVENT_INIT, -1, -1, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sanitizegametype()
|
static void sanitizegametype()
|
||||||
{
|
{
|
||||||
// initprintf("ud.m_coop=%i before sanitization\n",ud.m_coop);
|
// initprintf("ud.m_coop=%i before sanitization\n",ud.m_coop);
|
||||||
if (ud.m_coop >= num_gametypes || ud.m_coop < 0)
|
if (ud.m_coop >= num_gametypes || ud.m_coop < 0)
|
||||||
|
@ -9264,7 +9231,7 @@ void sanitizegametype()
|
||||||
// initprintf("ud.m_coop=%i after sanitisation\n",ud.m_coop);
|
// initprintf("ud.m_coop=%i after sanitisation\n",ud.m_coop);
|
||||||
}
|
}
|
||||||
|
|
||||||
void genspriteremaps(void)
|
static void genspriteremaps(void)
|
||||||
{
|
{
|
||||||
long j,fp;
|
long j,fp;
|
||||||
signed char look_pos;
|
signed char look_pos;
|
||||||
|
@ -9287,14 +9254,10 @@ void genspriteremaps(void)
|
||||||
tempbuf[j] = j;
|
tempbuf[j] = j;
|
||||||
numl++;
|
numl++;
|
||||||
makepalookup(numl, tempbuf, 15, 15, 15, 1);
|
makepalookup(numl, tempbuf, 15, 15, 15, 1);
|
||||||
numl++;
|
makepalookup(numl + 1, tempbuf, 15, 0, 0, 1);
|
||||||
makepalookup(numl, tempbuf, 15, 0, 0, 1);
|
makepalookup(numl + 2, tempbuf, 0, 15, 0, 1);
|
||||||
numl++;
|
makepalookup(numl + 3, tempbuf, 0, 0, 15, 1);
|
||||||
makepalookup(numl, tempbuf, 0, 15, 0, 1);
|
|
||||||
numl++;
|
|
||||||
makepalookup(numl, tempbuf, 0, 0, 15, 1);
|
|
||||||
|
|
||||||
numl -= 3;
|
|
||||||
kread(fp,&waterpal[0],768);
|
kread(fp,&waterpal[0],768);
|
||||||
kread(fp,&slimepal[0],768);
|
kread(fp,&slimepal[0],768);
|
||||||
kread(fp,&titlepal[0],768);
|
kread(fp,&titlepal[0],768);
|
||||||
|
@ -9311,7 +9274,7 @@ void genspriteremaps(void)
|
||||||
extern int startwin_run(void);
|
extern int startwin_run(void);
|
||||||
static void SetupGameButtons(void);
|
static void SetupGameButtons(void);
|
||||||
|
|
||||||
void Startup(long argc, char **argv)
|
static void Startup(long argc, char **argv)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
@ -9536,7 +9499,7 @@ void sendboardname(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void getnames(void)
|
static void getnames(void)
|
||||||
{
|
{
|
||||||
int l;
|
int l;
|
||||||
|
|
||||||
|
@ -9588,6 +9551,7 @@ void updateplayer(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
void writestring(long a1,long a2,long a3,short a4,long vx,long vy,long vz)
|
void writestring(long a1,long a2,long a3,short a4,long vx,long vy,long vz)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -9598,11 +9562,12 @@ void writestring(long a1,long a2,long a3,short a4,long vx,long vy,long vz)
|
||||||
fprintf(fp,"%ld %ld %ld %d %ld %ld %ld\n",a1,a2,a3,a4,vx,vy,vz);
|
fprintf(fp,"%ld %ld %ld %d %ld %ld %ld\n",a1,a2,a3,a4,vx,vy,vz);
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if 0
|
||||||
char testcd(char *fn, long testsiz);
|
char testcd(char *fn, long testsiz);
|
||||||
|
|
||||||
// JBF: various hacks here
|
// JBF: various hacks here
|
||||||
#if 0
|
|
||||||
static void copyprotect(void)
|
static void copyprotect(void)
|
||||||
{
|
{
|
||||||
// FILE *fp;
|
// FILE *fp;
|
||||||
|
@ -9651,21 +9616,6 @@ int load_script(char *szScript)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void get_level_from_filename(char *fn, int *volume, int *level)
|
|
||||||
{
|
|
||||||
for ((*volume)=0;(*volume)<MAXVOLUMES;(*volume)++)
|
|
||||||
{
|
|
||||||
for ((*level)=0;(*level)<MAXLEVELS;(*level)++)
|
|
||||||
{
|
|
||||||
if (level_file_names[((*volume)*MAXLEVELS)+(*level)] != NULL)
|
|
||||||
if (!Bstrcasecmp(fn, level_file_names[((*volume)*MAXLEVELS)+(*level)]))
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if ((*level) != MAXLEVELS)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void app_main(int argc,char **argv)
|
void app_main(int argc,char **argv)
|
||||||
{
|
{
|
||||||
int i, j;
|
int i, j;
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -50,10 +50,10 @@ extern long g_kb;
|
||||||
extern long g_looking_angSR1;
|
extern long g_looking_angSR1;
|
||||||
extern int display_bonus_screen;
|
extern int display_bonus_screen;
|
||||||
extern long lastvisinc;
|
extern long lastvisinc;
|
||||||
|
|
||||||
extern void adduserquote(char *daquote);
|
extern void adduserquote(char *daquote);
|
||||||
|
|
||||||
extern char cheatquotes[][MAXCHEATLEN];
|
extern char cheatquotes[][MAXCHEATLEN];
|
||||||
|
extern char compilefile[BMAX_PATH];
|
||||||
|
extern short total_lines,line_number;
|
||||||
|
|
||||||
typedef struct _labels {
|
typedef struct _labels {
|
||||||
char *name;
|
char *name;
|
||||||
|
@ -62,6 +62,28 @@ typedef struct _labels {
|
||||||
int maxParm2;
|
int maxParm2;
|
||||||
} LABELS;
|
} LABELS;
|
||||||
|
|
||||||
|
enum errors
|
||||||
|
{
|
||||||
|
ERROR_CLOSEBRACKET,
|
||||||
|
ERROR_EVENTONLY,
|
||||||
|
ERROR_EXCEEDSMAXTILES,
|
||||||
|
ERROR_EXPECTEDKEYWORD,
|
||||||
|
ERROR_FOUNDWITHIN,
|
||||||
|
ERROR_ISAKEYWORD,
|
||||||
|
ERROR_NOENDSWITCH,
|
||||||
|
ERROR_NOTAGAMEDEF,
|
||||||
|
ERROR_NOTAGAMEVAR,
|
||||||
|
ERROR_OPENBRACKET,
|
||||||
|
ERROR_PARAMUNDEFINED,
|
||||||
|
ERROR_SYMBOLNOTRECOGNIZED,
|
||||||
|
ERROR_SYNTAXERROR,
|
||||||
|
ERROR_VARREADONLY,
|
||||||
|
ERROR_VARTYPEMISMATCH,
|
||||||
|
WARNING_DUPLICATEDEFINITION,
|
||||||
|
WARNING_EVENTSYNC,
|
||||||
|
WARNING_LABELSONLY,
|
||||||
|
};
|
||||||
|
|
||||||
enum playerlabels {
|
enum playerlabels {
|
||||||
PLAYER_ZOOM,
|
PLAYER_ZOOM,
|
||||||
PLAYER_EXITX,
|
PLAYER_EXITX,
|
||||||
|
|
|
@ -3122,6 +3122,18 @@ static long ifsquished(short i, short p)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void forceplayerangle(struct player_struct *p)
|
||||||
|
{
|
||||||
|
short n;
|
||||||
|
|
||||||
|
n = 128-(TRAND&255);
|
||||||
|
|
||||||
|
p->horiz += 64;
|
||||||
|
p->return_to_center = 9;
|
||||||
|
p->look_ang = n>>1;
|
||||||
|
p->rotscrnang = n>>1;
|
||||||
|
}
|
||||||
|
|
||||||
static char dodge(spritetype *s)
|
static char dodge(spritetype *s)
|
||||||
{
|
{
|
||||||
short i;
|
short i;
|
||||||
|
|
1180
polymer/eduke32/source/gamevars.c
Executable file
1180
polymer/eduke32/source/gamevars.c
Executable file
File diff suppressed because it is too large
Load diff
|
@ -181,4 +181,3 @@ proj_struct projectile[MAXTILES], thisprojectile[MAXSPRITES], defaultprojectile[
|
||||||
char cheatkey[2] = { sc_D, sc_N };
|
char cheatkey[2] = { sc_D, sc_N };
|
||||||
char setupfilename[BMAX_PATH]= "duke3d.cfg";
|
char setupfilename[BMAX_PATH]= "duke3d.cfg";
|
||||||
|
|
||||||
void get_level_from_filename(char *fn, int *volume, int *level);
|
|
||||||
|
|
|
@ -2474,6 +2474,22 @@ int MV_TestPlayback(void)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
int USRHOOKS_GetMem(void **ptr, unsigned long size)
|
||||||
|
{
|
||||||
|
*ptr = malloc(size);
|
||||||
|
|
||||||
|
if (*ptr == NULL)
|
||||||
|
return(USRHOOKS_Error);
|
||||||
|
|
||||||
|
return(USRHOOKS_Ok);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int USRHOOKS_FreeMem(void *ptr)
|
||||||
|
{
|
||||||
|
free(ptr);
|
||||||
|
return(USRHOOKS_Ok);
|
||||||
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------
|
/*---------------------------------------------------------------------
|
||||||
Function: MV_Init
|
Function: MV_Init
|
||||||
|
|
|
@ -94,22 +94,23 @@ unsigned char framerateon=1,tabgraphic=2,shadepreview=0,autosave=1,sidemode=0;
|
||||||
extern long vel, svel, hvel, angvel;
|
extern long vel, svel, hvel, angvel;
|
||||||
long xvel, yvel, timoff;
|
long xvel, yvel, timoff;
|
||||||
|
|
||||||
void SearchSectorsForward();
|
static void SearchSectorsForward();
|
||||||
void SearchSectorsBackward();
|
static void SearchSectorsBackward();
|
||||||
void SpriteName(short spritenum, char *lo2);
|
static inline void SpriteName(short spritenum, char *lo2);
|
||||||
int ActorMem(long i);
|
static int ActorMem(long i);
|
||||||
void PrintStatus(char *string,int num,char x,char y,char color);
|
static void PrintStatus(char *string,int num,char x,char y,char color);
|
||||||
void SetBOSS1Palette();
|
static void SetBOSS1Palette();
|
||||||
void SetSLIMEPalette();
|
static void SetSLIMEPalette();
|
||||||
void SetWATERPalette();
|
static void SetWATERPalette();
|
||||||
void SetGAMEPalette();
|
static void SetGAMEPalette();
|
||||||
void kensetpalette(char *vgapal);
|
static void kensetpalette(char *vgapal);
|
||||||
|
|
||||||
extern short grid;
|
extern short grid;
|
||||||
|
|
||||||
extern void EditSpriteData(short spritenum);
|
static void EditSpriteData(short spritenum);
|
||||||
extern void EditWallData(short wallnum);
|
static void EditWallData(short wallnum);
|
||||||
extern void EditSectorData(short sectnum);
|
static void EditSectorData(short sectnum);
|
||||||
|
static void FuncMenu(void);
|
||||||
|
|
||||||
char GAMEpalette[768];
|
char GAMEpalette[768];
|
||||||
char WATERpalette[768];
|
char WATERpalette[768];
|
||||||
|
|
|
@ -71,6 +71,7 @@ void cmenu(short cm)
|
||||||
lastprobey = -1;
|
lastprobey = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
void savetemp(char *fn,long daptr,long dasiz)
|
void savetemp(char *fn,long daptr,long dasiz)
|
||||||
{
|
{
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
|
@ -82,24 +83,7 @@ void savetemp(char *fn,long daptr,long dasiz)
|
||||||
|
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
void getangplayers(short snum)
|
|
||||||
{
|
|
||||||
short i,a;
|
|
||||||
|
|
||||||
for (i=connecthead;i>=0;i=connectpoint2[i])
|
|
||||||
{
|
|
||||||
if (i != snum)
|
|
||||||
{
|
|
||||||
a = ps[snum].ang+getangle(ps[i].posx-ps[snum].posx,ps[i].posy-ps[snum].posy);
|
|
||||||
a = a-1024;
|
|
||||||
rotatesprite(
|
|
||||||
(320<<15) + (((sintable[(a+512)&2047])>>7)<<15),
|
|
||||||
(320<<15) - (((sintable[a&2047])>>8)<<15),
|
|
||||||
klabs(sintable[((a>>1)+768)&2047]<<2),0,APLAYER,0,ps[i].palookup,0,0,0,xdim-1,ydim-1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#define LMB (buttonstat&1)
|
#define LMB (buttonstat&1)
|
||||||
#define RMB (buttonstat&2)
|
#define RMB (buttonstat&2)
|
||||||
|
@ -191,16 +175,17 @@ static int probe_(int type,int x,int y,int i,int n)
|
||||||
else return(-probey-2);
|
else return(-probey-2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int probe(int x,int y,int i,int n)
|
static inline int probe(int x,int y,int i,int n)
|
||||||
{
|
{
|
||||||
return probe_(0,x,y,i,n);
|
return probe_(0,x,y,i,n);
|
||||||
}
|
}
|
||||||
int probesm(int x,int y,int i,int n)
|
|
||||||
|
static inline int probesm(int x,int y,int i,int n)
|
||||||
{
|
{
|
||||||
return probe_(1,x,y,i,n);
|
return probe_(1,x,y,i,n);
|
||||||
}
|
}
|
||||||
|
|
||||||
int menutext_(int x,int y,short s,short p,char *t)
|
static int menutext_(int x,int y,short s,short p,char *t)
|
||||||
{
|
{
|
||||||
short i, ac, centre;
|
short i, ac, centre;
|
||||||
|
|
||||||
|
@ -397,11 +382,11 @@ static void bar_(int type, int x,int y,short *p,short dainc,char damodify,short
|
||||||
rotatesprite((x<<16)+((65-xloc)<<(16-type)),(y<<16)+(1<<(16-type)),65536L>>type,0,SLIDEBAR+1,s,pa,10,0,0,xdim-1,ydim-1);
|
rotatesprite((x<<16)+((65-xloc)<<(16-type)),(y<<16)+(1<<(16-type)),65536L>>type,0,SLIDEBAR+1,s,pa,10,0,0,xdim-1,ydim-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void bar(int x,int y,short *p,short dainc,char damodify,short s, short pa)
|
static inline void bar(int x,int y,short *p,short dainc,char damodify,short s, short pa)
|
||||||
{
|
{
|
||||||
bar_(0,x,y,p,dainc,damodify,s,pa);
|
bar_(0,x,y,p,dainc,damodify,s,pa);
|
||||||
}
|
}
|
||||||
void barsm(int x,int y,short *p,short dainc,char damodify,short s, short pa)
|
static inline void barsm(int x,int y,short *p,short dainc,char damodify,short s, short pa)
|
||||||
{
|
{
|
||||||
bar_(1,x,y,p,dainc,damodify,s,pa);
|
bar_(1,x,y,p,dainc,damodify,s,pa);
|
||||||
}
|
}
|
||||||
|
@ -485,7 +470,7 @@ static struct savehead savehead;
|
||||||
//static char brdfn[BMAX_PATH];
|
//static char brdfn[BMAX_PATH];
|
||||||
short lastsavedpos = -1;
|
short lastsavedpos = -1;
|
||||||
|
|
||||||
void dispnames(void)
|
static void dispnames(void)
|
||||||
{
|
{
|
||||||
short x, c = 160;
|
short x, c = 160;
|
||||||
|
|
||||||
|
|
|
@ -53,14 +53,7 @@ void setpal(struct player_struct *p)
|
||||||
restorepalette = 1;
|
restorepalette = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void fadepal(int r, int g, int b, int start, int end, int step)
|
static void incur_damage(struct player_struct *p)
|
||||||
{
|
|
||||||
if (getrendermode() >= 3) return;
|
|
||||||
if (step > 0) for (; start < end; start += step) palto(r,g,b,start);
|
|
||||||
else for (; start >= end; start += step) palto(r,g,b,start);
|
|
||||||
}
|
|
||||||
|
|
||||||
void incur_damage(struct player_struct *p)
|
|
||||||
{
|
{
|
||||||
long damage = 0L, shield_damage = 0L;
|
long damage = 0L, shield_damage = 0L;
|
||||||
|
|
||||||
|
@ -112,19 +105,7 @@ void quickkill(struct player_struct *p)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void forceplayerangle(struct player_struct *p)
|
static void tracers(long x1,long y1,long z1,long x2,long y2,long z2,long n)
|
||||||
{
|
|
||||||
short n;
|
|
||||||
|
|
||||||
n = 128-(TRAND&255);
|
|
||||||
|
|
||||||
p->horiz += 64;
|
|
||||||
p->return_to_center = 9;
|
|
||||||
p->look_ang = n>>1;
|
|
||||||
p->rotscrnang = n>>1;
|
|
||||||
}
|
|
||||||
|
|
||||||
void tracers(long x1,long y1,long z1,long x2,long y2,long z2,long n)
|
|
||||||
{
|
{
|
||||||
long i, xv, yv, zv;
|
long i, xv, yv, zv;
|
||||||
short sect = -1;
|
short sect = -1;
|
||||||
|
@ -208,56 +189,7 @@ long hits(short i)
|
||||||
return (FindDistance2D(sx-SX,sy-SY));
|
return (FindDistance2D(sx-SX,sy-SY));
|
||||||
}
|
}
|
||||||
|
|
||||||
long hitasprite(short i,short *hitsp)
|
static short aim(spritetype *s,short aang,short atwith)
|
||||||
{
|
|
||||||
long sx,sy,sz,zoff;
|
|
||||||
short sect,hw;
|
|
||||||
|
|
||||||
if (badguy(&sprite[i]))
|
|
||||||
zoff = (42<<8);
|
|
||||||
else if (PN == APLAYER) zoff = (39<<8);
|
|
||||||
else zoff = 0;
|
|
||||||
|
|
||||||
hitscan(SX,SY,SZ-zoff,SECT,
|
|
||||||
sintable[(SA+512)&2047],
|
|
||||||
sintable[SA&2047],
|
|
||||||
0,§,&hw,hitsp,&sx,&sy,&sz,CLIPMASK1);
|
|
||||||
|
|
||||||
if (hw >= 0 && (wall[hw].cstat&16) && badguy(&sprite[i]))
|
|
||||||
return((1<<30));
|
|
||||||
|
|
||||||
return (FindDistance2D(sx-SX,sy-SY));
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
long hitaspriteandwall(short i,short *hitsp,short *hitw,short *x, short *y)
|
|
||||||
{
|
|
||||||
long sz;
|
|
||||||
short sect;
|
|
||||||
|
|
||||||
hitscan(SX,SY,SZ,SECT,
|
|
||||||
sintable[(SA+512)&2047],
|
|
||||||
sintable[SA&2047],
|
|
||||||
0,§,hitw,hitsp,x,y,&sz,CLIPMASK1);
|
|
||||||
|
|
||||||
return ( FindDistance2D(*x-SX,*y-SY) );
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
long hitawall(struct player_struct *p,short *hitw)
|
|
||||||
{
|
|
||||||
long sx,sy,sz;
|
|
||||||
short sect,hs;
|
|
||||||
|
|
||||||
hitscan(p->posx,p->posy,p->posz,p->cursectnum,
|
|
||||||
sintable[(p->ang+512)&2047],
|
|
||||||
sintable[p->ang&2047],
|
|
||||||
0,§,hitw,&hs,&sx,&sy,&sz,CLIPMASK0);
|
|
||||||
|
|
||||||
return (FindDistance2D(sx-p->posx,sy-p->posy));
|
|
||||||
}
|
|
||||||
|
|
||||||
short aim(spritetype *s,short aang,short atwith)
|
|
||||||
{
|
{
|
||||||
char gotshrinker,gotfreezer;
|
char gotshrinker,gotfreezer;
|
||||||
short i, j, a, k, cans;
|
short i, j, a, k, cans;
|
||||||
|
@ -331,13 +263,9 @@ short aim(spritetype *s,short aang,short atwith)
|
||||||
if (sprite[i].xrepeat < 20) continue;
|
if (sprite[i].xrepeat < 20) continue;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
else if ((PN >= GREENSLIME)&&(PN <= GREENSLIME+7))
|
else if (!(PN >= GREENSLIME && PN <= GREENSLIME+7))
|
||||||
{}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (gotfreezer && sprite[i].pal == 1) continue;
|
if (gotfreezer && sprite[i].pal == 1) continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1866,7 +1794,7 @@ SKIPBULLETHOLE:
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void displayloogie(short snum)
|
static void displayloogie(short snum)
|
||||||
{
|
{
|
||||||
long i, a, x, y, z;
|
long i, a, x, y, z;
|
||||||
|
|
||||||
|
@ -3055,7 +2983,7 @@ void getinput(short snum)
|
||||||
loc.horz = horiz;
|
loc.horz = horiz;
|
||||||
}
|
}
|
||||||
|
|
||||||
char doincrements(struct player_struct *p)
|
static char doincrements(struct player_struct *p)
|
||||||
{
|
{
|
||||||
short snum;
|
short snum;
|
||||||
|
|
||||||
|
|
|
@ -251,7 +251,7 @@ static void cachegoodsprites(void)
|
||||||
for (i=MORTER; i<MORTER+4; i++) tloadtile(i,4);
|
for (i=MORTER; i<MORTER+4; i++) tloadtile(i,4);
|
||||||
}
|
}
|
||||||
|
|
||||||
char getsound(unsigned short num)
|
static char getsound(unsigned short num)
|
||||||
{
|
{
|
||||||
short fp;
|
short fp;
|
||||||
long l;
|
long l;
|
||||||
|
@ -298,6 +298,80 @@ static void precachenecessarysounds(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void dofrontscreens(char *statustext)
|
||||||
|
{
|
||||||
|
long i=0,j;
|
||||||
|
|
||||||
|
if (ud.recstat != 2)
|
||||||
|
{
|
||||||
|
if (!statustext)
|
||||||
|
{
|
||||||
|
//ps[myconnectindex].palette = palette;
|
||||||
|
setgamepalette(&ps[myconnectindex], palette, 1); // JBF 20040308
|
||||||
|
fadepal(0,0,0, 0,64,7);
|
||||||
|
i = ud.screen_size;
|
||||||
|
ud.screen_size = 0;
|
||||||
|
vscrn();
|
||||||
|
clearview(0L);
|
||||||
|
}
|
||||||
|
|
||||||
|
SetGameVarID(g_iReturnVarID,LOADSCREEN, -1, -1);
|
||||||
|
OnEvent(EVENT_GETLOADTILE, -1, myconnectindex, -1);
|
||||||
|
j = GetGameVarID(g_iReturnVarID, -1, -1);
|
||||||
|
rotatesprite(320<<15,200<<15,65536L,0,j > MAXTILES-1?j-MAXTILES:j,0,0,2+8+64,0,0,xdim-1,ydim-1);
|
||||||
|
if (j > MAXTILES-1)
|
||||||
|
{
|
||||||
|
nextpage();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (boardfilename[0] != 0 && ud.level_number == 7 && ud.volume_number == 0)
|
||||||
|
{
|
||||||
|
menutext(160,90,0,0,"ENTERING USER MAP");
|
||||||
|
gametextpal(160,90+10,boardfilename,14,2);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
menutext(160,90,0,0,"ENTERING");
|
||||||
|
if (level_names[(ud.volume_number*MAXLEVELS) + ud.level_number] != NULL)
|
||||||
|
menutext(160,90+16+8,0,0,level_names[(ud.volume_number*MAXLEVELS) + ud.level_number]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (statustext) gametext(160,180,statustext,0,2+8+16);
|
||||||
|
|
||||||
|
nextpage();
|
||||||
|
|
||||||
|
if (!statustext)
|
||||||
|
{
|
||||||
|
fadepal(0,0,0, 63,0,-7);
|
||||||
|
|
||||||
|
KB_FlushKeyboardQueue();
|
||||||
|
ud.screen_size = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!statustext)
|
||||||
|
{
|
||||||
|
clearview(0L);
|
||||||
|
//ps[myconnectindex].palette = palette;
|
||||||
|
//palto(0,0,0,0);
|
||||||
|
setgamepalette(&ps[myconnectindex], palette, 0); // JBF 20040308
|
||||||
|
}
|
||||||
|
SetGameVarID(g_iReturnVarID,LOADSCREEN, -1, -1);
|
||||||
|
OnEvent(EVENT_GETLOADTILE, -1, myconnectindex, -1);
|
||||||
|
j = GetGameVarID(g_iReturnVarID, -1, -1);
|
||||||
|
rotatesprite(320<<15,200<<15,65536L,0,j > MAXTILES-1?j-MAXTILES:j,0,0,2+8+64,0,0,xdim-1,ydim-1);
|
||||||
|
if (j > MAXTILES-1)
|
||||||
|
{
|
||||||
|
nextpage();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
menutext(160,105,0,0,"LOADING...");
|
||||||
|
if (statustext) gametext(160,180,statustext,0,2+8+16);
|
||||||
|
nextpage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void cacheit(void)
|
void cacheit(void)
|
||||||
{
|
{
|
||||||
long i,j,k, pc=0;
|
long i,j,k, pc=0;
|
||||||
|
@ -1413,80 +1487,6 @@ void waitforeverybody()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void dofrontscreens(char *statustext)
|
|
||||||
{
|
|
||||||
long i=0,j;
|
|
||||||
|
|
||||||
if (ud.recstat != 2)
|
|
||||||
{
|
|
||||||
if (!statustext)
|
|
||||||
{
|
|
||||||
//ps[myconnectindex].palette = palette;
|
|
||||||
setgamepalette(&ps[myconnectindex], palette, 1); // JBF 20040308
|
|
||||||
fadepal(0,0,0, 0,64,7);
|
|
||||||
i = ud.screen_size;
|
|
||||||
ud.screen_size = 0;
|
|
||||||
vscrn();
|
|
||||||
clearview(0L);
|
|
||||||
}
|
|
||||||
|
|
||||||
SetGameVarID(g_iReturnVarID,LOADSCREEN, -1, -1);
|
|
||||||
OnEvent(EVENT_GETLOADTILE, -1, myconnectindex, -1);
|
|
||||||
j = GetGameVarID(g_iReturnVarID, -1, -1);
|
|
||||||
rotatesprite(320<<15,200<<15,65536L,0,j > MAXTILES-1?j-MAXTILES:j,0,0,2+8+64,0,0,xdim-1,ydim-1);
|
|
||||||
if (j > MAXTILES-1)
|
|
||||||
{
|
|
||||||
nextpage();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (boardfilename[0] != 0 && ud.level_number == 7 && ud.volume_number == 0)
|
|
||||||
{
|
|
||||||
menutext(160,90,0,0,"ENTERING USER MAP");
|
|
||||||
gametextpal(160,90+10,boardfilename,14,2);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
menutext(160,90,0,0,"ENTERING");
|
|
||||||
if (level_names[(ud.volume_number*MAXLEVELS) + ud.level_number] != NULL)
|
|
||||||
menutext(160,90+16+8,0,0,level_names[(ud.volume_number*MAXLEVELS) + ud.level_number]);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (statustext) gametext(160,180,statustext,0,2+8+16);
|
|
||||||
|
|
||||||
nextpage();
|
|
||||||
|
|
||||||
if (!statustext)
|
|
||||||
{
|
|
||||||
fadepal(0,0,0, 63,0,-7);
|
|
||||||
|
|
||||||
KB_FlushKeyboardQueue();
|
|
||||||
ud.screen_size = i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (!statustext)
|
|
||||||
{
|
|
||||||
clearview(0L);
|
|
||||||
//ps[myconnectindex].palette = palette;
|
|
||||||
//palto(0,0,0,0);
|
|
||||||
setgamepalette(&ps[myconnectindex], palette, 0); // JBF 20040308
|
|
||||||
}
|
|
||||||
SetGameVarID(g_iReturnVarID,LOADSCREEN, -1, -1);
|
|
||||||
OnEvent(EVENT_GETLOADTILE, -1, myconnectindex, -1);
|
|
||||||
j = GetGameVarID(g_iReturnVarID, -1, -1);
|
|
||||||
rotatesprite(320<<15,200<<15,65536L,0,j > MAXTILES-1?j-MAXTILES:j,0,0,2+8+64,0,0,xdim-1,ydim-1);
|
|
||||||
if (j > MAXTILES-1)
|
|
||||||
{
|
|
||||||
nextpage();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
menutext(160,105,0,0,"LOADING...");
|
|
||||||
if (statustext) gametext(160,180,statustext,0,2+8+16);
|
|
||||||
nextpage();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
extern char jump_input;
|
extern char jump_input;
|
||||||
|
|
||||||
void clearfifo(void)
|
void clearfifo(void)
|
||||||
|
@ -1535,6 +1535,21 @@ extern void adduserquote(char *daquote);
|
||||||
|
|
||||||
extern int gotvote[MAXPLAYERS], votes[MAXPLAYERS], voting, vote_map, vote_episode;
|
extern int gotvote[MAXPLAYERS], votes[MAXPLAYERS], voting, vote_map, vote_episode;
|
||||||
|
|
||||||
|
static void get_level_from_filename(char *fn, int *volume, int *level)
|
||||||
|
{
|
||||||
|
for ((*volume)=0;(*volume)<MAXVOLUMES;(*volume)++)
|
||||||
|
{
|
||||||
|
for ((*level)=0;(*level)<MAXLEVELS;(*level)++)
|
||||||
|
{
|
||||||
|
if (level_file_names[((*volume)*MAXLEVELS)+(*level)] != NULL)
|
||||||
|
if (!Bstrcasecmp(fn, level_file_names[((*volume)*MAXLEVELS)+(*level)]))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if ((*level) != MAXLEVELS)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int enterlevel(char g)
|
int enterlevel(char g)
|
||||||
{
|
{
|
||||||
short i;
|
short i;
|
||||||
|
|
|
@ -22,6 +22,52 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
#include "duke3d.h"
|
#include "duke3d.h"
|
||||||
|
|
||||||
|
void readsavenames(void)
|
||||||
|
{
|
||||||
|
long dummy,j;
|
||||||
|
short i;
|
||||||
|
char fn[13];
|
||||||
|
BFILE *fil;
|
||||||
|
|
||||||
|
Bstrcpy(fn,"egam_.sav");
|
||||||
|
|
||||||
|
for (i=0;i<10;i++)
|
||||||
|
{
|
||||||
|
fn[4] = i+'0';
|
||||||
|
if ((fil = Bfopen(fn,"rb")) == NULL) continue;
|
||||||
|
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)
|
||||||
|
{
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int loadpheader(char spot,struct savehead *saveh)
|
int loadpheader(char spot,struct savehead *saveh)
|
||||||
{
|
{
|
||||||
char fn[13];
|
char fn[13];
|
||||||
|
|
|
@ -3180,6 +3180,41 @@ CHECKINV1:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
long hitasprite(short i,short *hitsp)
|
||||||
|
{
|
||||||
|
long sx,sy,sz,zoff;
|
||||||
|
short sect,hw;
|
||||||
|
|
||||||
|
if (badguy(&sprite[i]))
|
||||||
|
zoff = (42<<8);
|
||||||
|
else if (PN == APLAYER) zoff = (39<<8);
|
||||||
|
else zoff = 0;
|
||||||
|
|
||||||
|
hitscan(SX,SY,SZ-zoff,SECT,
|
||||||
|
sintable[(SA+512)&2047],
|
||||||
|
sintable[SA&2047],
|
||||||
|
0,§,&hw,hitsp,&sx,&sy,&sz,CLIPMASK1);
|
||||||
|
|
||||||
|
if (hw >= 0 && (wall[hw].cstat&16) && badguy(&sprite[i]))
|
||||||
|
return((1<<30));
|
||||||
|
|
||||||
|
return (FindDistance2D(sx-SX,sy-SY));
|
||||||
|
}
|
||||||
|
|
||||||
|
static long hitawall(struct player_struct *p,short *hitw)
|
||||||
|
{
|
||||||
|
long sx,sy,sz;
|
||||||
|
short sect,hs;
|
||||||
|
|
||||||
|
hitscan(p->posx,p->posy,p->posz,p->cursectnum,
|
||||||
|
sintable[(p->ang+512)&2047],
|
||||||
|
sintable[p->ang&2047],
|
||||||
|
0,§,hitw,&hs,&sx,&sy,&sz,CLIPMASK0);
|
||||||
|
|
||||||
|
return (FindDistance2D(sx-p->posx,sy-p->posy));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void checksectors(short snum)
|
void checksectors(short snum)
|
||||||
{
|
{
|
||||||
long i = -1,oldz;
|
long i = -1,oldz;
|
||||||
|
|
|
@ -157,23 +157,6 @@ void MusicUpdate(void)
|
||||||
MUSIC_Update();
|
MUSIC_Update();
|
||||||
}
|
}
|
||||||
|
|
||||||
int USRHOOKS_GetMem(char **ptr, unsigned long size)
|
|
||||||
{
|
|
||||||
*ptr = malloc(size);
|
|
||||||
|
|
||||||
if (*ptr == NULL)
|
|
||||||
return(USRHOOKS_Error);
|
|
||||||
|
|
||||||
return(USRHOOKS_Ok);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
int USRHOOKS_FreeMem(char *ptr)
|
|
||||||
{
|
|
||||||
free(ptr);
|
|
||||||
return(USRHOOKS_Ok);
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned char menunum=0;
|
unsigned char menunum=0;
|
||||||
|
|
||||||
void intomenusounds(void)
|
void intomenusounds(void)
|
||||||
|
|
Loading…
Reference in a new issue