📄 menues.c
字号:
current_menu--;
if(current_menu < 990) current_menu = 992;
}
else if(
KB_KeyPressed( sc_PgDn ) ||
KB_KeyPressed( sc_Enter ) ||
KB_KeyPressed( sc_Space ) ||
KB_KeyPressed( sc_kpad_Enter ) ||
KB_KeyPressed( sc_RightArrow ) ||
KB_KeyPressed( sc_DownArrow ) ||
KB_KeyPressed( sc_kpad_2 ) ||
KB_KeyPressed( sc_kpad_9 ) ||
KB_KeyPressed( sc_kpad_6 ) )
{
KB_ClearKeyDown(sc_PgDn);
KB_ClearKeyDown(sc_Enter);
KB_ClearKeyDown(sc_RightArrow);
KB_ClearKeyDown(sc_kpad_Enter);
KB_ClearKeyDown(sc_kpad_6);
KB_ClearKeyDown(sc_kpad_9);
KB_ClearKeyDown(sc_kpad_2);
KB_ClearKeyDown(sc_DownArrow);
KB_ClearKeyDown(sc_Space);
sound(KICK_HIT);
current_menu++;
if(current_menu > 992) current_menu = 990;
}
switch(current_menu)
{
case 990:
case 991:
case 992:
rotatesprite(160<<16,200<<15,65536L,0,2504+current_menu-990,0,0,10+64,0,0,xdim-1,ydim-1);
break;
}
break;
case 0:
c = (320>>1);
rotatesprite(c<<16,28<<16,65536L,0,INGAMEDUKETHREEDEE,0,0,10,0,0,xdim-1,ydim-1);
#ifndef UK
rotatesprite((c+100)<<16,36<<16,65536L,0,PLUTOPAKSPRITE+2,(sintable[(totalclock<<4)&2047]>>11),0,2+8,0,0,xdim-1,ydim-1);
#endif
x = probe(c,67,16,7);
if(x >= 0)
{
if( ud.multimode > 1 && x == 0 && ud.recstat != 2)
{
if( movesperpacket == 4 && myconnectindex != connecthead )
break;
last_zero = 0;
cmenu( 600 );
}
else
{
last_zero = x;
switch(x)
{
case 0:
cmenu(100);
break;
case 1:
if(movesperpacket == 4 || numplayers > 1)
break;
tenBnSetExitRtn(dummyfunc);
setDebugMsgRoutine(dummymess);
tenerr = tenBnStart();
switch(tenerr)
{
case eTenBnNotInWindows:
cmenu(20001);
break;
case eTenBnBadGameIni:
cmenu(20002);
break;
case eTenBnBadTenIni:
cmenu(20003);
break;
case eTenBnBrowseCancel:
cmenu(20004);
break;
case eTenBnBadTenInst:
cmenu(20005);
break;
default:
playonten = 1;
gameexit(" ");
break;
}
break;
case 2: cmenu(200);break;
case 3:
if(movesperpacket == 4 && connecthead != myconnectindex)
break;
cmenu(300);
break;
case 4: KB_FlushKeyboardQueue();cmenu(400);break;
case 5: cmenu(990);break;
case 6: cmenu(500);break;
}
}
}
if(KB_KeyPressed(sc_Q)) cmenu(500);
if(x == -1)
{
ps[myconnectindex].gm &= ~MODE_MENU;
if(ud.multimode < 2 && ud.recstat != 2)
{
ready2send = 1;
totalclock = ototalclock;
}
}
if(movesperpacket == 4)
{
if( myconnectindex == connecthead )
menutext(c,67,SHX(-2),PHX(-2),"NEW GAME");
else
menutext(c,67,SHX(-2),1,"NEW GAME");
}
else
menutext(c,67,SHX(-2),PHX(-2),"NEW GAME");
if(movesperpacket != 4 && numplayers < 2)
menutext(c,67+16,SHX(-3),PHX(-3),"PLAY ON TEN");
else
menutext(c,67+16,SHX(-3),1,"PLAY ON TEN");
menutext(c,67+16+16,SHX(-4),PHX(-4),"OPTIONS");
if(movesperpacket == 4 && connecthead != myconnectindex)
menutext(c,67+16+16+16,SHX(-5),1,"LOAD GAME");
else menutext(c,67+16+16+16,SHX(-5),PHX(-5),"LOAD GAME");
#ifndef VOLUMEALL
menutext(c,67+16+16+16+16,SHX(-6),PHX(-6),"HOW TO ORDER");
#else
menutext(c,67+16+16+16+16,SHX(-6),PHX(-6),"HELP");
#endif
menutext(c,67+16+16+16+16+16,SHX(-7),PHX(-7),"CREDITS");
menutext(c,67+16+16+16+16+16+16,SHX(-8),PHX(-8),"QUIT");
break;
case 50:
c = (320>>1);
rotatesprite(c<<16,32<<16,65536L,0,INGAMEDUKETHREEDEE,0,0,10,0,0,xdim-1,ydim-1);
#ifndef UK
rotatesprite((c+100)<<16,36<<16,65536L,0,PLUTOPAKSPRITE+2,(sintable[(totalclock<<4)&2047]>>11),0,2+8,0,0,xdim-1,ydim-1);
#endif
x = probe(c,67,16,7);
switch(x)
{
case 0:
if(movesperpacket == 4 && myconnectindex != connecthead)
break;
if(ud.multimode < 2 || ud.recstat == 2)
cmenu(1500);
else
{
cmenu(600);
last_fifty = 0;
}
break;
case 1:
if(movesperpacket == 4 && connecthead != myconnectindex)
break;
if(ud.recstat != 2)
{
last_fifty = 1;
cmenu(350);
setview(0,0,xdim-1,ydim-1);
}
break;
case 2:
if(movesperpacket == 4 && connecthead != myconnectindex)
break;
last_fifty = 2;
cmenu(300);
break;
case 3:
last_fifty = 3;
cmenu(200);
break;
case 4:
last_fifty = 4;
KB_FlushKeyboardQueue();
cmenu(400);
break;
case 5:
if(numplayers < 2)
{
last_fifty = 5;
cmenu(501);
}
break;
case 6:
last_fifty = 6;
cmenu(500);
break;
case -1:
ps[myconnectindex].gm &= ~MODE_MENU;
if(ud.multimode < 2 && ud.recstat != 2)
{
ready2send = 1;
totalclock = ototalclock;
}
break;
}
if( KB_KeyPressed(sc_Q) )
cmenu(500);
if(movesperpacket == 4 && connecthead != myconnectindex)
{
menutext(c,67 ,SHX(-2),1,"NEW GAME");
menutext(c,67+16 ,SHX(-3),1,"SAVE GAME");
menutext(c,67+16+16 ,SHX(-4),1,"LOAD GAME");
}
else
{
menutext(c,67 ,SHX(-2),PHX(-2),"NEW GAME");
menutext(c,67+16 ,SHX(-3),PHX(-3),"SAVE GAME");
menutext(c,67+16+16 ,SHX(-4),PHX(-4),"LOAD GAME");
}
menutext(c,67+16+16+16 ,SHX(-5),PHX(-5),"OPTIONS");
#ifndef VOLUMEALL
menutext(c,67+16+16+16+16 ,SHX(-6),PHX(-6),"HOW TO ORDER");
#else
menutext(c,67+16+16+16+16 ,SHX(-6),PHX(-6)," HELP");
#endif
if(numplayers > 1)
menutext(c,67+16+16+16+16+16 ,SHX(-7),1,"QUIT TO TITLE");
else menutext(c,67+16+16+16+16+16 ,SHX(-7),PHX(-7),"QUIT TO TITLE");
menutext(c,67+16+16+16+16+16+16,SHX(-8),PHX(-8),"QUIT GAME");
break;
case 100:
rotatesprite(160<<16,19<<16,65536L,0,MENUBAR,16,0,10,0,0,xdim-1,ydim-1);
menutext(160,24,0,0,"SELECT AN EPISODE");
#ifdef PLUTOPAK
if(boardfilename[0])
x = probe(160,60,20,5);
else x = probe(160,60,20,4);
#else
if(boardfilename[0])
x = probe(160,60,20,4);
else x = probe(160,60,20,3);
#endif
if(x >= 0)
{
#ifdef VOLUMEONE
if(x > 0)
cmenu(20000);
else
{
ud.m_volume_number = x;
ud.m_level_number = 0;
cmenu(110);
}
#endif
#ifndef VOLUMEONE
#ifndef PLUTOPAK
if(x == 3 && boardfilename[0])
{
ud.m_volume_number = 0;
ud.m_level_number = 7;
}
#else
if(x == 4 && boardfilename[0])
{
ud.m_volume_number = 0;
ud.m_level_number = 7;
}
#endif
else
{
ud.m_volume_number = x;
ud.m_level_number = 0;
}
cmenu(110);
#endif
}
else if(x == -1)
{
if(ps[myconnectindex].gm&MODE_GAME) cmenu(50);
else cmenu(0);
}
menutext(160,60,SHX(-2),PHX(-2),volume_names[0]);
c = 80;
#ifdef VOLUMEONE
menutext(160,60+20,SHX(-3),1,volume_names[1]);
menutext(160,60+20+20,SHX(-4),1,volume_names[2]);
#ifdef PLUTOPAK
menutext(160,60+20+20,SHX(-5),1,volume_names[3]);
#endif
#else
menutext(160,60+20,SHX(-3),PHX(-3),volume_names[1]);
menutext(160,60+20+20,SHX(-4),PHX(-4),volume_names[2]);
#ifdef PLUTOPAK
menutext(160,60+20+20+20,SHX(-5),PHX(-5),volume_names[3]);
if(boardfilename[0])
{
menutext(160,60+20+20+20+20,SHX(-6),PHX(-6),"USER MAP");
gametextpal(160,60+20+20+20+20+3,boardfilename,16+(sintable[(totalclock<<4)&2047]>>11),2);
}
#else
if(boardfilename[0])
{
menutext(160,60+20+20+20,SHX(-6),PHX(-6),"USER MAP");
gametext(160,60+20+20+20+6,boardfilename,2,2+8+16);
}
#endif
#endif
break;
case 110:
c = (320>>1);
rotatesprite(c<<16,19<<16,65536L,0,MENUBAR,16,0,10,0,0,xdim-1,ydim-1);
menutext(c,24,0,0,"SELECT SKILL");
x = probe(c,70,19,4);
if(x >= 0)
{
switch(x)
{
case 0: globalskillsound = JIBBED_ACTOR6;break;
case 1: globalskillsound = BONUS_SPEECH1;break;
case 2: globalskillsound = DUKE_GETWEAPON2;break;
case 3: globalskillsound = JIBBED_ACTOR5;break;
}
sound(globalskillsound);
ud.m_player_skill = x+1;
if(x == 3) ud.m_respawn_monsters = 1;
else ud.m_respawn_monsters = 0;
ud.m_monsters_off = ud.monsters_off = 0;
ud.m_respawn_items = 0;
ud.m_respawn_inventory = 0;
ud.multimode = 1;
if(ud.m_volume_number == 3)
{
flushperms();
setview(0,0,xdim-1,ydim-1);
clearview(0L);
nextpage();
}
newgame(ud.m_volume_number,ud.m_level_number,ud.m_player_skill);
enterlevel(MODE_GAME);
}
else if(x == -1)
{
cmenu(100);
KB_FlushKeyboardQueue();
}
menutext(c,70,SHX(-2),PHX(-2),skill_names[0]);
menutext(c,70+19,SHX(-3),PHX(-3),skill_names[1]);
menutext(c,70+19+19,SHX(-4),PHX(-4),skill_names[2]);
menutext(c,70+19+19+19,SHX(-5),PHX(-5),skill_names[3]);
break;
case 200:
rotatesprite(320<<15,10<<16,65536L,0,MENUBAR,16,0,10,0,0,xdim-1,ydim-1);
menutext(320>>1,15,0,0,"OPTIONS");
c = (320>>1)-120;
onbar = (probey == 3 || probey == 4 || probey == 5);
x = probe(c+6,31,15,10);
if(x == -1)
{ if(ps[myconnectindex].gm&MODE_GAME) cmenu(50);else cmenu(0); }
if(onbar == 0) switch(x)
{
case 0:
ud.detail = 1-ud.detail;
break;
case 1:
ud.shadows = 1-ud.shadows;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -