Esempio n. 1
0
 /// <summary>
 ///  Helper function for the WorldVectorChanged event to fire
 ///  the event given a new WorldVectorChangedEventArgs.
 /// </summary>
 /// <param name="e">References to the new and old vectors.</param>
 public void OnWorldVectorChanged(WorldVectorChangedEventArgs e)
 {
     if (WorldVectorChanged != null)
     {
         WorldVectorChanged(null, e);
     }
 }
Esempio n. 2
0
        // Called by the game engine every time a tick creates a new state for the world
        private void WorldVectorChanged(object sender, WorldVectorChangedEventArgs e)
        {
            oldVector = newVector;
            newVector = e.NewVector;

            if (tddGameView != null)
            {
                if (e.NewVector.State.Organisms.Count < 1)
                {
                    if (GameEngine.Current != null && GameEngine.Current.EcosystemMode)
                    {
                        if (developerPanel.Leds[(int)LedIndicators.DiscoveryWebService].LedState == LedStates.Failed ||
                            developerPanel.Leds[(int)LedIndicators.ReportWebService].LedState == LedStates.Failed)
                        {
                            tddGameView.TerrariumMessage = emptyEcosystemServerDownMessage;
                        }
                        else
                        {
                            tddGameView.TerrariumMessage = emptyEcosystemMessage;
                        }
                    }
                    else
                    {
                        tddGameView.TerrariumMessage = emptyTerrariumMessage;
                    }
                }
                else
                {
                    // Only clear our messages, not those set by someone else
                    if (tddGameView.TerrariumMessage == emptyEcosystemMessage || tddGameView.TerrariumMessage == emptyTerrariumMessage)
                    {
                        tddGameView.TerrariumMessage = null;
                    }
                }

                // If the network has a problem, always override the message with this
                if (GameEngine.Current != null && GameEngine.Current.NetworkEngine != null)
                {
                    if (GameEngine.Current.NetworkEngine.NetworkStatusMessage.Length != 0)
                    {
                        tddGameView.TerrariumMessage = GameEngine.Current.NetworkEngine.NetworkStatusMessage;
                    }
                    else
                    {
                        if (tddGameView.TerrariumMessage == NetworkEngine.NetworkBehindNatMessage)
                        {
                            tddGameView.TerrariumMessage = null;
                        }
                    }
                }
            }

            // Tell the tracewindow that we've got a new tick
            if (traceWindow != null)
            {
                traceWindow.TickEnded();
            }

            this.developerPanel.AnimalCount = GameEngine.Current.AnimalCount;
            this.developerPanel.MaximumAnimalCount = GameEngine.Current.MaxAnimals;
            this.developerPanel.PeerCount = GameEngine.Current.PeerCount;

            if (GameEngine.Current.EcosystemMode == true)
            {
                //this.taskBar.Text = GameConfig.WebRoot;
            }
            else
            {
                //this.taskBar.Text = GameEngine.Current.FileName;
            }

            this.taskBar.Text = "Terrarium";

            this.taskBar.Text += "\r\nPopulation: " + GameEngine.Current.AnimalCount + "/" + GameEngine.Current.MaxAnimals + "\r\nPeers: " + GameEngine.Current.PeerCount;

            try
            {
                if (GameEngine.Current.IsNetworkEnabled == true)
                {
                    developerPanel.Teleportations = GameEngine.Current.NetworkEngine.Teleportations;
                    developerPanel.FailedSends = GameEngine.Current.NetworkEngine.FailedTeleportationSends;
                    developerPanel.FailedReceives = GameEngine.Current.NetworkEngine.FailedTeleportationReceives;
                }
            }
            catch { }

            if (engineStateText != null && engineStateText.Length != 0)
            {
                this.bottomPanel.Ticker.Messages.Enqueue(engineStateText);
                engineStateText = "";
            }
        }