Worst-case scenario: the UEd Goblin wipes the map and burns down your house.
Difference between revisions of "UE2:PawnFactory"
From Unreal Wiki, The Unreal Engine Documentation Site
m |
m |
||
Line 1: | Line 1: | ||
+ | __TOC__ | ||
+ | |||
{{classbox| [[Legacy:UT2004|UT2004]] :: [[Legacy:Actor|Actor]] >> PawnFactory (Custom)}} | {{classbox| [[Legacy:UT2004|UT2004]] :: [[Legacy:Actor|Actor]] >> PawnFactory (Custom)}} | ||
Line 6: | Line 8: | ||
==Properties== | ==Properties== | ||
− | + | ===Visible=== | |
− | === | + | |
; bool bEnabled : Factory is enabled by default. | ; bool bEnabled : Factory is enabled by default. | ||
; class<[[Open_Source/Another_Pawn|AnotherPawn]]> PawnClass : The pawn to spawn. | ; class<[[Open_Source/Another_Pawn|AnotherPawn]]> PawnClass : The pawn to spawn. | ||
; int MaxPawnCount : The max number of pawns this factory can create. | ; int MaxPawnCount : The max number of pawns this factory can create. | ||
− | |||
===Hidden=== | ===Hidden=== | ||
; int PawnCount : The current number of pawns this factory has created. | ; int PawnCount : The current number of pawns this factory has created. | ||
Line 130: | Line 130: | ||
} | } | ||
</uscript> | </uscript> | ||
− | |||
− | |||
− | |||
==Notes== | ==Notes== | ||
'''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. | ||
+ | |||
+ | ==Related Topics== | ||
+ | * [[Open_Source]] |
Revision as of 15:00, 1 April 2008
The classbox template is only supposed to be used by the converted content imported into the Legacy: namespace. Consider adding descriptions to existing class pages instead.
A generic factory for spawning pawns. The pawns used need 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 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 }
Notes
fyfe: Added PawnCreated()
, and added some code to set bEnabled
to false while PawnCount == MaxPawnCount
or if PawnClass
isn't set.