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;
     }
 }
Esempio n. 2
0
    // 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;
        }
    }
Esempio n. 3
0
    // 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");
        }
    }
Esempio n. 4
0
    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;
        }
    }
Esempio n. 5
0
 internal void RaiseStatsUpdate(StatsUpdateEventArgs args)
 {
     Toolbox.RaiseAsyncEvent(StatsUpdate, this, args);
 }
Esempio n. 6
0
 internal void RaiseStatsUpdate(StatsUpdateEventArgs args)
 {
     Toolbox.RaiseAsyncEvent(StatsUpdate, this, args);
 }
Esempio n. 7
0
 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);
            }
        }