mirror of
https://github.com/ZDoom/Raze.git
synced 2025-02-07 07:21:10 +00:00
Add support for changing to a new user map in a multiplayer game. If a client doesn't have the map, a second map change packet is sent back to the server to unset the user map.
git-svn-id: https://svn.eduke32.com/eduke32@76 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
478b2abc4f
commit
5d97323553
4 changed files with 150 additions and 76 deletions
|
@ -352,4 +352,6 @@ extern int isspritemakingsound(short i, int num);
|
||||||
extern int issoundplaying(int num);
|
extern int issoundplaying(int num);
|
||||||
extern void stopspritesound(short num, short i);
|
extern void stopspritesound(short num, short i);
|
||||||
extern void updatenames(void);
|
extern void updatenames(void);
|
||||||
|
extern void sendboardname(void);
|
||||||
|
|
||||||
#endif // __funct_h__
|
#endif // __funct_h__
|
||||||
|
|
|
@ -325,6 +325,31 @@ void getpackets(void)
|
||||||
{
|
{
|
||||||
switch(packbuf[0])
|
switch(packbuf[0])
|
||||||
{
|
{
|
||||||
|
case 9:
|
||||||
|
//slaves in M/S mode only send to master
|
||||||
|
if (myconnectindex == connecthead)
|
||||||
|
{
|
||||||
|
//Master re-transmits message to all others
|
||||||
|
for(i=connectpoint2[connecthead];i>=0;i=connectpoint2[i])
|
||||||
|
if (i != other)
|
||||||
|
sendpacket(i,packbuf,packbufleng);
|
||||||
|
}
|
||||||
|
|
||||||
|
strcpy(boardfilename,packbuf+1);
|
||||||
|
boardfilename[packbufleng-1] = 0;
|
||||||
|
if(boardfilename[0] != 0)
|
||||||
|
{
|
||||||
|
if ((i = kopen4load(boardfilename,0)) < 0) {
|
||||||
|
Bmemset(boardfilename,0,sizeof(boardfilename));
|
||||||
|
sendboardname();
|
||||||
|
} else kclose(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(ud.m_level_number == 7 && ud.m_volume_number == 0 && boardfilename[0] == 0)
|
||||||
|
ud.m_level_number = 0;
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
case 126:
|
case 126:
|
||||||
//Slaves in M/S mode only send to master
|
//Slaves in M/S mode only send to master
|
||||||
//Master re-transmits message to all others
|
//Master re-transmits message to all others
|
||||||
|
@ -2892,15 +2917,16 @@ void drawbackground(void)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// when not rendering a game, fullscreen wipe
|
// when not rendering a game, fullscreen wipe
|
||||||
SetGameVarID(g_iReturnVarID,tilesizx[MENUSCREEN]==320&&tilesizy[MENUSCREEN]==200?MENUSCREEN:BIGHOLE, -1, -1);
|
#define MENUTILE bpp==8?MENUSCREEN:LOADSCREEN
|
||||||
|
SetGameVarID(g_iReturnVarID,tilesizx[MENUTILE]==320&&tilesizy[MENUTILE]==200?MENUTILE:BIGHOLE, -1, -1);
|
||||||
OnEvent(EVENT_GETMENUTILE, -1, -1, -1);
|
OnEvent(EVENT_GETMENUTILE, -1, -1, -1);
|
||||||
if (GetGameVar("MENU_TILE", tilesizx[MENUSCREEN]==320&&tilesizy[MENUSCREEN]==200?0:1, -1, -1))
|
if (GetGameVar("MENU_TILE", tilesizx[MENUTILE]==320&&tilesizy[MENUTILE]==200?0:1, -1, -1))
|
||||||
{
|
{
|
||||||
for(y=y1;y<y2;y+=tilesizy[GetGameVarID(g_iReturnVarID, -1, -1)])
|
for(y=y1;y<y2;y+=tilesizy[GetGameVarID(g_iReturnVarID, -1, -1)])
|
||||||
for(x=0;x<xdim;x+=tilesizx[GetGameVarID(g_iReturnVarID, -1, -1)])
|
for(x=0;x<xdim;x+=tilesizx[GetGameVarID(g_iReturnVarID, -1, -1)])
|
||||||
rotatesprite(x<<16,y<<16,65536L,0,GetGameVarID(g_iReturnVarID, -1, -1),bpp==8?16:8,0,8+16+64+128,0,0,xdim-1,ydim-1);
|
rotatesprite(x<<16,y<<16,65536L,0,GetGameVarID(g_iReturnVarID, -1, -1),bpp==8?16:8,0,8+16+64+128,0,0,xdim-1,ydim-1);
|
||||||
}
|
}
|
||||||
else rotatesprite(320<<15,200<<15,65536L,0,GetGameVarID(g_iReturnVarID, -1, -1),bpp==8?16:0,0,2+8+64,0,0,xdim-1,ydim-1);
|
else rotatesprite(320<<15,200<<15,65536L,0,GetGameVarID(g_iReturnVarID, -1, -1),bpp==8?16:8,0,2+8+64,0,0,xdim-1,ydim-1);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
y2 = scale(ydim,200-scale(tilesizy[BOTTOMSTATUSBAR],ud.statusbarscale,100),200);
|
y2 = scale(ydim,200-scale(tilesizy[BOTTOMSTATUSBAR],ud.statusbarscale,100),200);
|
||||||
|
@ -8115,6 +8141,28 @@ void syncnames(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void sendboardname(void)
|
||||||
|
{
|
||||||
|
if(ud.multimode > 1)
|
||||||
|
{
|
||||||
|
int j;
|
||||||
|
int ch;
|
||||||
|
|
||||||
|
tempbuf[0] = 9;
|
||||||
|
tempbuf[1] = 0;
|
||||||
|
|
||||||
|
j = strlen(boardfilename);
|
||||||
|
boardfilename[j] = 0;
|
||||||
|
strcat(tempbuf+1,boardfilename);
|
||||||
|
|
||||||
|
for(ch=connecthead;ch >= 0;ch=connectpoint2[ch])
|
||||||
|
{
|
||||||
|
if (ch != myconnectindex) sendpacket(ch,tempbuf,j+1);
|
||||||
|
if ((!networkmode) && (myconnectindex != connecthead)) break; //slaves in M/S mode only send to master
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void getnames(void)
|
void getnames(void)
|
||||||
{
|
{
|
||||||
int l;
|
int l;
|
||||||
|
@ -8125,6 +8173,7 @@ void getnames(void)
|
||||||
if(numplayers > 1)
|
if(numplayers > 1)
|
||||||
{
|
{
|
||||||
syncnames();
|
syncnames();
|
||||||
|
sendboardname();
|
||||||
getpackets();
|
getpackets();
|
||||||
|
|
||||||
waitforeverybody();
|
waitforeverybody();
|
||||||
|
|
|
@ -723,7 +723,6 @@ void menus(void)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 20010:
|
case 20010:
|
||||||
//note: this menu does not seem to be used and has not been updated to support custom game types
|
|
||||||
rotatesprite(160<<16,19<<16,65536L,0,MENUBAR,16,0,10,0,0,xdim-1,ydim-1);
|
rotatesprite(160<<16,19<<16,65536L,0,MENUBAR,16,0,10,0,0,xdim-1,ydim-1);
|
||||||
menutext(160,24,0,0,"HOST NETWORK GAME");
|
menutext(160,24,0,0,"HOST NETWORK GAME");
|
||||||
|
|
||||||
|
@ -746,9 +745,6 @@ void menus(void)
|
||||||
minitext(90,60+8+8+8+8, "FRIENDLY FIRE",2,26);
|
minitext(90,60+8+8+8+8, "FRIENDLY FIRE",2,26);
|
||||||
minitext(90,60+8+8+8+8+8, "USER MAP" ,2,26);
|
minitext(90,60+8+8+8+8+8, "USER MAP" ,2,26);
|
||||||
|
|
||||||
/* if (ud.m_coop == 1) minitext(90+60,60,"COOPERATIVE PLAY",0,26);
|
|
||||||
else if (ud.m_coop == 2) minitext(90+60,60,"DUKEMATCH (NO SPAWN)",0,26);
|
|
||||||
else minitext(90+60,60,"DUKEMATCH (SPAWN)",0,26);*/
|
|
||||||
gametext(90+60,60,gametype_names[ud.m_coop],0,26);
|
gametext(90+60,60,gametype_names[ud.m_coop],0,26);
|
||||||
|
|
||||||
minitext(90+60,60+8, volume_names[ud.m_volume_number],0,26);
|
minitext(90+60,60+8, volume_names[ud.m_volume_number],0,26);
|
||||||
|
@ -1923,9 +1919,14 @@ cheat_for_port_credits:
|
||||||
}
|
}
|
||||||
|
|
||||||
if(x == -1) {
|
if(x == -1) {
|
||||||
cmenu(100);
|
|
||||||
clearfilenames();
|
clearfilenames();
|
||||||
boardfilename[0] = 0;
|
boardfilename[0] = 0;
|
||||||
|
if(ud.multimode > 1)
|
||||||
|
{
|
||||||
|
sendboardname();
|
||||||
|
cmenu(600);
|
||||||
|
probey = last_probey;
|
||||||
|
} else cmenu(100);
|
||||||
}
|
}
|
||||||
else if(x >= 0)
|
else if(x >= 0)
|
||||||
{
|
{
|
||||||
|
@ -1941,14 +1942,17 @@ cheat_for_port_credits:
|
||||||
strcat(boardfilename, findfileshigh->name);
|
strcat(boardfilename, findfileshigh->name);
|
||||||
ud.m_volume_number = 0;
|
ud.m_volume_number = 0;
|
||||||
ud.m_level_number = 7;
|
ud.m_level_number = 7;
|
||||||
cmenu(110);
|
if(ud.multimode > 1)
|
||||||
|
{
|
||||||
|
sendboardname();
|
||||||
|
cmenu(600);
|
||||||
|
probey = last_probey;
|
||||||
|
} else cmenu(110);
|
||||||
}
|
}
|
||||||
clearfilenames();
|
clearfilenames();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
case 110:
|
case 110:
|
||||||
c = (320>>1);
|
c = (320>>1);
|
||||||
rotatesprite(c<<16,19<<16,65536L,0,MENUBAR,16,0,10,0,0,xdim-1,ydim-1);
|
rotatesprite(c<<16,19<<16,65536L,0,MENUBAR,16,0,10,0,0,xdim-1,ydim-1);
|
||||||
|
@ -2788,7 +2792,7 @@ cheat_for_port_credits:
|
||||||
{
|
{
|
||||||
short sense;
|
short sense;
|
||||||
sense = CONTROL_GetMouseSensitivity()>>10;
|
sense = CONTROL_GetMouseSensitivity()>>10;
|
||||||
barsm(248,128,&sense,4,x==(MAXMOUSEBUTTONS-2)*2+2,SHX(-7),PHX(-7));
|
barsm(248,128,&sense,4,x==(MAXMOUSEBUTTONS-2)*2+2,MENUHIGHLIGHT((MAXMOUSEBUTTONS-2)*2+2),PHX(-7));
|
||||||
CONTROL_SetMouseSensitivity( sense<<10 );
|
CONTROL_SetMouseSensitivity( sense<<10 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3979,7 +3983,7 @@ VOLUME_ALL_40x:
|
||||||
modval(0,num_gametypes-1,(int *)&ud.m_coop,1,probey==0);
|
modval(0,num_gametypes-1,(int *)&ud.m_coop,1,probey==0);
|
||||||
if(!VOLUMEONE)
|
if(!VOLUMEONE)
|
||||||
modval(0,num_volumes-1,(int *)&ud.m_volume_number,1,probey==1);
|
modval(0,num_volumes-1,(int *)&ud.m_volume_number,1,probey==1);
|
||||||
modval(0,ud.m_volume_number == 0?6:10,(int *)&ud.m_level_number,1,probey==2);
|
modval(0,ud.m_volume_number == 0?6+(boardfilename[0]!=0):10,(int *)&ud.m_level_number,1,probey==2);
|
||||||
|
|
||||||
if((gametype_flags[ud.m_coop] & GAMETYPE_FLAG_MARKEROPTION))
|
if((gametype_flags[ud.m_coop] & GAMETYPE_FLAG_MARKEROPTION))
|
||||||
modval(0,1,(int *)&ud.m_marker,1,probey==4);
|
modval(0,1,(int *)&ud.m_marker,1,probey==4);
|
||||||
|
@ -4009,7 +4013,7 @@ VOLUME_ALL_40x:
|
||||||
case 2:
|
case 2:
|
||||||
ud.m_level_number++;
|
ud.m_level_number++;
|
||||||
if (!VOLUMEONE) {
|
if (!VOLUMEONE) {
|
||||||
if(ud.m_volume_number == 0 && ud.m_level_number > 6)
|
if(ud.m_volume_number == 0 && ud.m_level_number > 6+(boardfilename[0]!=0))
|
||||||
ud.m_level_number = 0;
|
ud.m_level_number = 0;
|
||||||
} else {
|
} else {
|
||||||
if(ud.m_volume_number == 0 && ud.m_level_number > 5)
|
if(ud.m_volume_number == 0 && ud.m_level_number > 5)
|
||||||
|
@ -4046,48 +4050,52 @@ VOLUME_ALL_40x:
|
||||||
|
|
||||||
case 6:
|
case 6:
|
||||||
if (VOLUMEALL) {
|
if (VOLUMEALL) {
|
||||||
if(boardfilename[0] == 0) break;
|
/* if(boardfilename[0] == 0) break;
|
||||||
|
|
||||||
tempbuf[0] = 5;
|
tempbuf[0] = 5;
|
||||||
tempbuf[1] = ud.m_level_number = 7;
|
tempbuf[1] = ud.m_level_number = 7;
|
||||||
tempbuf[2] = ud.m_volume_number = 0;
|
tempbuf[2] = ud.m_volume_number = 0;
|
||||||
tempbuf[3] = ud.m_player_skill+1;
|
tempbuf[3] = ud.m_player_skill+1;
|
||||||
|
|
||||||
ud.level_number = ud.m_level_number;
|
ud.level_number = ud.m_level_number;
|
||||||
ud.volume_number = ud.m_volume_number;
|
ud.volume_number = ud.m_volume_number;
|
||||||
|
|
||||||
if( ud.m_player_skill == 3 ) ud.m_respawn_monsters = 1;
|
if( ud.m_player_skill == 3 ) ud.m_respawn_monsters = 1;
|
||||||
else ud.m_respawn_monsters = 0;
|
else ud.m_respawn_monsters = 0;
|
||||||
|
|
||||||
if((gametype_flags[ud.m_coop] & GAMETYPE_FLAG_ITEMRESPAWN)) ud.m_respawn_items = 1;
|
if((gametype_flags[ud.m_coop] & GAMETYPE_FLAG_ITEMRESPAWN)) ud.m_respawn_items = 1;
|
||||||
else ud.m_respawn_items = 0;
|
else ud.m_respawn_items = 0;
|
||||||
|
|
||||||
ud.m_respawn_inventory = 1;
|
ud.m_respawn_inventory = 1;
|
||||||
|
|
||||||
tempbuf[4] = ud.m_monsters_off;
|
tempbuf[4] = ud.m_monsters_off;
|
||||||
tempbuf[5] = ud.m_respawn_monsters;
|
tempbuf[5] = ud.m_respawn_monsters;
|
||||||
tempbuf[6] = ud.m_respawn_items;
|
tempbuf[6] = ud.m_respawn_items;
|
||||||
tempbuf[7] = ud.m_respawn_inventory;
|
tempbuf[7] = ud.m_respawn_inventory;
|
||||||
tempbuf[8] = ud.m_coop;
|
tempbuf[8] = ud.m_coop;
|
||||||
tempbuf[9] = ud.m_marker;
|
tempbuf[9] = ud.m_marker;
|
||||||
tempbuf[10] = ud.m_ffire;
|
tempbuf[10] = ud.m_ffire;
|
||||||
|
|
||||||
for(c=connecthead;c>=0;c=connectpoint2[c])
|
for(c=connecthead;c>=0;c=connectpoint2[c])
|
||||||
{
|
{
|
||||||
resetweapons(c);
|
resetweapons(c);
|
||||||
resetinventory(c);
|
resetinventory(c);
|
||||||
}
|
}
|
||||||
for(c=connecthead;c>=0;c=connectpoint2[c])
|
for(c=connecthead;c>=0;c=connectpoint2[c])
|
||||||
{
|
{
|
||||||
if (c != myconnectindex) sendpacket(c,tempbuf,11);
|
if (c != myconnectindex) sendpacket(c,tempbuf,11);
|
||||||
if ((!networkmode) && (myconnectindex != connecthead)) break; //slaves in M/S mode only send to master
|
if ((!networkmode) && (myconnectindex != connecthead)) break; //slaves in M/S mode only send to master
|
||||||
}
|
}
|
||||||
|
|
||||||
newgame(ud.m_volume_number,ud.m_level_number,ud.m_player_skill+1);
|
newgame(ud.m_volume_number,ud.m_level_number,ud.m_player_skill+1);
|
||||||
if (enterlevel(MODE_GAME)) backtomenu();
|
if (enterlevel(MODE_GAME)) backtomenu();
|
||||||
|
|
||||||
return;
|
return; */
|
||||||
|
currentlist = 1;
|
||||||
|
last_probey = probey;
|
||||||
|
cmenu(101);
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
case 7:
|
case 7:
|
||||||
|
|
||||||
tempbuf[0] = 5;
|
tempbuf[0] = 5;
|
||||||
|
@ -4135,68 +4143,58 @@ VOLUME_ALL_40x:
|
||||||
//if(ud.m_coop==1) gametext(c+70,57-7-9,"COOPERATIVE PLAY",0,2+8+16);
|
//if(ud.m_coop==1) gametext(c+70,57-7-9,"COOPERATIVE PLAY",0,2+8+16);
|
||||||
//else if(ud.m_coop==2) gametext(c+70,57-7-9,"DUKEMATCH (NO SPAWN)",0,2+8+16);
|
//else if(ud.m_coop==2) gametext(c+70,57-7-9,"DUKEMATCH (NO SPAWN)",0,2+8+16);
|
||||||
//else gametext(c+70,57-7-9,"DUKEMATCH (SPAWN)",0,2+8+16);
|
//else gametext(c+70,57-7-9,"DUKEMATCH (SPAWN)",0,2+8+16);
|
||||||
gametext(c+70,57-7-9,gametype_names[ud.m_coop],0,2+8+16);
|
gametext(c+70,57-7-9,gametype_names[ud.m_coop],MENUHIGHLIGHT(0),2+8+16);
|
||||||
if (VOLUMEONE) {
|
if (VOLUMEONE) {
|
||||||
gametext(c+70,57+16-7-9,volume_names[ud.m_volume_number],0,2+8+16);
|
gametext(c+70,57+16-7-9,volume_names[ud.m_volume_number],MENUHIGHLIGHT(1),2+8+16);
|
||||||
} else {
|
} else {
|
||||||
gametext(c+70,57+16-7-9,volume_names[ud.m_volume_number],0,2+8+16);
|
gametext(c+70,57+16-7-9,volume_names[ud.m_volume_number],MENUHIGHLIGHT(1),2+8+16);
|
||||||
}
|
}
|
||||||
|
|
||||||
gametext(c+70,57+16+16-7-9,&level_names[11*ud.m_volume_number+ud.m_level_number][0],0,2+8+16);
|
gametext(c+70,57+16+16-7-9,&level_names[11*ud.m_volume_number+ud.m_level_number][0],MENUHIGHLIGHT(2),2+8+16);
|
||||||
|
|
||||||
if(ud.m_monsters_off == 0 || ud.m_player_skill > 0)
|
gametext(c+70,57+16+16+16-7-9,ud.m_monsters_off == 0 || ud.m_player_skill > 0?skill_names[ud.m_player_skill]:"NONE",MENUHIGHLIGHT(3),2+8+16);
|
||||||
gametext(c+70,57+16+16+16-7-9,skill_names[ud.m_player_skill],0,2+8+16);
|
|
||||||
else gametext(c+70,57+16+16+16-7-9,"NONE",0,2+8+16);
|
|
||||||
|
|
||||||
if(gametype_flags[ud.m_coop] & GAMETYPE_FLAG_MARKEROPTION)
|
if(gametype_flags[ud.m_coop] & GAMETYPE_FLAG_MARKEROPTION)
|
||||||
{
|
gametext(c+70,57+16+16+16+16-7-9,ud.m_marker?"ON":"OFF",MENUHIGHLIGHT(4),2+8+16);
|
||||||
if(ud.m_marker)
|
|
||||||
gametext(c+70,57+16+16+16+16-7-9,"ON",0,2+8+16);
|
|
||||||
else gametext(c+70,57+16+16+16+16-7-9,"OFF",0,2+8+16);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(gametype_flags[ud.m_coop] & GAMETYPE_FLAG_COOP)
|
if(gametype_flags[ud.m_coop] & GAMETYPE_FLAG_COOP)
|
||||||
{
|
gametext(c+70,57+16+16+16+16+16-7-9,ud.m_ffire?"ON":"OFF",MENUHIGHLIGHT(5),2+8+16);
|
||||||
if(ud.m_ffire)
|
|
||||||
gametext(c+70,57+16+16+16+16+16-7-9,"ON",0,2+8+16);
|
|
||||||
else gametext(c+70,57+16+16+16+16+16-7-9,"OFF",0,2+8+16);
|
|
||||||
}
|
|
||||||
|
|
||||||
c -= 44;
|
c -= 44;
|
||||||
|
|
||||||
menutext(c,57-9,SHX(-2),PHX(-2),"GAME TYPE");
|
menutext(c,57-9,MENUHIGHLIGHT(0),PHX(-2),"GAME TYPE");
|
||||||
|
|
||||||
if (VOLUMEONE) {
|
if (VOLUMEONE) {
|
||||||
sprintf(tempbuf,"EPISODE %ld",ud.m_volume_number+1);
|
sprintf(tempbuf,"EPISODE %ld",ud.m_volume_number+1);
|
||||||
menutext(c,57+16-9,SHX(-3),1,tempbuf);
|
menutext(c,57+16-9,MENUHIGHLIGHT(1),1,tempbuf);
|
||||||
} else {
|
} else {
|
||||||
sprintf(tempbuf,"EPISODE %ld",ud.m_volume_number+1);
|
sprintf(tempbuf,"EPISODE %ld",ud.m_volume_number+1);
|
||||||
menutext(c,57+16-9,SHX(-3),PHX(-3),tempbuf);
|
menutext(c,57+16-9,MENUHIGHLIGHT(1),PHX(-3),tempbuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
sprintf(tempbuf,"LEVEL %ld",ud.m_level_number+1);
|
sprintf(tempbuf,"LEVEL %ld",ud.m_level_number+1);
|
||||||
menutext(c,57+16+16-9,SHX(-4),PHX(-4),tempbuf);
|
menutext(c,57+16+16-9,MENUHIGHLIGHT(2),PHX(-4),tempbuf);
|
||||||
|
|
||||||
menutext(c,57+16+16+16-9,SHX(-5),PHX(-5),"MONSTERS");
|
menutext(c,57+16+16+16-9,MENUHIGHLIGHT(3),PHX(-5),"MONSTERS");
|
||||||
|
|
||||||
if(gametype_flags[ud.m_coop] & GAMETYPE_FLAG_MARKEROPTION)
|
if(gametype_flags[ud.m_coop] & GAMETYPE_FLAG_MARKEROPTION)
|
||||||
menutext(c,57+16+16+16+16-9,SHX(-6),PHX(-6),"MARKERS");
|
menutext(c,57+16+16+16+16-9,MENUHIGHLIGHT(4),PHX(-6),"MARKERS");
|
||||||
else
|
else
|
||||||
menutext(c,57+16+16+16+16-9,SHX(-6),1,"MARKERS");
|
menutext(c,57+16+16+16+16-9,MENUHIGHLIGHT(4),1,"MARKERS");
|
||||||
|
|
||||||
if(gametype_flags[ud.m_coop] & GAMETYPE_FLAG_COOP)
|
if(gametype_flags[ud.m_coop] & GAMETYPE_FLAG_COOP)
|
||||||
menutext(c,57+16+16+16+16+16-9,SHX(-6),PHX(-6),"FR. FIRE");
|
menutext(c,57+16+16+16+16+16-9,MENUHIGHLIGHT(5),PHX(-6),"FR. FIRE");
|
||||||
else menutext(c,57+16+16+16+16+16-9,SHX(-6),1,"FR. FIRE");
|
else menutext(c,57+16+16+16+16+16-9,MENUHIGHLIGHT(5),1,"FR. FIRE");
|
||||||
|
|
||||||
if (VOLUMEALL) {
|
if (VOLUMEALL) {
|
||||||
menutext(c,57+16+16+16+16+16+16-9,SHX(-7),boardfilename[0] == 0,"USER MAP");
|
menutext(c,57+16+16+16+16+16+16-9,MENUHIGHLIGHT(6),0,"USER MAP");
|
||||||
if( boardfilename[0] != 0 )
|
if( boardfilename[0] != 0 )
|
||||||
gametext(c+70+44,57+16+16+16+16+16,boardfilename,0,2+8+16);
|
gametext(c+70+44,57+16+16+16+16+16,boardfilename,MENUHIGHLIGHT(6),2+8+16);
|
||||||
} else {
|
} else {
|
||||||
menutext(c,57+16+16+16+16+16+16-9,SHX(-7),1,"USER MAP");
|
menutext(c,57+16+16+16+16+16+16-9,MENUHIGHLIGHT(6),1,"USER MAP");
|
||||||
}
|
}
|
||||||
|
|
||||||
menutext(c,57+16+16+16+16+16+16+16-9,SHX(-8),PHX(-8),"START GAME");
|
menutext(c,57+16+16+16+16+16+16+16-9,MENUHIGHLIGHT(7),PHX(-8),"START GAME");
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -590,6 +590,30 @@ void onvideomodechange(int newmode)
|
||||||
restorepalette = 1;
|
restorepalette = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int osdcmd_mpmap(const osdfuncparm_t *parm)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
char filename[256];
|
||||||
|
|
||||||
|
if (parm->numparms != 1) return OSDCMD_SHOWHELP;
|
||||||
|
|
||||||
|
strcpy(filename,parm->parms[0]);
|
||||||
|
if( strchr(filename,'.') == 0)
|
||||||
|
strcat(filename,".map");
|
||||||
|
|
||||||
|
if ((i = kopen4load(filename,0)) < 0) {
|
||||||
|
OSD_Printf("map: file \"%s\" not found.\n", filename);
|
||||||
|
return OSDCMD_OK;
|
||||||
|
}
|
||||||
|
kclose(i);
|
||||||
|
|
||||||
|
strcpy(boardfilename, filename);
|
||||||
|
|
||||||
|
sendboardname();
|
||||||
|
|
||||||
|
return OSDCMD_OK;
|
||||||
|
}
|
||||||
|
|
||||||
int registerosdcommands(void)
|
int registerosdcommands(void)
|
||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
@ -607,6 +631,7 @@ int registerosdcommands(void)
|
||||||
} else {
|
} else {
|
||||||
OSD_RegisterFunction("changelevel","changelevel <volume> <level>: warps to the given level", osdcmd_changelevel);
|
OSD_RegisterFunction("changelevel","changelevel <volume> <level>: warps to the given level", osdcmd_changelevel);
|
||||||
OSD_RegisterFunction("map","map <mapfile>: loads the given user map", osdcmd_map);
|
OSD_RegisterFunction("map","map <mapfile>: loads the given user map", osdcmd_map);
|
||||||
|
OSD_RegisterFunction("mpmap","mpmap <mapfile>: sets user map name in multiplayer", osdcmd_mpmap);
|
||||||
}
|
}
|
||||||
OSD_RegisterFunction("cmenu","cmenu <#>: jumps to menu", osdcmd_cmenu);
|
OSD_RegisterFunction("cmenu","cmenu <#>: jumps to menu", osdcmd_cmenu);
|
||||||
OSD_RegisterFunction("exec","exec <scriptfile>: executes a script", osdcmd_exec);
|
OSD_RegisterFunction("exec","exec <scriptfile>: executes a script", osdcmd_exec);
|
||||||
|
|
Loading…
Reference in a new issue