/// <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); } }
// 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 = ""; } }