Gah - a solution with more questions. – EntropicLqd
Difference between revisions of "Legacy:Fyfe/PawnFactory"
From Unreal Wiki, The Unreal Engine Documentation Site
(Added PawnCreated(), and added some code to set bEnabled to false while PawnCount == MaxPawnCount or if PawnClass isn't set.) |
|||
Line 142: | Line 142: | ||
'''fyfe:''' Added <code>PawnCreated()</code>, and added some code to set <code>bEnabled</code> to false while <code>PawnCount == MaxPawnCount</code> or if <code>PawnClass</code> isn't set. | '''fyfe:''' Added <code>PawnCreated()</code>, and added some code to set <code>bEnabled</code> to false while <code>PawnCount == MaxPawnCount</code> or if <code>PawnClass</code> isn't set. | ||
− | [[Category:Legacy Custom Class | + | [[Category:Legacy Custom Class|{{PAGENAME}}]] |
Revision as of 15:36, 11 October 2006
A generic factory for spawning pawns. The pawns need to be a sub-class of AnotherPawn.
NOTE: If your looking for a factory for vehicles check out Engine.SVehicleFactory
Properties
Main
- 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 theMaxPawnCount
.
Code
// ============================================================================ // 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< SEMI > // 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 }
Related Topics
Discussion
fyfe: Nothing overly fancy or original, it's based off of Engine.SVehicleFactory.
fyfe: Added PawnCreated()
, and added some code to set bEnabled
to false while PawnCount == MaxPawnCount
or if PawnClass
isn't set.