The three virtues of a programmer: Laziness, Impatience, and Hubris. – Larry Wall

UE2:Weapon (UT2004)

From Unreal Wiki, The Unreal Engine Documentation Site

Jump to: navigation, search
UT2004 Object >> Actor >> Inventory >> Weapon

Contents

Package: 
Engine
Direct subclasses:
AssaultRifle, BallLauncher, BioRifle, ClassicSniperRifle, FlakCannon, LinkGun, Minigun, ONSAVRiL, ONSGrenadeLauncher, ONSMineLayer, Painter, Redeemer, RocketLauncher, ShieldGun, ShockRifle, SniperRifle, TransLauncher, Weapon_Sentinel, Weapon_SpaceFighter, Weapon_Turret, Weapon_Turret_IonCannon, Weapon_Turret_Minigun
Known custom subclass:
ReloadableWeaponBase
This class in other games:
RTNP, U1, U2, U2XMP, UDK, UE2Runtime, UT, UT2003, UT3

Abstract base class for all kinds of weapons.

[edit] Constants

[edit] NUM_FIRE_MODES

Value: 2

Array size for various fire mode variables.

[edit] Properties

See Weapon properties.

[edit] Enums

[edit] EWeaponClientState

WS_None 
WS_Hidden 
WS_BringUp 
WS_PutDown 
WS_ReadyToFire 

[edit] Functions

[edit] Native functions

[edit] InitWeaponFires

native final function InitWeaponFires ()


[edit] Other native code

[edit] Weapon firing updates

void AWeapon::TickAuthoritative( FLOAT DeltaSeconds )
{
	guardSlow(AWeapon::TickAuthoritative);
 
	AActor::TickAuthoritative( DeltaSeconds );
 
	if( bDeleteMe )
		return;
 
	if ( Instigator && Instigator->Weapon == this && !Instigator->bDeleteMe && Instigator->Controller != NULL && !Instigator->Controller->bDeleteMe 
		&& !Instigator->bNoWeaponFiring )
	{
		eventWeaponTick(DeltaSeconds);
		// client & server: update mode timing
		for (INT mode=0; mode<UCONST_NUM_FIRE_MODES; mode++ )
		{
			if (FireMode[mode] != NULL)
			{
				FireMode[mode]->ModeTick( DeltaSeconds );
 
				if (!Instigator || !Instigator->Controller) // pawn was killed during mode tick (ie: shieldgun against the wall)
					return;
 
				if (Role == ROLE_Authority)
				{
					if (FireMode[mode]->bServerDelayStartFire)
					{
						if (FireMode[mode]->NextFireTime <= Level->TimeSeconds + FireMode[mode]->PreFireTime)
							eventServerStartFire(mode);
					}
					else if (FireMode[mode]->bServerDelayStopFire)
					{
						FireMode[mode]->bServerDelayStopFire = false;
						//debugf(TEXT("ServerDelayStopFire %f"), Level->TimeSeconds);
						eventStopFire(mode);
					}
				}
			}
		}
 
		// client side only: determine when firing starts and stops
		if ( Instigator->IsLocallyControlled() && !bEndOfRound )
		{
			if ( (ClientState == WS_None) || (ClientState == WS_Hidden) )
			{
				debugf(TEXT("%s ClientState was WRONG! (%d)"),GetName(),ClientState);
				ClientState = WS_ReadyToFire;
			}
 
			if ( ClientState == WS_ReadyToFire )
			{
				UBOOL bAltFire = Instigator->Controller->bAltFire;
				UBOOL bFire = Instigator->Controller->bFire;
				AWeapon *MyDefault = Cast<AWeapon>(GetClass()->GetDefaultActor());
				if ( MyDefault && MyDefault->ExchangeFireModes )
				{
					Exchange(bFire,bAltFire);
				}
 
				if (FireMode[0] != NULL)
				{
					if (FireMode[0]->bIsFiring && !bFire)
					{
						eventClientStopFire(0);
					}
					else if (!FireMode[0]->bIsFiring && bFire)
					{
						eventClientStartFire(0);
					}
				}
 
				if (FireMode[1] != NULL)
				{
					if (FireMode[1]->bIsFiring && !bAltFire)
					{
						eventClientStopFire(1);
					}
					else if (!FireMode[1]->bIsFiring && bAltFire)
					{                                       
						eventClientStartFire(1);
					}
				}
			}
			else if ( TimerRate<=0.f )
			{
				debugf(TEXT("%s no timer running with clientstate %d"),GetName(),ClientState);
				TimerRate = 0.3f;
			}
		}
	}
 
	unguardSlow;
}

[edit] Events

[edit] AnimEnd

simulated event AnimEnd (int channel)

Overrides: Actor.AnimEnd


[edit] ClientStartFire

simulated event ClientStartFire (int Mode)


[edit] ClientStopFire

simulated event ClientStopFire (int Mode)


[edit] Destroyed

simulated event Destroyed ()

Overrides: Inventory.Destroyed


[edit] PostBeginPlay

simulated event PostBeginPlay ()

Overrides: Actor.PostBeginPlay


[edit] PostNetReceive

simulated event PostNetReceive ()

Overrides: Actor.PostNetReceive


[edit] RenderOverlays

simulated event RenderOverlays (Canvas Canvas)

Overrides: Inventory.RenderOverlays


[edit] ServerStartFire

event ServerStartFire (byte Mode)


[edit] StopFire

simulated event StopFire (int Mode)


[edit] Timer

simulated event Timer ()

Overrides: Actor.Timer


[edit] WeaponTick

simulated event WeaponTick (float dt)


[edit] Other instance functions

See Weapon instance functions.

[edit] States

[edit] Hidden

[edit] PendingClientWeaponSet

[edit] PendingClientWeaponSet.BeginState

simulated event BeginState ()

Overrides: Object.BeginState (global)


[edit] PendingClientWeaponSet.EndState

simulated event EndState ()

Overrides: Object.EndState (global)


[edit] PendingClientWeaponSet.Timer

simulated event Timer ()

Overrides: Timer (global)


Personal tools