Engine
Class Dispatcher

source: c:\runehov\Engine\Classes\Dispatcher.uc
Core.Object
   |
   +--Engine.Actor
      |
      +--Engine.Triggers
         |
         +--Engine.Dispatcher
Direct Known Subclasses:RandomDispatcher, DispatcherFaucet, OrdersDispatcher

class Dispatcher
extends Engine.Triggers

//============================================================================= // Dispatcher: receives one trigger (corresponding to its name) as input, // then triggers a set of specifid events with optional delays. //=============================================================================
Variables
 float OutDelays[8]
           Relative delays before generating events.
 name OutEvents[8]
           Events to generate.
 bool bIsLooping
           RUNE: If true, the dispatcher loops forever
 int i
           Internal counter.

States
Dispatch

Function Summary
 void Trigger(Actor Other, Pawn EventInstigator)
     
//
// When dispatcher is triggered...
//
 
simulated
debug(Canvas Canvas, int mode)
     
//============================================================
//
// Debug
//
//============================================================


State Dispatch Function Summary



Source Code


00001	//=============================================================================
00002	// Dispatcher: receives one trigger (corresponding to its name) as input, 
00003	// then triggers a set of specifid events with optional delays.
00004	//=============================================================================
00005	class Dispatcher extends Triggers
00006		native;
00007	
00008	#exec Texture Import File=Textures\Dispatch.pcx Name=S_Dispatcher Mips=Off Flags=2
00009	
00010	//-----------------------------------------------------------------------------
00011	// Dispatcher variables.
00012	
00013	var() name  OutEvents[8]; // Events to generate.
00014	var() float OutDelays[8]; // Relative delays before generating events.
00015	var() bool bIsLooping;	  // RUNE:  If true, the dispatcher loops forever
00016	var int i;                // Internal counter.
00017	
00018	//=============================================================================
00019	// Dispatcher logic.
00020	
00021	//
00022	// When dispatcher is triggered...
00023	//
00024	function Trigger( actor Other, pawn EventInstigator )
00025	{
00026		Instigator = EventInstigator;
00027		gotostate('Dispatch');
00028	}
00029	
00030	//
00031	// Dispatch events.
00032	//
00033	state Dispatch
00034	{
00035	Begin:
00036		disable('Trigger');
00037		for( i=0; i<ArrayCount(OutEvents); i++ )
00038		{
00039			if( OutEvents[i] != '' )
00040			{
00041				if(OutDelays[i] > 0)
00042					Sleep(OutDelays[i]); // Only sleep if there is time to sleep
00043	
00044				foreach AllActors( class 'Actor', Target, OutEvents[i] )
00045					Target.Trigger( Self, Instigator );
00046			}
00047		}
00048	
00049		if(bIsLooping)
00050		{
00051			Sleep(0.0); // RUNE:  Force a sleep to avoid runaway loops
00052			goto('Begin');
00053		}
00054	
00055		enable('Trigger');
00056	}
00057	
00058	//============================================================
00059	//
00060	// Debug
00061	//
00062	//============================================================
00063	simulated function debug(canvas Canvas, int mode)
00064	{
00065		local int ix;
00066		local actor A;
00067	
00068		// put text here
00069	
00070		Super.Debug(Canvas, mode);	// Draws actor name
00071	
00072		// Draw graphics
00073		for (ix=0; ix<ArrayCount(OutEvents); ix++)
00074			if (OutEvents[ix] != '')
00075				foreach AllActors(class'Actor', A, OutEvents[ix])
00076					Canvas.DrawLine3D(Location, A.Location, 255, 255, 0);
00077	}
00078	
00079	defaultproperties
00080	{
00081	     Texture=Texture'Engine.S_Dispatcher'
00082	     bCollideActors=False
00083	}

End Source Code