示例#1
0
        public static Crossout.AspWeb.Models.API.v2.BuildEntry PopulateBuildEntry(FileTraceManagment.BuildRecord build)
        {
            Crossout.AspWeb.Models.API.v2.BuildEntry build_entry = new Crossout.AspWeb.Models.API.v2.BuildEntry {
            };

            build_entry.build_hash  = build.BuildHash;
            build_entry.power_score = build.PowerScore;
            build_entry.parts       = build.Parts;

            return(build_entry);
        }
示例#2
0
        private void upload_files(object sender, DoWorkEventArgs e)
        {
            if (bw_file_uploader.CancellationPending)
            {
                return;
            }

            bw_status_update status       = new bw_status_update {
            };
            List <string> uploaded_builds = new List <string> {
            };

            Crossout.AspWeb.Models.API.v2.UploadReturn upload_return = Upload.GetPreviousUploads(session.LocalUserID);
            Crossout.AspWeb.Models.API.v2.UploadEntry  upload_entry  = new Crossout.AspWeb.Models.API.v2.UploadEntry {
                uploader_uid = session.LocalUserID, match_list = new List <Crossout.AspWeb.Models.API.v2.MatchEntry> {
                }, build_list = new List <Crossout.AspWeb.Models.API.v2.BuildEntry> {
                }
            };
            Crossout.AspWeb.Models.API.v2.BuildEntry build_entry = new Crossout.AspWeb.Models.API.v2.BuildEntry {
            };
            upload_entry.uploader_uid = session.LocalUserID;
            upload_entry.match_list   = new List <Crossout.AspWeb.Models.API.v2.MatchEntry> {
            };
            upload_entry.build_list   = new List <Crossout.AspWeb.Models.API.v2.BuildEntry> {
            };

            DateTime min_upload_date = DateTime.MaxValue;
            DateTime max_upload_date = DateTime.MinValue;
            int      percent_upload  = 0;

            upload_return = Upload.UploadToCrossoutDB(upload_entry);
            upload_entry  = new Crossout.AspWeb.Models.API.v2.UploadEntry {
                uploader_uid = session.LocalUserID, match_list = new List <Crossout.AspWeb.Models.API.v2.MatchEntry> {
                }, build_list = new List <Crossout.AspWeb.Models.API.v2.BuildEntry> {
                }
            };

            foreach (FileTraceManagment.MatchRecord match in match_history)
            {
                if (bw_file_uploader.CancellationPending)
                {
                    return;
                }

                if (upload_return.uploaded_matches.Contains(match.MatchData.ServerGUID))
                {
                    continue;
                }

                if (match.MatchData.ServerGUID == 0)
                {
                    continue;
                }

                if (match.MatchData.LocalPlayer.UID == 0)
                {
                    continue;
                }

                if (match.MatchData.PlayerRecords.Any(x => x.Value.UID == 0 && x.Value.Bot == 0))
                {
                    continue;
                }

                if (!match.MatchData.MatchRewards.Any())
                {
                    continue;
                }

                if (match.MatchData.WinningTeam == -1)
                {
                    continue;
                }

                if (match.MatchData.MatchType == GlobalData.TEST_SERVER_MATCH)
                {
                    continue;
                }

                if (match.MatchData.MatchType == GlobalData.CUSTOM_MATCH)
                {
                    continue;
                }

                if (match.MatchData.MatchStart < min_upload_date)
                {
                    min_upload_date = match.MatchData.MatchStart;
                }

                if (match.MatchData.MatchEnd > max_upload_date)
                {
                    max_upload_date = match.MatchData.MatchEnd;
                }

                foreach (FileTraceManagment.RoundRecord round in match.MatchData.RoundRecords)
                {
                    foreach (FileTraceManagment.Player player in round.Players)
                    {
                        if (bw_file_uploader.CancellationPending)
                        {
                            return;
                        }

                        if (!build_records.ContainsKey(player.BuildHash))
                        {
                            continue;
                        }

                        if (build_records[player.BuildHash].Parts.Count == 0)
                        {
                            continue;
                        }

                        if (build_records[player.BuildHash].PowerScore == 0)
                        {
                            continue;
                        }

                        if (uploaded_builds.Contains(player.BuildHash))
                        {
                            continue;
                        }

                        uploaded_builds.Add(player.BuildHash);
                        upload_entry.build_list.Add(Upload.PopulateBuildEntry(build_records[player.BuildHash]));
                    }
                }
                upload_entry.match_list.Add(Upload.PopulateMatchEntry(match, translations));

                if (upload_entry.match_list.Count >= GlobalData.UPLOAD_LIST_SIZE)
                {
                    percent_upload         = percent_upload = get_percent_upload(upload_return.uploaded_matches.Count);
                    status.text_update     = string.Format("Uploading {0} matches from {1} to {2}." + Environment.NewLine, upload_entry.match_list.Count, min_upload_date, max_upload_date);
                    status.text_update    += string.Format("Uploading {0} builds." + Environment.NewLine, upload_entry.build_list.Count);
                    status.percent_upload  = percent_upload;
                    status.matchs_uploaded = upload_return.uploaded_matches.Count;
                    status.builds_uploaded = upload_return.uploaded_builds;
                    bw_file_uploader.ReportProgress(0, status);

                    upload_return   = Upload.UploadToCrossoutDB(upload_entry);
                    min_upload_date = DateTime.MaxValue;
                    max_upload_date = DateTime.MinValue;
                    upload_entry    = new Crossout.AspWeb.Models.API.v2.UploadEntry {
                        uploader_uid = session.LocalUserID, match_list = new List <Crossout.AspWeb.Models.API.v2.MatchEntry> {
                        }, build_list = new List <Crossout.AspWeb.Models.API.v2.BuildEntry> {
                        }
                    };
                }
            }

            status.text_update     = string.Format("Uploading {0} matches from {1} to {2}." + Environment.NewLine, upload_entry.match_list.Count, min_upload_date, max_upload_date);
            status.percent_upload  = percent_upload;
            status.matchs_uploaded = upload_return.uploaded_matches.Count;
            status.builds_uploaded = upload_return.uploaded_builds;
            bw_file_uploader.ReportProgress(0, status);

            upload_return = Upload.UploadToCrossoutDB(upload_entry);

            percent_upload         = get_percent_upload(upload_return.uploaded_matches.Count);
            status.text_update     = string.Format("Finished upload of {0} from {1} to {2}." + Environment.NewLine, upload_entry.match_list.Count, min_upload_date, max_upload_date);
            status.percent_upload  = percent_upload;
            status.matchs_uploaded = upload_return.uploaded_matches.Count;
            status.builds_uploaded = upload_return.uploaded_builds;
            bw_file_uploader.ReportProgress(0, status);
        }