Engine
Class Counter

source: e:\games\UnrealTournament\Engine\Classes\Counter.uc
Core.Object
   |
   +--Engine.Actor
      |
      +--Engine.Triggers
         |
         +--Engine.Counter
Direct Known Subclasses:None

class Counter
extends Engine.Triggers

//============================================================================= // Counter: waits until it has been triggered 'NumToCount' times, and then // it sends Trigger/UnTrigger events to actors whose names match 'EventName'. //=============================================================================
Variables
 string CompleteMessage
           Completion message.
 string CountMessage
           Human readable count message.
 byte NumToCount
           Number to count down from.
 byte OriginalNum
           Number to count at startup time.
 bool bShowMessage
           Display count message?


Function Summary
 void BeginPlay()
     
//
// Init for play.
//
 void Reset()
     
//
// Reset the counter.
//
 void Trigger(Actor Other, Pawn EventInstigator)
     
//
// Counter was triggered.
//



Source Code


00001	//=============================================================================
00002	// Counter: waits until it has been triggered 'NumToCount' times, and then
00003	// it sends Trigger/UnTrigger events to actors whose names match 'EventName'.
00004	//=============================================================================
00005	class Counter extends Triggers;
00006	
00007	#exec Texture Import File=Textures\Counter.pcx Name=S_Counter Mips=Off Flags=2
00008	
00009	//-----------------------------------------------------------------------------
00010	// Counter variables.
00011	
00012	var() byte       NumToCount;                // Number to count down from.
00013	var() bool       bShowMessage;              // Display count message?
00014	var() localized  string CountMessage;       // Human readable count message.
00015	var() localized  string CompleteMessage;    // Completion message.
00016	var   byte       OriginalNum;               // Number to count at startup time.
00017	
00018	//-----------------------------------------------------------------------------
00019	// Counter functions.
00020	
00021	//
00022	// Init for play.
00023	//
00024	function BeginPlay()
00025	{
00026		OriginalNum = NumToCount;
00027	}
00028	
00029	//
00030	// Reset the counter.
00031	//
00032	function Reset()
00033	{
00034		NumToCount = OriginalNum;
00035	}
00036	
00037	//
00038	// Counter was triggered.
00039	//
00040	function Trigger( actor Other, pawn EventInstigator )
00041	{
00042		local string S;
00043		local string Num;
00044		local int i;
00045		local actor A;
00046	
00047		if( NumToCount > 0 )
00048		{
00049			if( --NumToCount == 0 )
00050			{
00051				// Trigger all matching actors.
00052				if( bShowMessage && CompleteMessage != "" )
00053					EventInstigator.ClientMessage( CompleteMessage );
00054				if( Event != '' )
00055					foreach AllActors( class 'Actor', A, Event )
00056						A.Trigger( Other, EventInstigator );
00057			}
00058			else if( bShowMessage && CountMessage != "" )
00059			{
00060				// Still counting down.
00061				switch( NumToCount )
00062				{
00063					case 1:  Num="one"; break;
00064					case 2:  Num="two"; break;
00065					case 3:  Num="three"; break;
00066					case 4:  Num="four"; break;
00067					case 5:  Num="five"; break;
00068					case 6:  Num="six"; break;
00069					default: Num=string(NumToCount); break;
00070				}
00071				S = CountMessage;
00072				while( InStr(S, "%i") >= 0 )
00073				{
00074					i = InStr(S, "%i");
00075					S = Left(S,i) $ Num $ Mid(S,i+2);
00076				}
00077				EventInstigator.ClientMessage( S );
00078			}
00079		}
00080	}
00081	
00082	defaultproperties
00083	{
00084	     NumToCount=2
00085	     CountMessage="Only %i more to go..."
00086	     CompleteMessage="Completed!"
00087	     Texture=Texture'Engine.S_Counter'
00088	}

End Source Code