Exemple #1
0
        private bool Func_46116_a(EntityAITaskEntry par1EntityAITaskEntry)
        {
label0:
            {
                IEnumerator <EntityAITaskEntry> iterator = TasksToDo.GetEnumerator();
                EntityAITaskEntry entityaitaskentry;
label1:

                do
                {
                    do
                    {
                        do
                        {
                            if (!iterator.MoveNext())
                            {
                                goto label0;
                            }

                            entityaitaskentry = iterator.Current;
                        }while (entityaitaskentry == par1EntityAITaskEntry);

                        if (par1EntityAITaskEntry.Priority < entityaitaskentry.Priority)
                        {
                            goto label1;
                        }
                    }while (!ExecutingTasks.Contains(entityaitaskentry) || AreTasksCompatible(par1EntityAITaskEntry, entityaitaskentry));

                    return(false);
                }while (!ExecutingTasks.Contains(entityaitaskentry) || entityaitaskentry.Action.IsContinuous());

                return(false);
            }
            return(true);
        }
Exemple #2
0
        public virtual void OnUpdateTasks()
        {
            List <EntityAITaskEntry>        arraylist = new List <EntityAITaskEntry>();
            IEnumerator <EntityAITaskEntry> iterator  = TasksToDo.GetEnumerator();

            do
            {
                if (!iterator.MoveNext())
                {
                    break;
                }

                EntityAITaskEntry entityaitaskentry = iterator.Current;
                bool flag1 = ExecutingTasks.Contains(entityaitaskentry);

                if (flag1)
                {
                    if (Func_46116_a(entityaitaskentry) && entityaitaskentry.Action.ContinueExecuting())
                    {
                        continue;
                    }

                    entityaitaskentry.Action.ResetTask();
                    ExecutingTasks.Remove(entityaitaskentry);
                }

                if (Func_46116_a(entityaitaskentry) && entityaitaskentry.Action.ShouldExecute())
                {
                    arraylist.Add(entityaitaskentry);
                    ExecutingTasks.Add(entityaitaskentry);
                }
            }while (true);

            bool flag = false;

            if (flag && arraylist.Count > 0)
            {
                Console.WriteLine("Starting: ");
            }

            EntityAITaskEntry entityaitaskentry1;

            for (IEnumerator <EntityAITaskEntry> iterator1 = arraylist.GetEnumerator(); iterator1.MoveNext(); entityaitaskentry1.Action.StartExecuting())
            {
                entityaitaskentry1 = iterator1.Current;

                if (flag)
                {
                    Console.WriteLine((new StringBuilder()).Append(entityaitaskentry1.Action.ToString()).Append(", ").ToString());
                }
            }

            if (flag && ExecutingTasks.Count > 0)
            {
                Console.WriteLine("Running: ");
            }

            EntityAITaskEntry entityaitaskentry2;

            for (IEnumerator <EntityAITaskEntry> iterator2 = ExecutingTasks.GetEnumerator(); iterator2.MoveNext(); entityaitaskentry2.Action.UpdateTask())
            {
                entityaitaskentry2 = iterator2.Current;

                if (flag)
                {
                    Console.WriteLine(entityaitaskentry2.Action.ToString());
                }
            }
        }
Exemple #3
0
 /// <summary>
 /// Returns whether two EntityAITaskEntries can be executed concurrently
 /// </summary>
 private bool AreTasksCompatible(EntityAITaskEntry par1EntityAITaskEntry, EntityAITaskEntry par2EntityAITaskEntry)
 {
     return((par1EntityAITaskEntry.Action.GetMutexBits() & par2EntityAITaskEntry.Action.GetMutexBits()) == 0);
 }