Exemple #1
0
        public void Communicate(Widget w, string reason, Action a)
        {
            if (shared == null)
            {
                return;
            }

            if (ConnectivityManager.HasConnectionToControl(shared.Vessel))
            {
                var mdelay = ConnectivityManager.GetDelayToControl(shared.Vessel) + extraDelay;
                if (mdelay > 0.1 || extraDelay > 0)
                {
                    var newat = new ActionTime(w, reason, a, shared.UpdateHandler.CurrentTime + mdelay);
                    // Linear insert because almost always it will be added at the end
                    // Only if FTL travel or if new pathways come online will it not.
                    int index = delayedActions.Count;
                    while (index - 1 >= 0 && delayedActions[index - 1].time > newat.time)
                    {
                        index--;
                    }
                    delayedActions.Insert(index, newat);
                }
                else
                {
                    a();
                }
            }
        }
Exemple #2
0
        private void UpdateDeployment(double deltaTime)
        {
            if (!ConnectivityManager.HasConnectionToControl(Shared.Vessel))
            {
                if (!signalLossWarning)
                {
                    DrawStatus("Signal lost.  Waiting to re-acquire signal.");
                    progressBarSubBuffer.Enabled = true;
                    signalLossWarning            = true;
                }
            }
            else
            {
                if (signalLossWarning)
                {
                    if (double.IsPositiveInfinity(waitTotal))
                    {
                        waitTotal = ConnectivityManager.GetDelayToControl(Shared.Vessel);
                    }
                    signalLossWarning = false;
                }

                waitElapsed += Math.Min(deltaTime, waitTotal - waitElapsed);

                if (waitElapsed >= waitTotal)
                {
                    if (deployingBatch)
                    {
                        // deploy all commands
                        foreach (string commandText in batchQueue)
                        {
                            base.ProcessCommand(commandText);
                        }

                        batchQueue.Clear();
                        deployingBatch = false;
                    }
                    else
                    {
                        // deploy first command
                        if (commandQueue.Count > 0)
                        {
                            string commandText = commandQueue[0];
                            commandQueue.RemoveAt(0);
                            base.ProcessCommand(commandText);
                        }
                    }

                    StopDeployment();
                }
                else
                {
                    DrawProgressBar(waitElapsed, waitTotal);
                }
            }
        }
Exemple #3
0
 void CheckConnectivity()
 {
     if (!ConnectivityManager.HasConnectionToControl(shared.Vessel))
     {
         GUI.color   = noControlColor;
         GUI.enabled = false;
     }
     else
     {
         var mdelay = ConnectivityManager.GetDelayToControl(shared.Vessel) + extraDelay;
         if (mdelay > 0.1)
         {
             GUI.color = slowControlColor;
         }
     }
 }