Beispiel #1
0
        public Coroutine Run(IEnumerator enumerator, IPlugin owner, string name = null)
        {
            if (enumerator == null)
            {
                throw new NullReferenceException("Coroutine cant not be null.");
            }

            var routine = new Coroutine(enumerator, owner, name);

            lock (locker)
            {
                var first = Coroutines.FirstOrDefault(x => x.Name == routine.Name && x.Owner == routine.Owner);

                if (first != null)
                {
                    CountFalseAddCoroutines++;
                    return(first);
                }

                Coroutines.Add(routine);
                CoroutinePerformance.TryGetValue(routine.Name, out var t);
                CoroutinePerformance[routine.Name] = t;

                CountAddCoroutines++;
                return(routine);
            }
        }
Beispiel #2
0
        public void Reset()
        {
            foreach (var coroutine in Coroutines)
            {
                coroutine.Reset();
            }

            if (WaypointNumber == 13)
            {
                var firstCoroutine = Coroutines.FirstOrDefault();
                if (firstCoroutine != null && !(firstCoroutine is MoveToPositionCoroutine))
                {
                    //<SafeMoveTo questId="312429" stepId="2" x="2401" y="4537" z="-2" pathPrecision="5" pathPointLimit="250" scene="trOut_Highlands_Roads_EW_03" statusText="" />
                    Coroutines.Insert(0, new MoveToPositionCoroutine(71150, new Vector3(2401, 4537, -2)));
                }
            }
            //if (WaypointNumber == 14)
            //{
            //    var firstCoroutine = Coroutines.FirstOrDefault();
            //    if (firstCoroutine != null && !(firstCoroutine is MoveToPositionCoroutine))
            //    {
            //        //<SafeMoveTo questId="312429" stepId="2" x="2401" y="4537" z="-2" pathPrecision="5" pathPointLimit="250" scene="trOut_Highlands_Roads_EW_03" statusText="" />
            //        Coroutines.Insert(0, new MoveToPositionCoroutine(new Vector3(1472, 4027, 38)));
            //    }

            //}
        }
Beispiel #3
0
        public Coroutine Run(Coroutine routine)
        {
            if (routine == null)
            {
                throw new NullReferenceException("Coroutine cant not be null.");
            }

            lock (locker)
            {
                var first = Coroutines.FirstOrDefault(x => x.Name == routine.Name && x.Owner == routine.Owner);

                if (first != null)
                {
                    CountFalseAddCoroutines++;
                    return(first);
                }

                Coroutines.Add(routine);
                CoroutinePerformance.TryGetValue(routine.Name, out var t);
                CoroutinePerformance[routine.Name] = t;
                CountAddCoroutines++;
                return(routine);
            }
        }
Beispiel #4
0
 public Coroutine ByFuncName(Func <string, bool> predicate)
 {
     return(Coroutines.FirstOrDefault(x => predicate(x.Name)));
 }
Beispiel #5
0
 public Coroutine FindByName(string name)
 {
     return(Coroutines.FirstOrDefault(x => x.Name == name));
 }