I don't need to test my programs. I have an error-correcting modem.

UE2:PawnFactory

From Unreal Wiki, The Unreal Engine Documentation Site

(Redirected from Open Source/Pawn Factory)
Jump to: navigation, search

Contents

A generic factory for spawning pawns. The pawns used needs to be a sub-class of AnotherPawn.

NOTE: If your looking for a factory for vehicles check out Engine.SVehicleFactory

Properties

Visible

bool bEnabled 
Factory is enabled by default.
class<AnotherPawn> PawnClass 
The pawn to spawn.
int MaxPawnCount 
The max number of pawns this factory can create.

Hidden

int PawnCount 
The current number of pawns this factory has created.

Events

PawnCreated( AnotherPawn Pawn ) 
Called by the factory when a pawn is created.
PawnDestroyed( AnotherPawn Pawn ) 
Called by the pawn when it's destroyed.
Trigger( Actor Other, Pawn EventInstigator ) 
Spawns a new pawn if PawnClass is set and we haven't reached the MaxPawnCount.

Code

UE2 Actor >> PawnFactory (custom)
No known subclasses.
This class in other games:
U2XMP
// ============================================================================
// PawnFactory
// Copyright (c) 2006 by Andrew Fyfe <andrew@neptune-one.net>
// This program is free software; you can redistribute and/or modify
// it under the terms of the Lesser Open Unreal Mod License version 1.1.
//
// A generic factory for spawning pawns. The pawns need to be a sub-class of
// NeptuneOne.AnotherPawn.
//
// NOTE: If your looking for a factory for vehicles check out
// Engine.SVehicleFactory
// ============================================================================
 
class PawnFactory extends Actor
        placeable;
 
 
// ============================================================================
// Properties
// ============================================================================
 
var()        bool                           bEnabled;               // Factory is enabled by default.
var()        class<AnotherPawn>        PawnClass;              // The pawn to spawn.
var()        int                            MaxPawnCount;   // The max number of pawns this factory can create.
var            int                            PawnCount;              // The current number of pawns this factory has created.
 
 
// ============================================================================
// PawnCreated
//
// Called by the factory when a pawn is created.
// ============================================================================
 
event PawnCreated( AnotherPawn Pawn )
{
        PawnCount++;
        Pawn.ParentFactory = self;
 
        if ( PawnCount >= MaxPawnCount )
        {
                Log( "PawnFactory.Trigger(): MaxPawnCount reached, I'm not going to spawn another pawn.", 'NeptuneOne' );
                bEnabled = false;
        }
}
 
 
// ============================================================================
// PawnDestroyed
//
// Called by the pawn when it's destroyed.
// ============================================================================
 
event PawnDestroyed( AnotherPawn Pawn )
{
        PawnCount--;
 
        if ( PawnCount < MaxPawnCount )
        {
                Log( "PawnFactory.PawnDestroyed(): The factory is enabled again.", 'NeptuneOne' );
                bEnabled = true;
        }
}
 
 
// ============================================================================
// Trigger
//
// Spawns a new pawn if PawnClass is set and we haven't reached the
// MaxPawnCount.
// ============================================================================
 
event Trigger( Actor Other, Pawn EventInstigator )
{
        local AnotherPawn CreatedPawn;
 
        if ( !bEnabled )
                return;
 
        if ( PawnClass == None )
        {
                // Oops somebody forgot to set a PawnClass.
                Warn( "PawnFactory.Trigger(): "@self@" has no PawnClass! Disabling factory!" );
                bEnabled = false;
                return;
        }
 
        CreatedPawn = Spawn( PawnClass, , , Location, Rotation );
        if ( CreatedPawn != None )
                PawnCreated( CreatedPawn );
}
 
 
// ============================================================================
// Defaults
// ============================================================================
 
defaultproperties
{
        bEnabled=true
        MaxPawnCount=1
 
        bHidden=true
        Texture=S_Keypoint
        RemoteRole=ROLE_None
        bNoDelete=true
        bDirectional=true
}

Notes

fyfe: Added PawnCreated(), and added some code to set bEnabled to false while PawnCount == MaxPawnCount or if PawnClass isn't set.

Related Topics

Personal tools