/* =============== idPlayer::FireWeapon =============== */ void idPlayer::FireWeapon( void ) { idMat3 axis; idVec3 muzzle; //gameLocal.mpGame.AddChatLine( "weee\n"); if ( weapon->wsfl.reloading ) return; if ( privateCameraView ) { return; } switch ( weapon->status ) { case WP_READY: gameLocal.mpGame.AddChatLine( "rdyn\n"); break; case WP_OUTOFAMMO: gameLocal.mpGame.AddChatLine( "noammo\n"); break; case WP_RELOAD: gameLocal.mpGame.AddChatLine( "reloadin\n"); break; case WP_HOLSTERED: gameLocal.mpGame.AddChatLine( "holstered\n"); break; case WP_RISING: gameLocal.mpGame.AddChatLine( "rising\n"); break; case WP_LOWERING: gameLocal.mpGame.AddChatLine( "lowering\n"); break; default: { gameLocal.mpGame.AddChatLine( "PIECE OF CRAP :(\n"); return; } } if ( g_editEntityMode.GetInteger() ) { GetViewPos( muzzle, axis ); gameLocal.editEntities->SelectEntity( muzzle, axis[0], this ); return; } if ( gameLocal.time > allowNextFireTime && !isBuilding && !isFacingDispenser && !hiddenWeapon && weapon->IsReady() ) { if ( weapon->AmmoInClip() || weapon->AmmoAvailable() ) { pfl.attackHeld = true; weapon->BeginAttack(); } else { pfl.attackHeld = false; pfl.weaponFired = false; StopFiring(); NextBestWeapon(); } } // If reloading when fire is hit cancel the reload else if ( weapon->IsReloading() ) { weapon->CancelReload(); } if ( isPreviewing ) { StopPreview(); } ClearDisguise(); }