示例#1
0
文件: LockPause.cs 项目: XCVG/quattro
        public static PauseLock PauseGame(PauseLockType type, object token)
        {
            var pLock = new PauseLock(type, token);

            Instance.AddPauseLock(pLock);
            return(pLock);
        }
示例#2
0
文件: LockPause.cs 项目: XCVG/quattro
        private void CleanPauseLocks()
        {
            //remove "dead" locks
            int lowestLockState = int.MaxValue;

            for (int i = PauseLocks.Count - 1; i >= 0; i--)
            {
                PauseLock pLock = PauseLocks[i];
                if (IsOwnerAlive(pLock.Owner))
                {
                    //try lowest lock
                    if ((int)pLock.Type < lowestLockState)
                    {
                        lowestLockState = (int)pLock.Type;
                    }
                }
                else
                {
                    //remove it
                    PauseLocks.RemoveAt(i);
                }
            }

            //drop to new lowest lock state
            if (lowestLockState < int.MaxValue)
            {
                ApplyPauseLock((PauseLockType)lowestLockState);
            }
            else
            {
                DoUnpause();
            }
        }
示例#3
0
文件: LockPause.cs 项目: XCVG/quattro
        private void AddPauseLock(PauseLock pLock)
        {
            if (PauseLockState == null || pLock.Type < PauseLockState.Value)
            {
                ApplyPauseLock(pLock.Type);
            }

            PauseLocks.Add(pLock);
        }
示例#4
0
文件: LockPause.cs 项目: XCVG/quattro
        private void RemovePauseLock(PauseLock pLock)
        {
            PauseLocks.Remove(pLock);

            if (PauseLocks.Count > 0)
            {
                CleanPauseLocks();
            }
            else
            {
                DoUnpause();
            }
        }