📄 player.c
字号:
{
myospal(244-((*kb)<<3)-(p->look_ang>>1),looking_arc+130-gun_pos+((*kb)<<4),FIRSTGUN+6,gs,o,pal);
myospal(224-(p->look_ang>>1),looking_arc+220-gun_pos,FIRSTGUN+5,gs,o,pal);
}
else if((*kb) < 20)
{
myospal(124+((*kb)<<1)-(p->look_ang>>1),looking_arc+430-gun_pos-((*kb)<<3),FIRSTGUN+6,gs,o,pal);
myospal(224-(p->look_ang>>1),looking_arc+220-gun_pos,FIRSTGUN+5,gs,o,pal);
}
else if((*kb) < 23)
{
myospal(184-(p->look_ang>>1),looking_arc+235-gun_pos,FIRSTGUN+8,gs,o,pal);
myospal(224-(p->look_ang>>1),looking_arc+210-gun_pos,FIRSTGUN+5,gs,o,pal);
}
else if((*kb) < 25)
{
myospal(164-(p->look_ang>>1),looking_arc+245-gun_pos,FIRSTGUN+8,gs,o,pal);
myospal(224-(p->look_ang>>1),looking_arc+220-gun_pos,FIRSTGUN+5,gs,o,pal);
}
else if((*kb) < 27)
myospal(194-(p->look_ang>>1),looking_arc+235-gun_pos,FIRSTGUN+5,gs,o,pal);
}
break;
case HANDBOMB_WEAPON:
{
if(sprite[p->i].pal == 1)
pal = 1;
else
pal = sector[p->cursectnum].floorpal;
if((*kb))
{
char throw_frames[]
= {0,0,0,0,0,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2};
if((*kb) < 7)
gun_pos -= 10*(*kb); //D
else if((*kb) < 12)
gun_pos += 20*((*kb)-10); //U
else if((*kb) < 20)
gun_pos -= 9*((*kb)-14); //D
myospal(weapon_xoffset+190-(p->look_ang>>1),looking_arc+250-gun_pos,HANDTHROW+throw_frames[(*kb)],gs,o,pal);
}
else
myospal(weapon_xoffset+190-(p->look_ang>>1),looking_arc+260-gun_pos,HANDTHROW,gs,o,pal);
}
break;
case HANDREMOTE_WEAPON:
{
signed char remote_frames[] = {0,1,1,2,1,1,0,0,0,0,0};
if(sprite[p->i].pal == 1)
pal = 1;
else
pal = sector[p->cursectnum].floorpal;
weapon_xoffset = -48;
if((*kb))
myospal(weapon_xoffset+150-(p->look_ang>>1),looking_arc+258-gun_pos,HANDREMOTE+remote_frames[(*kb)],gs,o,pal);
else
myospal(weapon_xoffset+150-(p->look_ang>>1),looking_arc+258-gun_pos,HANDREMOTE,gs,o,pal);
}
break;
case DEVISTATOR_WEAPON:
if(sprite[p->i].pal == 1)
pal = 1;
else
pal = sector[p->cursectnum].floorpal;
if((*kb))
{
char cycloidy[] = {0,4,12,24,12,4,0};
i = sgn((*kb)>>2);
if(p->hbomb_hold_delay)
{
myospal( (cycloidy[*kb]>>1)+weapon_xoffset+268-(p->look_ang>>1),cycloidy[*kb]+looking_arc+238-gun_pos,DEVISTATOR+i,-32,o,pal);
myospal(weapon_xoffset+30-(p->look_ang>>1),looking_arc+240-gun_pos,DEVISTATOR,gs,o|4,pal);
}
else
{
myospal( -(cycloidy[*kb]>>1)+weapon_xoffset+30-(p->look_ang>>1),cycloidy[*kb]+looking_arc+240-gun_pos,DEVISTATOR+i,-32,o|4,pal);
myospal(weapon_xoffset+268-(p->look_ang>>1),looking_arc+238-gun_pos,DEVISTATOR,gs,o,pal);
}
}
else
{
myospal(weapon_xoffset+268-(p->look_ang>>1),looking_arc+238-gun_pos,DEVISTATOR,gs,o,pal);
myospal(weapon_xoffset+30-(p->look_ang>>1),looking_arc+240-gun_pos,DEVISTATOR,gs,o|4,pal);
}
break;
case FREEZE_WEAPON:
if(sprite[p->i].pal == 1)
pal = 1;
else
pal = sector[p->cursectnum].floorpal;
if((*kb))
{
char cat_frames[] = { 0,0,1,1,2,2 };
if(sprite[p->i].pal != 1)
{
weapon_xoffset += rand()&3;
looking_arc += rand()&3;
}
gun_pos -= 16;
myospal(weapon_xoffset+210-(p->look_ang>>1),looking_arc+261-gun_pos,FREEZE+2,-32,o,pal);
myospal(weapon_xoffset+210-(p->look_ang>>1),looking_arc+235-gun_pos,FREEZE+3+cat_frames[*kb%6],-32,o,pal);
}
else myospal(weapon_xoffset+210-(p->look_ang>>1),looking_arc+261-gun_pos,FREEZE,gs,o,pal);
break;
case SHRINKER_WEAPON:
case GROW_WEAPON:
weapon_xoffset += 28;
looking_arc += 18;
if(sprite[p->i].pal == 1)
pal = 1;
else
pal = sector[p->cursectnum].floorpal;
if((*kb) == 0)
{
if(cw == GROW_WEAPON)
{
myospal(weapon_xoffset+184-(p->look_ang>>1),
looking_arc+240-gun_pos,SHRINKER+2,
16-(sintable[p->random_club_frame&2047]>>10),
o,2);
myospal(weapon_xoffset+188-(p->look_ang>>1),
looking_arc+240-gun_pos,SHRINKER-2,gs,o,pal);
}
else
{
myospal(weapon_xoffset+184-(p->look_ang>>1),
looking_arc+240-gun_pos,SHRINKER+2,
16-(sintable[p->random_club_frame&2047]>>10),
o,0);
myospal(weapon_xoffset+188-(p->look_ang>>1),
looking_arc+240-gun_pos,SHRINKER,gs,o,pal);
}
}
else
{
if(sprite[p->i].pal != 1)
{
weapon_xoffset += rand()&3;
gun_pos += (rand()&3);
}
if(cw == GROW_WEAPON)
{
myospal(weapon_xoffset+184-(p->look_ang>>1),
looking_arc+240-gun_pos,SHRINKER+3+((*kb)&3),-32,
o,2);
myospal(weapon_xoffset+188-(p->look_ang>>1),
looking_arc+240-gun_pos,SHRINKER-1,gs,o,pal);
}
else
{
myospal(weapon_xoffset+184-(p->look_ang>>1),
looking_arc+240-gun_pos,SHRINKER+3+((*kb)&3),-32,
o,0);
myospal(weapon_xoffset+188-(p->look_ang>>1),
looking_arc+240-gun_pos,SHRINKER+1,gs,o,pal);
}
}
break;
}
displayloogie(snum);
}
#define TURBOTURNTIME (TICRATE/8) // 7
#define NORMALTURN 15
#define PREAMBLETURN 5
#define NORMALKEYMOVE 40
#define MAXVEL ((NORMALKEYMOVE*2)+10)
#define MAXSVEL ((NORMALKEYMOVE*2)+10)
#define MAXANGVEL 127
#define MAXHORIZ 127
long myaimmode = 0, myaimstat = 0, omyaimstat = 0;
void getinput(short snum)
{
short j, daang;
// MED
ControlInfo info;
int32 tics;
boolean running;
int32 turnamount;
int32 keymove;
int32 momx,momy;
struct player_struct *p;
momx = momy = 0;
p = &ps[snum];
CONTROL_GetInput( &info );
if( (p->gm&MODE_MENU) || (p->gm&MODE_TYPE) || (ud.pause_on && !KB_KeyPressed(sc_Pause)) )
{
loc.fvel = vel = 0;
loc.svel = svel = 0;
loc.avel = angvel = 0;
loc.horz = horiz = 0;
loc.bits = (((long)gamequit)<<26);
info.dz = info.dyaw = 0;
return;
}
tics = totalclock-lastcontroltime;
lastcontroltime = totalclock;
if (MouseAiming)
myaimmode = BUTTON(gamefunc_Mouse_Aiming);
else
{
omyaimstat = myaimstat; myaimstat = BUTTON(gamefunc_Mouse_Aiming);
if (myaimstat > omyaimstat)
{
myaimmode ^= 1;
FTA(44+myaimmode,p);
}
}
if(multiflag == 1)
{
loc.bits = 1<<17;
loc.bits |= multiwhat<<18;
loc.bits |= multipos<<19;
multiflag = 0;
return;
}
loc.bits = BUTTON(gamefunc_Jump);
loc.bits |= BUTTON(gamefunc_Crouch)<<1;
loc.bits |= BUTTON(gamefunc_Fire)<<2;
loc.bits |= BUTTON(gamefunc_Aim_Up)<<3;
loc.bits |= BUTTON(gamefunc_Aim_Down)<<4;
loc.bits |= BUTTON(gamefunc_Run)<<5;
loc.bits |= BUTTON(gamefunc_Look_Left)<<6;
loc.bits |= BUTTON(gamefunc_Look_Right)<<7;
j=0;
if (BUTTON(gamefunc_Weapon_1))
j = 1;
if (BUTTON(gamefunc_Weapon_2))
j = 2;
if (BUTTON(gamefunc_Weapon_3))
j = 3;
if (BUTTON(gamefunc_Weapon_4))
j = 4;
if (BUTTON(gamefunc_Weapon_5))
j = 5;
if (BUTTON(gamefunc_Weapon_6))
j = 6;
if (BUTTON(gamefunc_Previous_Weapon))
j = 11;
if (BUTTON(gamefunc_Next_Weapon))
j = 12;
#ifndef VOLUMEONE
if (BUTTON(gamefunc_Weapon_7))
j = 7;
if (BUTTON(gamefunc_Weapon_8))
j = 8;
if (BUTTON(gamefunc_Weapon_9))
j = 9;
if (BUTTON(gamefunc_Weapon_10))
j = 10;
#endif
loc.bits |= j<<8;
loc.bits |= BUTTON(gamefunc_Steroids)<<12;
loc.bits |= BUTTON(gamefunc_Look_Up)<<13;
loc.bits |= BUTTON(gamefunc_Look_Down)<<14;
loc.bits |= BUTTON(gamefunc_NightVision)<<15;
loc.bits |= BUTTON(gamefunc_MedKit)<<16;
loc.bits |= BUTTON(gamefunc_Center_View)<<18;
loc.bits |= BUTTON(gamefunc_Holster_Weapon)<<19;
loc.bits |= BUTTON(gamefunc_Inventory_Left)<<20;
loc.bits |= KB_KeyPressed(sc_Pause)<<21;
loc.bits |= BUTTON(gamefunc_Quick_Kick)<<22;
loc.bits |= myaimmode<<23;
loc.bits |= BUTTON(gamefunc_Holo_Duke)<<24;
loc.bits |= BUTTON(gamefunc_Jetpack)<<25;
loc.bits |= (((long)gamequit)<<26);
loc.bits |= BUTTON(gamefunc_Inventory_Right)<<27;
loc.bits |= BUTTON(gamefunc_TurnAround)<<28;
loc.bits |= BUTTON(gamefunc_Open)<<29;
loc.bits |= BUTTON(gamefunc_Inventory)<<30;
loc.bits |= KB_KeyPressed(sc_Escape)<<31;
running = BUTTON(gamefunc_Run)|ud.auto_run;
svel = vel = angvel = horiz = 0;
if( CONTROL_JoystickEnabled )
if ( running ) info.dz *= 2;
if( BUTTON(gamefunc_Strafe) )
svel = -info.dyaw/8;
else angvel = info.dyaw/64;
if( myaimmode )
{
if(ud.mouseflip)
horiz -= info.dz/(314-128);
else horiz += info.dz/(314-128);
info.dz = 0;
}
svel -= info.dx;
vel = -info.dz>>6;
if (running)
{
turnamount = NORMALTURN<<1;
keymove = NORMALKEYMOVE<<1;
}
else
{
turnamount = NORMALTURN;
keymove = NORMALKEYMOVE;
}
if (BUTTON(gamefunc_Strafe))
{
if ( BUTTON(gamefunc_Turn_Left))
{
svel -= -keymove;
}
if ( BUTTON(gamefunc_Turn_Right))
{
svel -= keymove;
}
}
else
{
if ( BUTTON(gamefunc_Turn_Left))
{
turnheldtime += tics;
if (turnheldtime>=TURBOTURNTIME)
{
angvel -= turnamount;
}
else
{
angvel -= PREAMBLETURN;
}
}
else if ( BUTTON(gamefunc_Turn_Right))
{
turnheldtime += tics;
if (turnheldtime>=TURBOTURNTIME)
{
angvel += turnamount;
}
else
{
angvel += PREAMBLETURN;
}
}
else
{
turnheldtime=0;
}
}
if ( BUTTON( gamefunc_Strafe_Left ) )
svel += keymove;
if ( BUTTON( gamefunc_Strafe_Right ) )
svel += -keymove;
if ( BUTTON(gamefunc_Move_Forward
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -