コード例 #1
0
ファイル: Emitter.cs プロジェクト: zhangxin8105/LGame
        public virtual Emitter <T> OnEmit(T eventType)
        {
            if (!_active)
            {
                return(this);
            }
            int taskCount = 0;
            SortedList <Updateable> list = _emitterTable.Get(eventType);

            if (null != list)
            {
                for (LIterator <Updateable> it = list.ListIterator(); it.HasNext();)
                {
                    Updateable update = it.Next();
                    if (update != null)
                    {
                        update.Action(eventType);
                        if (update is ActionUpdate)
                        {
                            ActionUpdate au = (ActionUpdate)update;
                            if (au.Completed())
                            {
                                list.Remove(au);
                            }
                        }
                    }
                    taskCount++;
                    if (taskCount >= _maxFrameTask)
                    {
                        break;
                    }
                }
            }
            return(this);
        }
コード例 #2
0
 public virtual void Tick(LTimerContext time)
 {
     if (processes.size > 0)
     {
         SortedList <GameProcess> toBeUpdated;
         lock (this.processes)
         {
             toBeUpdated = new SortedList <GameProcess>(this.processes);
         }
         SortedList <GameProcess> deadProcesses = new SortedList <GameProcess>();
         try
         {
             for (LIterator <GameProcess> it = toBeUpdated.ListIterator(); it.HasNext();)
             {
                 GameProcess realtimeProcess = it.Next();
                 if (realtimeProcess != null)
                 {
                     lock (realtimeProcess)
                     {
                         realtimeProcess.Tick(time);
                         if (realtimeProcess.IsDead())
                         {
                             deadProcesses.Add(realtimeProcess);
                         }
                     }
                 }
             }
             if (deadProcesses.size > 0)
             {
                 for (LIterator <GameProcess> it = deadProcesses.ListIterator(); it.HasNext();)
                 {
                     GameProcess realtimeProcess = it.Next();
                     if (realtimeProcess != null)
                     {
                         lock (realtimeProcess)
                         {
                             realtimeProcess.Finish();
                         }
                     }
                 }
                 lock (this.processes)
                 {
                     this.processes.RemoveAll(deadProcesses);
                 }
             }
         }
         catch (System.Exception cause)
         {
             //LSystem.Error("Process dispatch failure", cause);
         }
     }
 }
コード例 #3
0
 public bool AnyTouch()
 {
     for (LIterator <LTouchLocation> it = ListIterator(); it.HasNext();)
     {
         LTouchLocation location = it.Next();
         if ((location.GetState() == LTouchLocationState.Pressed) ||
             (location.GetState() == LTouchLocationState.Dragged))
         {
             return(true);
         }
     }
     return(false);
 }
コード例 #4
0
        public override int GetHashCode()
        {
            if (_map == null)
            {
                return(base.GetHashCode());
            }
            int hashCode = 1;

            for (LIterator <E> it = _map.GetKeys(); it.HasNext();)
            {
                E e = it.Next();
                hashCode = 31 * hashCode + (e == null ? 0 : e.GetHashCode());
            }
            return(hashCode);
        }
コード例 #5
0
 public void Close()
 {
     lock (_lock)
     {
         for (LIterator <LRelease> it = _disposeSelf.ListIterator(); it.HasNext();)
         {
             LRelease release = it.Next();
             if (release != null)
             {
                 release.Close();
             }
         }
         _disposeSelf.Clear();
     }
 }
コード例 #6
0
ファイル: RealtimeProcess.cs プロジェクト: zhangxin8105/LGame
 public virtual void Finish()
 {
     if (!this.isDead)
     {
         Kill();
     }
     if (this.processesToFireWhenFinished != null)
     {
         for (LIterator <GameProcess> it = this.processesToFireWhenFinished.ListIterator(); it.HasNext();)
         {
             RealtimeProcessManager.Get().AddProcess(it.Next());
         }
     }
     if (this.processHost != null)
     {
         this.processHost.ProcessFinished(this.id, this);
     }
 }
コード例 #7
0
        public virtual TArray <GameProcess> Find(GameProcessType pt)
        {
            TArray <GameProcess> list = new TArray <GameProcess>();

            if (processes != null && processes.size > 0)
            {
                lock (this.processes)
                {
                    for (LIterator <GameProcess> it = processes.ListIterator(); it.HasNext();)
                    {
                        GameProcess p = it.Next();
                        if (p != null && p.GetProcessType() == pt)
                        {
                            list.Add(p);
                        }
                    }
                }
            }
            return(list);
        }
コード例 #8
0
        public virtual TArray <GameProcess> Find(string id)
        {
            TArray <GameProcess> list = new TArray <GameProcess>();

            if (processes != null && processes.size > 0)
            {
                lock (this.processes)
                {
                    for (LIterator <GameProcess> it = processes.ListIterator(); it.HasNext();)
                    {
                        GameProcess p = it.Next();
                        if (p != null && (string.ReferenceEquals(p.GetId(), id) || p.GetId().Equals(id)))
                        {
                            list.Add(p);
                        }
                    }
                }
            }
            return(list);
        }
コード例 #9
0
        public override string ToString()
        {
            LIterator <E> it = Iterator();

            if (!it.HasNext())
            {
                return("[]");
            }
            StrBuilder sbr = new StrBuilder();

            sbr.Append('[');
            for (it = _map.GetKeys(); it.HasNext();)
            {
                E e = it.Next();
                sbr.Append((object)e == (object)this ? "(this ObjectSet)" : e.ToString());
                if (!it.HasNext())
                {
                    return(sbr.Append(']').ToString());
                }
                sbr.Append(',').Append(' ');
            }
            return(sbr.ToString());
        }