private void GetPlayerStats(object sender, StatsUpdateEventArgs e) { // Check if the peerId is the same to see if the rpm is going to change if (peerId == e.peerId) { updatedRPM = e.rpm; } }
// Stores avg speed of the player private void UpdateLiveStats(object sender, StatsUpdateEventArgs e) { UnityMainDispatcher.Instance.QForMainThread(UpdateLiveStatsMainThread, e); if (racing && e.peerId == RealTimeClient.Instance.peerId) { AvgSpeedTotal += e.rpm; ++numSpeedMeasurements; } }
// Updates the livestats of the leaderboard private void UpdateLiveStatsMainThread(StatsUpdateEventArgs e) { players[e.peerId].distance = WorkoutCalculations.CalculateDistance(e.rotations); //BLEDebug.LogInfo($"STAT: {e.peerId} {players[e.peerId]} {e.rotations}"); if (racing && e.peerId >= 1 && e.peerId <= 8 && isActive == true) { lbTemplate[players[e.peerId].rank - 1].Find("Place").GetComponent <Text>().text = players[e.peerId].rank.ToString(); lbTemplate[players[e.peerId].rank - 1].Find("Distance").GetComponent <Text>().text = players[e.peerId].distance.ToString("F2"); hsTemplate[players[e.peerId].rank - 1].Find("Place").GetComponent <Text>().text = players[e.peerId].rank.ToString(); hsTemplate[players[e.peerId].rank - 1].Find("Distance").GetComponent <Text>().text = players[e.peerId].distance.ToString("F2"); } }
private void GetPositions(object sender, StatsUpdateEventArgs e) { if (e.peerId != RealTimeClient.Instance.peerId) { Vector3 newPlayerPos = new Vector3(); float newProgressDis = e.progressDistance; for (int i = 0; i < 3; i++) { newPlayerPos[i] = e.playerPosition[i]; } serverPlayerPosition = newPlayerPos; serverProgressDistance = newProgressDis; } }
internal void RaiseStatsUpdate(StatsUpdateEventArgs args) { Toolbox.RaiseAsyncEvent(StatsUpdate, this, args); }
private void UpdatePlayerStats(object sender, StatsUpdateEventArgs e) { rpm = e.rpm; count = e.rotations; distance = CalculateDistance(count); }
void engine_StatsUpdate(object sender, StatsUpdateEventArgs e) { if (this.engineState == EngineState.Paused) { return; } long uploadSpeed = this.engine.TotalUploadSpeed; long downloadSpeed = this.engine.TotalDownloadSpeed; int seeds = 0; int leeches = 0; int nPeers = 0; double totalProgress = 0.0; string names = "Torrents: "; foreach (TorrentManager manager in this.managers) { totalProgress = totalProgress + manager.Progress; seeds += manager.Peers.Seeds + this.activeWebSeeds; leeches += manager.Peers.Leechs; nPeers += manager.InactivePeers; names += manager.Torrent.Comment; Console.WriteLine(manager.Monitor.DataBytesDownloaded); if ((manager.State == TorrentState.Downloading) && (manager.UseWebSeeding == false)) { manager.UseWebSeeding = true; } } if ((this.engineState == EngineState.Seeding) && (leeches == 0)) { if (this.waitCount != 30) { this.waitCount += 1; } else { this.waitCount = 0; this.debug("Announcing to Tracker."); foreach (TorrentManager manager in this.managers) { manager.TrackerManager.Announce(); } return; } } if ((this.engineState == EngineState.Downloading) && (seeds == 0)) { seeds += leeches; } string debugMessage = names + " Inactive Peers: " + nPeers.ToString() + " Seeds: " + seeds.ToString() + " Peers: " + leeches.ToString() + " UL: " + uploadSpeed.ToString() + " DL: " + downloadSpeed.ToString() + " Progress: " + (((totalProgress / (double)this.managers.Count) - 100 * (1 - (double)this.downloadSize / (double)this.totalSize)) * (double)this.totalSize / (double)this.downloadSize).ToString() + " DLSize: " + this.downloadSize.ToString() + " TotalSize: " + this.totalSize.ToString(); Console.WriteLine(debugMessage); debug(debugMessage); if (this.engineState == EngineState.Seeding) { string seedText; if ((leeches == 0) && (uploadSpeed == 0)) { seedText = "Waiting for peers..."; } else { seedText = "Seeding to " + leeches.ToString() + " peers at " + niceSize(uploadSpeed) + "/s"; } TorrentStatusUpdateEventArgs seedArgs = new TorrentStatusUpdateEventArgs((int)uploadSpeed, 0, leeches, 0, 0, seedText, ""); StatusUpdate(this, seedArgs); return; } double progress = (totalProgress / (double)this.managers.Count); progress = (progress - 100 * (1 - (double)this.downloadSize / (double)this.totalSize)) * (double)this.totalSize / (double)this.downloadSize; bool stillHashing = false; string hashMessage = ""; if (progress < 0) { stillHashing = true; if (this.initialProgress == -999999) { this.initialProgress = progress; } var hashProgress = 1 - progress / this.initialProgress; hashMessage = "Hashing existing pieces (" + String.Format("{0:0.#}", (hashProgress * 100)) + "%)"; progress = 0; } long remaining; if ((progress > 0.000001) && (downloadSpeed == 0)) { this.initialSize = (long)((100.0 - progress) * (double)this.downloadSize / 100.0); } remaining = (long)((100.0 - progress) * (double)this.downloadSize / 100.0); progress = Math.Round(progress, 6); this.speedSample.Add(downloadSpeed); if (this.speedSample.Count > 30) { this.speedSample.RemoveAt(0); } double weight = 0; long speedSum = 0; float fallOff = 0; int k = this.speedSample.Count; List <long> speeds = new List <long>(this.speedSample); foreach (long entry in speeds) { speedSum += (long)((double)entry / Math.Pow(k, fallOff)); weight += (1.0 / Math.Pow(k, fallOff)); k--; } long avgSpeed = (long)(speedSum / weight); if (avgSpeed == 0) { avgSpeed = 1; } long timeRemaining = remaining / avgSpeed; bool skipTime = false; if (this.lastTime == -10000) { this.lastTime = timeRemaining; skipTime = true; } else { try { if ((Math.Abs((this.lastTime - timeRemaining)) > 89) && (timeRemaining > 60)) { skipTime = true; } } catch (OverflowException) { return; } } string plural = ""; if (seeds > 1) { plural = "s"; } this.lastTime = timeRemaining; if ((timeRemaining < 0) || (Math.Abs(timeRemaining) > 100000)) { skipTime = true; } string infoMessage = ""; if (this.engineState == EngineState.Paused) { infoMessage = "Download paused (" + ((int)progress).ToString() + "% of " + niceSize(this.downloadSize) + " completed.)"; } else if ((downloadSpeed == 0) && ((int)progress != 100) && ((int)progress != 0)) { if ((progress == this.lastProgress) && (progress > 0)) { infoMessage = "Waiting for seeds..."; } else { infoMessage = "Resuming previous update..."; } this.lastProgress = progress; } else if ((downloadSpeed == 0) && ((int)progress == 0)) { if (stillHashing) { infoMessage = hashMessage; } else { infoMessage = "Establishing Connections..."; } } else { infoMessage = "Downloading " + niceSize(this.downloadSize) + " from " + seeds.ToString() + " seed" + plural + " at " + niceSize(downloadSpeed) + "/s (" + ((int)progress).ToString() + "% completed)"; } string timeMessage = ""; if (!skipTime) { timeMessage = "Approximately " + niceTime((long)timeRemaining) + " remaining."; this.lastTimeMessage = timeMessage; } else { timeMessage = this.lastTimeMessage; } TorrentStatusUpdateEventArgs args = new TorrentStatusUpdateEventArgs((int)uploadSpeed, (int)downloadSpeed, leeches, seeds, progress, infoMessage, timeMessage); if (this.engineState != EngineState.Paused) { UpdateStatus(args); } }