Exemplo n.º 1
0
 /// <summary>
 /// Aquire the kerbal lock on the given kerbal
 /// </summary>
 public void AcquireKerbalLock(string kerbalName, bool force = false)
 {
     if (!LockQuery.KerbalLockBelongsToPlayer(kerbalName, SettingsSystem.CurrentSettings.PlayerName))
     {
         AcquireLock(new LockDefinition(LockType.Kerbal, SettingsSystem.CurrentSettings.PlayerName, kerbalName), force);
     }
 }
Exemplo n.º 2
0
 /// <summary>
 /// Acquire the unloaded update lock on the given vessel
 /// </summary>
 public void AcquireUnloadedUpdateLock(Guid vesselId, bool force = false, bool immediate = false)
 {
     if (!LockQuery.UnloadedUpdateLockBelongsToPlayer(vesselId, SettingsSystem.CurrentSettings.PlayerName))
     {
         AcquireLock(new LockDefinition(LockType.UnloadedUpdate, SettingsSystem.CurrentSettings.PlayerName, vesselId), force, immediate);
     }
 }
Exemplo n.º 3
0
 /// <summary>
 /// Releases all the player locks
 /// </summary>
 public void ReleaseAllPlayerLocks()
 {
     foreach (var lockToRelease in LockQuery.GetAllPlayerLocks(SettingsSystem.CurrentSettings.PlayerName))
     {
         ReleaseLock(lockToRelease);
     }
 }
Exemplo n.º 4
0
        private void ReleaseAllVesselLocksImpl(IEnumerable <string> crewNames, Guid vesselId)
        {
            if (LockQuery.UnloadedUpdateLockBelongsToPlayer(vesselId, SettingsSystem.CurrentSettings.PlayerName))
            {
                ReleaseLock(new LockDefinition(LockType.UnloadedUpdate, SettingsSystem.CurrentSettings.PlayerName, vesselId));
            }
            if (LockQuery.UpdateLockBelongsToPlayer(vesselId, SettingsSystem.CurrentSettings.PlayerName))
            {
                ReleaseLock(new LockDefinition(LockType.Update, SettingsSystem.CurrentSettings.PlayerName, vesselId));
            }
            if (LockQuery.ControlLockBelongsToPlayer(vesselId, SettingsSystem.CurrentSettings.PlayerName))
            {
                ReleaseLock(new LockDefinition(LockType.Control, SettingsSystem.CurrentSettings.PlayerName, vesselId));
            }

            if (crewNames != null)
            {
                foreach (var kerbal in crewNames)
                {
                    if (LockQuery.KerbalLockBelongsToPlayer(kerbal, SettingsSystem.CurrentSettings.PlayerName))
                    {
                        ReleaseLock(new LockDefinition(LockType.Kerbal, SettingsSystem.CurrentSettings.PlayerName, kerbal));
                    }
                }
            }
        }
Exemplo n.º 5
0
 /// <summary>
 /// Aquire the control lock on the given vessel
 /// </summary>
 public void AcquireControlLock(Guid vesselId, bool force = false)
 {
     if (!LockQuery.ControlLockBelongsToPlayer(vesselId, SettingsSystem.CurrentSettings.PlayerName))
     {
         AcquireLock(new LockDefinition(LockType.Control, SettingsSystem.CurrentSettings.PlayerName, vesselId), force);
     }
 }
Exemplo n.º 6
0
 /// <summary>
 /// Release the spectator lock
 /// </summary>
 public void ReleaseSpectatorLock()
 {
     if (LockQuery.SpectatorLockExists(SettingsSystem.CurrentSettings.PlayerName))
     {
         ReleaseLock(new LockDefinition(LockType.Spectator, SettingsSystem.CurrentSettings.PlayerName));
     }
 }
Exemplo n.º 7
0
        /// <summary>
        /// Release all the locks (update and control) of a vessel
        /// </summary>
        public void ReleaseAllVesselLocks(IEnumerable <string> crewNames, Guid vesselId, int msDelay = 0)
        {
            TaskFactory.StartNew(() =>
            {
                if (msDelay > 0)
                {
                    Thread.Sleep(msDelay);
                }


                if (LockQuery.UnloadedUpdateLockBelongsToPlayer(vesselId, SettingsSystem.CurrentSettings.PlayerName))
                {
                    ReleaseLock(new LockDefinition(LockType.UnloadedUpdate, SettingsSystem.CurrentSettings.PlayerName, vesselId));
                }
                if (LockQuery.UpdateLockBelongsToPlayer(vesselId, SettingsSystem.CurrentSettings.PlayerName))
                {
                    ReleaseLock(new LockDefinition(LockType.Update, SettingsSystem.CurrentSettings.PlayerName, vesselId));
                }
                if (LockQuery.ControlLockBelongsToPlayer(vesselId, SettingsSystem.CurrentSettings.PlayerName))
                {
                    ReleaseLock(new LockDefinition(LockType.Control, SettingsSystem.CurrentSettings.PlayerName, vesselId));
                }
                foreach (var kerbal in crewNames)
                {
                    if (LockQuery.KerbalLockBelongsToPlayer(kerbal, SettingsSystem.CurrentSettings.PlayerName))
                    {
                        ReleaseLock(new LockDefinition(LockType.Kerbal, SettingsSystem.CurrentSettings.PlayerName, kerbal));
                    }
                }
            });
        }
Exemplo n.º 8
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.º 9
0
 /// <summary>
 /// Releases all the player locks
 /// </summary>
 public void ReleaseAllPlayerSpecifiedLocks(params LockType[] lockTypes)
 {
     foreach (var lockToRelease in LockQuery.GetAllPlayerLocks(SettingsSystem.CurrentSettings.PlayerName))
     {
         if (lockTypes.Contains(lockToRelease.Type))
         {
             ReleaseLock(lockToRelease);
         }
     }
 }
Exemplo n.º 10
0
 /// <summary>
 /// Aquire the kerbal lock on the given vessel
 /// </summary>
 public void AcquireKerbalLock(Vessel vessel, bool force = false)
 {
     foreach (var kerbal in vessel.GetVesselCrew())
     {
         if (!LockQuery.KerbalLockBelongsToPlayer(kerbal.name, SettingsSystem.CurrentSettings.PlayerName))
         {
             AcquireLock(new LockDefinition(LockType.Kerbal, SettingsSystem.CurrentSettings.PlayerName, kerbal.name), force);
         }
     }
 }
Exemplo n.º 11
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.º 12
0
 /// <summary>
 /// Release all the locks (update and control) of a vessel
 /// </summary>
 public void ReleaseAllVesselLocks(Guid vesselId)
 {
     if (LockQuery.UpdateLockBelongsToPlayer(vesselId, SettingsSystem.CurrentSettings.PlayerName))
     {
         ReleaseLock(new LockDefinition(LockType.Update, SettingsSystem.CurrentSettings.PlayerName, vesselId));
     }
     if (LockQuery.ControlLockBelongsToPlayer(vesselId, SettingsSystem.CurrentSettings.PlayerName))
     {
         ReleaseLock(new LockDefinition(LockType.Control, SettingsSystem.CurrentSettings.PlayerName, vesselId));
     }
 }
Exemplo n.º 13
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.º 14
0
 /// <summary>
 /// Fires the relevant lock events for given vesselId
 /// </summary>
 public void FireVesselLocksEvents(Guid vesselId)
 {
     if (LockQuery.ControlLockExists(vesselId))
     {
         LockEvent.onLockAcquire.Fire(LockQuery.GetControlLock(vesselId));
     }
     if (LockQuery.UpdateLockExists(vesselId))
     {
         LockEvent.onLockAcquire.Fire(LockQuery.GetUpdateLock(vesselId));
     }
     if (LockQuery.UnloadedUpdateLockExists(vesselId))
     {
         LockEvent.onLockAcquire.Fire(LockQuery.GetUnloadedUpdateLock(vesselId));
     }
 }
Exemplo n.º 15
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);
            }
        }
Exemplo n.º 16
0
 /// <summary>
 /// Acquire the kerbal lock on the given vessel
 /// </summary>
 public void AcquireKerbalLock(Vessel vessel, bool force = false, bool immediate = false)
 {
     if (vessel == null)
     {
         return;
     }
     foreach (var kerbal in vessel.GetVesselCrew())
     {
         if (kerbal == null)
         {
             continue;
         }
         if (!LockQuery.KerbalLockBelongsToPlayer(kerbal.name, SettingsSystem.CurrentSettings.PlayerName))
         {
             AcquireLock(new LockDefinition(LockType.Kerbal, SettingsSystem.CurrentSettings.PlayerName, kerbal.name), force, immediate);
         }
     }
 }
Exemplo n.º 17
0
        /// <summary>
        /// Release all the locks (update and control) of a vessel
        /// </summary>
        public void ReleaseAllVesselLocks(Guid vesselId, int msDelay = 0)
        {
            TaskFactory.StartNew(() =>
            {
                if (msDelay > 0)
                {
                    Thread.Sleep(msDelay);
                }

                if (LockQuery.UnloadedUpdateLockBelongsToPlayer(vesselId, SettingsSystem.CurrentSettings.PlayerName))
                {
                    ReleaseLock(new LockDefinition(LockType.UnloadedUpdate, SettingsSystem.CurrentSettings.PlayerName, vesselId));
                }
                if (LockQuery.UpdateLockBelongsToPlayer(vesselId, SettingsSystem.CurrentSettings.PlayerName))
                {
                    ReleaseLock(new LockDefinition(LockType.Update, SettingsSystem.CurrentSettings.PlayerName, vesselId));
                }
                if (LockQuery.ControlLockBelongsToPlayer(vesselId, SettingsSystem.CurrentSettings.PlayerName))
                {
                    ReleaseLock(new LockDefinition(LockType.Control, SettingsSystem.CurrentSettings.PlayerName, vesselId));
                }
            });
        }