Beispiel #1
0
        public List <ReplayEvent> Events()
        {
            List <ReplayEvent> events = new List <ReplayEvent>();

            foreach (string file in Directory.GetFiles(Path + "\\data"))
            {
                string eventpath = Path + "\\events" + file.Substring(file.LastIndexOf('\\'));

                string dataJson  = Utils.UE4StringSerializer(file, 1);
                string eventJson = Utils.UE4StringSerializer(eventpath);

                ReplayEventMeta meta = JsonConvert.DeserializeObject <ReplayEventMeta>(eventJson);

                switch (meta.Group)
                {
                case "groggy":
                    ReplayKnockEvent knockEvent = JsonConvert.DeserializeObject <ReplayKnockEvent>(dataJson);
                    knockEvent.Time = meta.Time;

                    events.Add(knockEvent);
                    break;

                case "kill":
                    ReplayKillEvent killEvent = JsonConvert.DeserializeObject <ReplayKillEvent>(dataJson);
                    killEvent.Time = meta.Time;

                    events.Add(killEvent);
                    break;

                case "ReplaySummary":
                case "level":
                    break;

                default:
                    Console.WriteLine($"Unknown event type: {meta.Group} for event {meta.Id}");
                    break;
                }
            }

            events.Sort((x, y) => x.Time.CompareTo(y.Time));
            return(events);
        }
Beispiel #2
0
        public void RefreshInfoGroups(Replay replay)
        {
            var killEvents = replay.Events().FindAll(re => re.GetType().Name == "ReplayKillEvent");

            lengthInMins.Text   = FormatGameLength(replay.Info.LengthInMs);
            networkVerison.Text = replay.Info.NetworkVersion.ToString();
            matchType.Text      = replay.Info.ServerType.ToString();

            if (replay.Info.ServerType == ServerType.Official)
            {
                // TODO Fix game version detection
                gameVerison.Visible = false;
                host.Visible        = false;
            }
            else
            {
                gameverisonLabel.Text = "Host:";
                gameVerison.Visible   = false;
                host.Visible          = true;
                host.Text             = replay.Info.CustomHost;
            }

            serverRegion.Text         = replay.Summary.Region.ToUpper();
            serverId.Text             = replay.Info.ServerId;
            recordingSize.Text        = FormatReplaySize(replay.Info.DemoFileLastOffset);
            timeRecorded.Text         = replay.Info.CreatedAt.ToLocalTime().ToString();
            isLive.Checked            = replay.Info.IsLive;
            isIncomplete.Checked      = replay.Info.IsIncomplete;
            IsServerRecording.Checked = replay.Info.IsServerRecording;
            fileLocked.Checked        = replay.Info.ShouldKeep;
            teamInfo.Text             = replay.Info.Mode.ToString();
            profile_id          = replay.Info.RecordUserId;
            recordingUser.Text  = replay.Info.RecordUserNickName;
            mapName.Text        = replay.Info.MapName.ToString();
            diedorwon.Checked   = replay.Info.AllDeadOrWin;
            fileSize.Text       = FormatReplaySize(replay.Size());
            weatherType.Text    = FormatWeather(replay.Summary.Weather);
            totalPlayers.Text   = replay.Summary.PlayersCount.ToString();
            totalTeams.Text     = replay.Summary.TeamsCount.ToString();
            rankNum.Text        = replay.Recorder.Ranking.ToString();
            headShots.Text      = replay.Recorder.HeadShots.ToString();
            kills.Text          = replay.Recorder.Kills.ToString();
            dmgHandedOut.Text   = FormatFloat(replay.Recorder.TotalGivenDamages);
            longestKill.Text    = FormatKillDistance(replay.Recorder.LongestDistanceKill);
            distanceWalked.Text = FormatMovedDistance(replay.Recorder.TotalMovedDistance);

            for (int i = 0; i < 8; i++)
            {
                bool playerHasData = replay.Summary.Players.Length > i;

                tmBlocks[i].Group.Visible               = playerHasData;
                tmBlocks[i].Headshots.Visible           = playerHasData;
                tmBlocks[i].Headshotslabel.Visible      = playerHasData;
                tmBlocks[i].KillerPubgName.Visible      = playerHasData;
                tmBlocks[i].KillerPubgNameLabel.Visible = playerHasData;
                tmBlocks[i].KillerSteamId.Visible       = playerHasData;
                tmBlocks[i].KillerSteamIdLabel.Visible  = playerHasData;
                tmBlocks[i].Kills.Visible               = playerHasData;
                tmBlocks[i].KillsLabel.Visible          = playerHasData;
                tmBlocks[i].PubgName.Visible            = playerHasData;
                tmBlocks[i].PubgNameLabel.Visible       = playerHasData;
                tmBlocks[i].SteamId.Visible             = playerHasData;
                tmBlocks[i].SteamIdLabel.Visible        = playerHasData;

                if (playerHasData)
                {
                    tmBlocks[i].PubgName.Text  = replay.Summary.Players[i].PlayerName;
                    tmBlocks[i].SteamId.Text   = replay.Summary.Players[i].PlayerId.ToString();
                    tmBlocks[i].Headshots.Text = replay.Summary.Players[i].HeadShots.ToString();
                    tmBlocks[i].Kills.Text     = replay.Summary.Players[i].Kills.ToString();

                    try
                    {
                        ReplayKillEvent killEvent = (ReplayKillEvent)killEvents.First(kill =>
                                                                                      ((ReplayKillEvent)kill).VictimId == replay.Summary.Players[i].PlayerId.ToString());
                        tmBlocks[i].KillerPubgName.Text = killEvent.KillerName;
                        tmBlocks[i].KillerSteamId.Text  = killEvent.KillerId;
                    }
                    catch (InvalidOperationException e)
                    {
                        tmBlocks[i].KillerPubgName.Text = "[unknown]";
                        tmBlocks[i].KillerSteamId.Text  = "[unknown]";
                    }
                }
            }
        }