/*
===============
CG_TransitionPlayerState

===============
*/
void CG_TransitionPlayerState( playerState_t *ps, playerState_t *ops ) {

	// check for changing follow mode
	if ( ps->clientNum != ops->clientNum ) {
		cg.thisFrameTeleport = true;
		// make sure we don't get any unwanted transition effects
		*ops = *ps;
	}

	// damage events (player is getting wounded)
	if ( ps->damageEvent != ops->damageEvent && ps->damageCount ) {
		CG_DamageFeedback( ps->damageYaw, ps->damagePitch, ps->damageCount );
	}

	// respawning
	if ( ps->persistant[PERS_SPAWN_COUNT] != ops->persistant[PERS_SPAWN_COUNT] ) {
		CG_Respawn();
	}

	if ( cg.mapRestart ) {
		CG_Respawn();
		cg.mapRestart = false;
	}

	if ( cg.snap->ps.pm_type != PM_INTERMISSION 
		&& ps->persistant[PERS_TEAM] != ClientBase::TEAM_SPECTATOR ) {
		CG_CheckLocalSounds( ps, ops );
	}

	// run events
	CG_CheckPlayerstateEvents( ps, ops );
}
/*
===============
CG_TransitionPlayerState

===============
*/
void CG_TransitionPlayerState( playerState_t *ps, playerState_t *ops )
{
	// check for changing follow mode
	if ( ps->clientNum != ops->clientNum )
	{
		cg.thisFrameTeleport = true;
		// make sure we don't get any unwanted transition effects
		*ops = *ps;

		CG_ResetPainBlend();
	}

	// damage events (player is getting wounded)
	if ( ps->damageEvent != ops->damageEvent && ps->damageCount )
	{
		CG_DamageFeedback( ps->damageYaw, ps->damagePitch, ps->damageCount );
	}

	// respawning
	if ( ps->persistant[ PERS_SPAWN_COUNT ] != ops->persistant[ PERS_SPAWN_COUNT ] )
	{
		CG_Respawn();
	}

	if ( cg.mapRestart )
	{
		CG_Respawn();
		cg.mapRestart = false;
	}

	if ( cg.snap->ps.pm_type != PM_INTERMISSION &&
	     ps->persistant[ PERS_SPECSTATE ] == SPECTATOR_NOT )
	{
		CG_CheckLocalSounds( ps, ops );
	}

	// run events
	CG_CheckPlayerstateEvents( ps, ops );

	// smooth the ducking viewheight change
	if ( ps->viewheight != ops->viewheight )
	{
		cg.duckChange = ps->viewheight - ops->viewheight;
		cg.duckTime = cg.time;
	}

	// changed team
	if ( ps->persistant[ PERS_TEAM ] != ops->persistant[ PERS_TEAM ] )
	{
		cg.lastHealthCross = 0;
		cg.chargeMeterAlpha = 0.0f;
	}

	if ( ps->stats[ STAT_TAGSCORE ] != ops->stats[ STAT_TAGSCORE ] )
		cg.tagScoreTime = cg.time;
}
Example #3
0
/*
===============
CG_TransitionPlayerState

===============
*/
void CG_TransitionPlayerState( playerState_t *ps, playerState_t *ops )
{
    // check for changing follow mode
    if( ps->clientNum != ops->clientNum )
    {
        cg.thisFrameTeleport = qtrue;
        // make sure we don't get any unwanted transition effects
        *ops = *ps;

        CG_ResetPainBlend( );
    }

    // damage events (player is getting wounded)
    if( ps->damageEvent != ops->damageEvent && ps->damageCount )
        CG_DamageFeedback( ps->damageYaw, ps->damagePitch, ps->damageCount );

    // respawning
    if( ps->persistant[ PERS_SPAWN_COUNT ] != ops->persistant[ PERS_SPAWN_COUNT ] )
        CG_Respawn( );

    if( cg.mapRestart )
    {
        CG_Respawn( );
        cg.mapRestart = qfalse;
    }

    if( cg.snap->ps.pm_type != PM_INTERMISSION &&
            ps->persistant[ PERS_SPECSTATE ] == SPECTATOR_NOT )
        CG_CheckLocalSounds( ps, ops );

    // run events
    CG_CheckPlayerstateEvents( ps, ops );

    // smooth the ducking viewheight change
    if( ps->viewheight != ops->viewheight )
    {
        cg.duckChange = ps->viewheight - ops->viewheight;
        cg.duckTime = cg.time;
    }

    // changed team
    if( ps->stats[ STAT_TEAM ] != ops->stats[ STAT_TEAM ] )
    {
        cg.lastHealthCross = 0;
        cg.chargeMeterAlpha = 0.0f;
    }

    if( ps->stats[ STAT_FUEL ] < JETPACK_FUEL_JUMP &&
            ops->stats[ STAT_FUEL ] >= JETPACK_FUEL_JUMP &&
            cg.predictedPlayerEntity.jetPackJumpTime + 1000 > cg.time )
    {
        trap_S_StartSound( NULL, cg.predictedPlayerState.clientNum, CHAN_AUTO, cgs.media.jetpackNoJumpFuelSound );
    }
}
Example #4
0
/*
===============
CG_TransitionPlayerState

===============
*/
void CG_TransitionPlayerState( playerState_t *ps, playerState_t *ops ) {
	// check for changing follow mode
	if ( ps->clientNum != ops->clientNum ) {
		cg.thisFrameTeleport = qtrue;
		// make sure we don't get any unwanted transition effects
		*ops = *ps;

		// DHM - Nerve :: After Limbo, make sure and do a CG_Respawn
		if ( ps->clientNum == cg.clientNum ) {
			ops->persistant[PERS_SPAWN_COUNT]--;
		}
	}

	// damage events (player is getting wounded)
	if ( ps->damageEvent != ops->damageEvent && ps->damageCount ) {
		CG_DamageFeedback( ps->damageYaw, ps->damagePitch, ps->damageCount );
	}

	// respawning
	if ( ps->persistant[PERS_SPAWN_COUNT] != ops->persistant[PERS_SPAWN_COUNT] ) {
		CG_Respawn();
	}

	if ( cg.mapRestart ) {
		CG_Respawn();
		cg.mapRestart = qfalse;
	}

	if ( cg.snap->ps.pm_type != PM_INTERMISSION
		 && ps->persistant[PERS_TEAM] != TEAM_SPECTATOR ) {
		CG_CheckLocalSounds( ps, ops );
	}

	// check for going low on ammo
	CG_CheckAmmo();

	// run events
	CG_CheckPlayerstateEvents( ps, ops );

	// smooth the ducking viewheight change
	if ( ps->viewheight != ops->viewheight ) {
		cg.duckChange = ps->viewheight - ops->viewheight;
		cg.duckTime = cg.time;
	}
}
Example #5
0
/*===============
CG_TransitionPlayerState
===============*/
void CG_TransitionPlayerState( playerState_t *ps, playerState_t *ops ) {

	if(ps->clientNum != ops->clientNum){
		cg.thisFrameTeleport = qtrue;
		*ops = *ps;
	}
	if(ps->persistant[PERS_SPAWN_COUNT] != ops->persistant[PERS_SPAWN_COUNT]){
		CG_Respawn();
	}
	if(cg.mapRestart){
		CG_Respawn();
		cg.mapRestart = qfalse;
	}
	if(cg.snap->ps.pm_type != PM_INTERMISSION && ps->persistant[PERS_TEAM] != TEAM_SPECTATOR){
		CG_CheckLocalSounds(ps,ops);
	}
	CG_CheckPlayerstateEvents(ps,ops);
	if(ps->viewheight != ops->viewheight){
		cg.duckChange = ps->viewheight - ops->viewheight;
		cg.duckTime = cg.time;
	}

	cg.tierSelectionMode = 0;
	cg.tierSelect = -1;
	if(ps->powerLevel[plTierChanged] == 1 && ops->powerLevel[plTierChanged] != 1) {
		cg.tierCurrent = ps->powerLevel[plTierCurrent];
		cg.weaponDesired = -1;
		cg.weaponSelectionMode = 0;
	}
	if(ps->currentSkill[WPSTAT_CHANGED] != 0){
		//If the server validated a weapon change, changes it
		cg.weaponSelectionMode = 0;
		cg.weaponDesired = -1;
		cg.weaponSelect = ps->weapon;
		if(ps->currentSkill[WPSTAT_CHANGED] != -1) {
			cg.drawWeaponBar = 1;
		}
	}
}
Example #6
0
/*
===============
CG_TransitionPlayerState
===============
*/
void CG_TransitionPlayerState(playerState_t *ps, playerState_t *ops)
{
#if FEATURE_MULTIVIEW
	// MV client handling
	if (cg.mvTotalClients > 0)
	{
		if (ps->clientNum != ops->clientNum)
		{
			cg.thisFrameTeleport = qtrue;

			// clear voicechat
			cg.predictedPlayerEntity.voiceChatSpriteTime   = 0; // CHECKME: should we do this here?
			cg_entities[ps->clientNum].voiceChatSpriteTime = 0;

			*ops = *ps;
		}
		CG_CheckLocalSounds(ps, ops);
		return;
	}
#endif

	// check for changing follow mode
	if (ps->clientNum != ops->clientNum)
	{
		cg.thisFrameTeleport = qtrue;

		// clear voicechat
		cg.predictedPlayerEntity.voiceChatSpriteTime   = 0;
		cg_entities[ps->clientNum].voiceChatSpriteTime = 0;

		// make sure we don't get any unwanted transition effects
		*ops = *ps;

		// After Limbo, make sure and do a CG_Respawn
		if (ps->clientNum == cg.clientNum)
		{
			ops->persistant[PERS_SPAWN_COUNT]--;
		}
	}

	if (ps->eFlags & EF_FIRING)
	{
		cg.lastFiredWeaponTime = 0;
		cg.weaponFireTime     += cg.frametime;
	}
	else
	{
		if (cg.weaponFireTime > 500 && cg.weaponFireTime)
		{
			cg.lastFiredWeaponTime = cg.time;
		}

		cg.weaponFireTime = 0;
	}

	// damage events (player is getting wounded)
	if (ps->damageEvent != ops->damageEvent && ps->damageCount)
	{
		CG_DamageFeedback(ps->damageYaw, ps->damagePitch, ps->damageCount);
	}

	// respawning
	if (ps->persistant[PERS_SPAWN_COUNT] != ops->persistant[PERS_SPAWN_COUNT])
	{
		CG_Respawn(ps->persistant[PERS_REVIVE_COUNT] != ops->persistant[PERS_REVIVE_COUNT] ? qtrue : qfalse);
	}

	if (cg.mapRestart)
	{
		CG_Respawn(qfalse);
		cg.mapRestart = qfalse;
	}

	if (cg.snap->ps.pm_type != PM_INTERMISSION
	    && ps->persistant[PERS_TEAM] != TEAM_SPECTATOR)
	{
		CG_CheckLocalSounds(ps, ops);
	}

	if (ps->eFlags & EF_PRONE_MOVING)
	{
		if (ps->weapon == WP_BINOCULARS)
		{
			if (ps->eFlags & EF_ZOOMING)
			{
				trap_SendConsoleCommand("-zoom\n");
			}
		}

		if (!(ops->eFlags & EF_PRONE_MOVING))
		{
			// this screws up auto-switching when dynamite planted or grenade thrown/out of ammo
			//CG_FinishWeaponChange( cg.weaponSelect, ps->nextWeapon );

			cg.proneMovingTime = cg.time;
		}
	}
	else if (ops->eFlags & EF_PRONE_MOVING)
	{
		cg.proneMovingTime = -cg.time;
	}

	if (!(ps->eFlags & EF_PRONE) && (ops->eFlags & EF_PRONE))
	{
		if (cg.weaponSelect == WP_MOBILE_MG42_SET || cg.weaponSelect == WP_MOBILE_BROWNING_SET)
		{
			CG_FinishWeaponChange(cg.weaponSelect, ps->nextWeapon);
		}
	}

	// run events
	CG_CheckPlayerstateEvents(ps, ops);

	// smooth the ducking viewheight change
	if (ps->viewheight != ops->viewheight)
	{
		cg.duckChange = ps->viewheight - ops->viewheight;
		cg.duckTime   = cg.time;
	}
}
Example #7
0
/*
===============
CG_TransitionPlayerState

===============
*/
void CG_TransitionPlayerState(playerState_t *ps, playerState_t *ops) {
	// check for changing follow mode
	if (ps->clientNum != ops->clientNum) {
		cg.thisFrameTeleport = qtrue;

		// clear voicechat
		cg.predictedPlayerEntity.voiceChatSpriteTime   = 0;
		cg_entities[ps->clientNum].voiceChatSpriteTime = 0;

		// make sure we don't get any unwanted transition effects
		*ops = *ps;

		// DHM - Nerve :: After Limbo, make sure and do a CG_Respawn
		if (ps->clientNum == cg.clientNum) {
			ops->persistant[PERS_SPAWN_COUNT]--;
		}
	}

	if (ps->eFlags & EF_FIRING) {
		cg.lastFiredWeaponTime = 0;
		cg.weaponFireTime     += cg.frametime;
	} else {
		if (cg.weaponFireTime > 500 && cg.weaponFireTime) {
			cg.lastFiredWeaponTime = cg.time;
		}

		cg.weaponFireTime = 0;
	}

	// damage events (player is getting wounded)
	if (ps->damageEvent != ops->damageEvent && ps->damageCount) {
		CG_DamageFeedback(ps->damageYaw, ps->damagePitch, ps->damageCount);
	}

	// respawning
	if (ps->persistant[PERS_SPAWN_COUNT] != ops->persistant[PERS_SPAWN_COUNT]) {
		CG_Respawn();
	}

	CG_CheckLocalSounds(ps, ops);

	if (ps->eFlags & EF_PRONE_MOVING) {
		if (ps->weapon == WP_BINOCULARS && ps->eFlags & EF_ZOOMING) {
			trap_SendConsoleCommand("-zoom\n");
		}

		if (!(ops->eFlags & EF_PRONE_MOVING)) {
			cg.proneMovingTime = cg.time;
		}
	} else if (ops->eFlags & EF_PRONE_MOVING) {
		cg.proneMovingTime = -cg.time;
	}

	if (!(ps->eFlags & EF_PRONE) && ops->eFlags & EF_PRONE && cg.weaponSelect == WP_MOBILE_MG42_SET) {
		CG_FinishWeaponChange(cg.weaponSelect, ps->nextWeapon);
	}

	// run events
	CG_CheckPlayerstateEvents(ps, ops);

	// smooth the ducking viewheight change
	if (ps->viewheight != ops->viewheight) {
		cg.duckChange = ps->viewheight - ops->viewheight;
		cg.duckTime   = cg.time;
	}
}