private void CheckCampaignTime(uint levelId, int finishTime)
        {
            if (CampaignManager.DefaultCampaignTimes.TryGetValue(levelId, out Dictionary <CampaignMedal, uint> level))
            {
                if (this.CampaignLevelRecords.TryGetValue(levelId, out CampaignLevelRecord record_))
                {
                    if (finishTime < 0)       //Died in deathmatch campaign
                    {
                        if (record_.Time > 0) //Current record is positive, so he finished, skip
                        {
                            return;
                        }
                        else if (record_.Time > finishTime) //Prefer longer time
                        {
                            return;
                        }
                    }
                    else if (finishTime > record_.Time) //Normal race, prefer shorter time
                    {
                        return;
                    }
                }

                CampaignMedal medal = CampaignMedal.None;
                if (finishTime > 0) //Only give medals for finished times
                {
                    if (level[CampaignMedal.Gold] > finishTime)
                    {
                        medal = CampaignMedal.Gold;
                    }
                    else if (level[CampaignMedal.Silver] > finishTime)
                    {
                        medal = CampaignMedal.Silver;
                    }
                    else if (level[CampaignMedal.Bronze] > finishTime)
                    {
                        medal = CampaignMedal.Bronze;
                    }
                }

                this._CampaignLevelRecords[levelId] = new CampaignLevelRecord(finishTime, medal);
            }
        }
 public CampaignLevelRecord(int time, string season, CampaignMedal medal)
 {
     this.Time   = time;
     this.Season = season;
     this.Medal  = medal;
 }
 public CampaignLevelRecord(int time, CampaignMedal medal)
 {
     this.Time  = time;
     this.Medal = medal;
 }