All pastes #385680 Raw Edit

Something

public text v1 · immutable
·published 2007-03-08 00:34 UTC
rendered paste body
void rvWeapon::State_Reload() {
	enum
	{
		STAGE_INIT,
		STAGE_WAIT,
	};
	switch( currentStage )
	{
		case STAGE_INIT:

			if ( !wsfl.reloading ) {

				if( wsfl.netReload )
					wsfl.netReload = false;
				else
					NetReload();

				wsfl.reloading = true;

				//SetStatus( WP_RELOAD );		// just made "reload" blink on the HUD..
				SetState ( WEAP_STATE_LOWER );
				SetStage( STAGE_INIT ); // xavior: I'm not 100% sure about these..
				return;
			}
			
			nextReloadTime = gameLocal.time + reloadTime;

			raiselower_time = WEAPON_RAISELOWER_TIME;
			raiselower_endtime = gameLocal.time + raiselower_time;

			SetStatus( WP_RELOAD );
			SetStage( STAGE_WAIT );
			return;

		case STAGE_WAIT:
			if ( gameLocal.time > nextReloadTime ) {
				AddToClip( 1 );

				if( AmmoInClip() < ClipSize() && AmmoAvailable() > AmmoInClip() ) {
					nextReloadTime = gameLocal.time + reloadTime;
					SetStatus( WP_RELOAD );
					SetStage( STAGE_WAIT );
					return;
				}

				SetStatus( WP_RELOADDONE );

				if ( wsfl.lowerWeapon ) {
					SetStatus( WP_HOLSTERED );
					SetState ( WEAP_STATE_LOWER );
					SetStage( STAGE_INIT );
					return;
				}
				SetState ( WEAP_STATE_RAISE );
				SetStage( STAGE_INIT );
				wsfl.reloading = false;
				//nextAttackTime = gameLocal.time + 200;
				return;
			}
			SetStage( STAGE_WAIT );
			return;
		}
	StateError( "Unknown stage #" );	//xavior: this looks like what 3j tried to do with the above states
	return;								//in place of SRESULT_ERROR
}