Exemplo n.º 1
0
        /// <summary>
        /// Release all the locks you have based by type
        /// </summary>
        public void ReleasePlayerLocks(LockType type)
        {
            var playerName = SettingsSystem.CurrentSettings.PlayerName;
            IEnumerable <LockDefinition> locksToRelease;

            switch (type)
            {
            case LockType.Asteroid:
                locksToRelease = LockQuery.AsteroidLockOwner() == playerName ?
                                 new[] { LockQuery.AsteroidLock() } : new LockDefinition[0];
                break;

            case LockType.Control:
                locksToRelease = LockQuery.GetAllControlLocks(SettingsSystem.CurrentSettings.PlayerName);
                break;

            case LockType.Update:
                locksToRelease = LockQuery.GetAllUpdateLocks(SettingsSystem.CurrentSettings.PlayerName);
                break;

            case LockType.Spectator:
                locksToRelease = LockQuery.SpectatorLockExists(SettingsSystem.CurrentSettings.PlayerName) ?
                                 new[] { LockQuery.GetSpectatorLock(SettingsSystem.CurrentSettings.PlayerName) } : new LockDefinition[0];
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(type), type, null);
            }

            foreach (var lockToRelease in locksToRelease)
            {
                ReleaseLock(lockToRelease);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Release the specified control lock excepts the one for the vessel you give as parameter.
        /// </summary>
        public void ReleaseControlLocksExcept(Guid vesselId)
        {
            var locksToRemove = LockQuery.GetAllControlLocks(SettingsSystem.CurrentSettings.PlayerName)
                                .Where(v => v.VesselId != vesselId);

            foreach (var lockToRemove in locksToRemove)
            {
                ReleaseLock(lockToRemove);
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Release the specified control lock excepts the one for the vessel you give as parameter.
        /// </summary>
        public void ReleaseControlLocksExcept(Guid vesselId)
        {
            //Serialize to array as it's a concurrent collection
            var locksToRemove = LockQuery.GetAllControlLocks(SettingsSystem.CurrentSettings.PlayerName)
                                .Where(v => v.VesselId != vesselId).ToArray();

            foreach (var lockToRemove in locksToRemove)
            {
                ReleaseLock(lockToRemove);
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// Release all the locks you have based by type
        /// </summary>
        public void ReleasePlayerLocks(LockType type)
        {
            var playerName = SettingsSystem.CurrentSettings.PlayerName;
            IEnumerable <LockDefinition> locksToRelease;

            switch (type)
            {
            case LockType.AsteroidComet:
                locksToRelease = LockQuery.AsteroidCometLockOwner() == playerName ?
                                 new[] { LockQuery.AsteroidCometLock() } : new LockDefinition[0];
                break;

            case LockType.Control:
                locksToRelease = LockQuery.GetAllControlLocks(SettingsSystem.CurrentSettings.PlayerName);
                break;

            case LockType.Kerbal:
                locksToRelease = LockQuery.GetAllKerbalLocks(SettingsSystem.CurrentSettings.PlayerName);
                break;

            case LockType.Update:
                locksToRelease = LockQuery.GetAllUpdateLocks(SettingsSystem.CurrentSettings.PlayerName);
                break;

            case LockType.UnloadedUpdate:
                locksToRelease = LockQuery.GetAllUnloadedUpdateLocks(SettingsSystem.CurrentSettings.PlayerName);
                break;

            case LockType.Spectator:
                locksToRelease = LockQuery.SpectatorLockExists(SettingsSystem.CurrentSettings.PlayerName) ?
                                 new[] { LockQuery.GetSpectatorLock(SettingsSystem.CurrentSettings.PlayerName) } : new LockDefinition[0];
                break;

            case LockType.Contract:
                locksToRelease = LockQuery.ContractLockOwner() == playerName ?
                                 new[] { LockQuery.ContractLock() } : new LockDefinition[0];
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(type), type, null);
            }

            //Serialize to array as it's a concurrent collection
            foreach (var lockToRelease in locksToRelease.ToArray())
            {
                ReleaseLock(lockToRelease);
            }
        }