RuneI
Class OrdersDispatcher

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

class OrdersDispatcher
extends Engine.Dispatcher

//============================================================================= // OrdersDispatcher: receives one trigger (corresponding to its name) as input, // then triggers a set of specifid events with optional delays. //=============================================================================
Variables
 int maxnum

States
Dispatch
State Dispatch Function Summary
 void FireOrders()
 void FireEvents()
 void BeginState()



Source Code


00001	//=============================================================================
00002	// OrdersDispatcher: receives one trigger (corresponding to its name) as input, 
00003	// then triggers a set of specifid events with optional delays.
00004	//=============================================================================
00005	class OrdersDispatcher extends Dispatcher;
00006	
00007	
00008	struct OrderPair
00009	{
00010		var() name PawnTag;
00011		var() name ScriptTag;
00012	};
00013	
00014	var(Dispatcher) OrderPair OutOrders[8];
00015	var int maxnum;
00016	
00017	//
00018	// Dispatch events.
00019	//
00020	state Dispatch
00021	{
00022		function BeginState()
00023		{
00024			maxnum = Max(ArrayCount(OutEvents), ArrayCount(OutOrders));
00025		}
00026	
00027		function FireEvents()
00028		{
00029			if( OutEvents[i] != '' )
00030			{
00031				foreach AllActors( class 'Actor', Target, OutEvents[i] )
00032					Target.Trigger( Self, Instigator );
00033			}
00034		}
00035	
00036		function FireOrders()
00037		{
00038			local ScriptPawn P;
00039	
00040			if( OutOrders[i].PawnTag != '' && OutOrders[i].ScriptTag != '' )
00041			{
00042				foreach AllActors( class 'ScriptPawn', P, OutOrders[i].PawnTag )
00043				{
00044					P.FollowOrders('Scripting', OutOrders[i].ScriptTag);
00045				}
00046			}
00047		}
00048	
00049	Begin:
00050		disable('Trigger');
00051		for( i=0; i<maxnum; i++ )
00052		{
00053			Sleep( OutDelays[i] );
00054	
00055			FireEvents();
00056			FireOrders();
00057		}
00058	
00059		if(bIsLooping)
00060		{
00061			goto('Begin');
00062		}
00063	
00064		enable('Trigger');
00065	}
00066	
00067	defaultproperties
00068	{
00069	}

End Source Code