public static PauseLock PauseGame(PauseLockType type, object token) { var pLock = new PauseLock(type, token); Instance.AddPauseLock(pLock); return(pLock); }
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(); } }
private void AddPauseLock(PauseLock pLock) { if (PauseLockState == null || pLock.Type < PauseLockState.Value) { ApplyPauseLock(pLock.Type); } PauseLocks.Add(pLock); }
private void RemovePauseLock(PauseLock pLock) { PauseLocks.Remove(pLock); if (PauseLocks.Count > 0) { CleanPauseLocks(); } else { DoUnpause(); } }