Ejemplo n.º 1
0
        private void ScheduleBehavior(BehaviorExecutionContext context)
        {
            DebugIf("behaviorSchedule", "ScheduleBehavior '" + context.ToString() + "'");
			try {
				scheduler.WaitOne();
	            foreach (BehaviorNode node in context.Nodes)
	            {
	                if (node is BehaviorNodes.Required)
	                {
	                    if ((node as BehaviorNodes.Required).IsValid())
	                    {
	                        foreach (BehaviorNodes.Action a in (node as BehaviorNodes.Required).Actions)
	                        {
	                            a.RequiredAction = true;
	                            a.ParentNode = node;
	                            ScheduleAction(a, context);
	                        }
	                    }
	                }
	                else
	                {
	                    (node as BehaviorNodes.Action).RequiredAction = false;
	                    ScheduleAction((node as BehaviorNodes.Action), context);
	                }
	            }
				scheduler.ReleaseMutex();
				RunningBehaviors.Add(context);
			}catch(Exception e){
				DebugIf("error", "Failed to schedule behavior '" + context.Behavior.Id + "' on character '" + context.Character.Name + "': " + e.Message);
			}
        }