Пример #1
0
        public async Task <bool?> SaveChallengeRecordsForAccount([NotNull] int accountId, [NotNull] ChallengeResponseVM[] challengeResponses)
        {
            try {
                Array.ForEach(
                    challengeResponses,
                    async response => {
                    var record = new ChallengeRecord {
                        AccountId           = accountId,
                        ChallengeQuestionId = response.QuestionId,
                        Response            = response.Response,
                        RecordedOn          = DateTime.UtcNow
                    };

                    await _dbContext.ChallengeRecords.AddAsync(record);
                });

                var result = await _dbContext.SaveChangesAsync();

                return(result != 0);
            }
            catch (DbUpdateException e) {
                await _coreLogService.InsertRoutinizeCoreLog(new RoutinizeCoreLog {
                    Location            = $"{ nameof(ChallengeService) }.{ nameof(SaveChallengeRecordsForAccount) }",
                    Caller              = $"{ new StackTrace().GetFrame(4)?.GetMethod()?.DeclaringType?.FullName }",
                    BriefInformation    = nameof(DbUpdateException),
                    DetailedInformation = $"Error while saving challenge records for account.\n\n{ e.StackTrace }",
                    ParamData           = $"{ nameof(accountId) } = { accountId }",
                    Severity            = SharedEnums.LogSeverity.High.GetEnumValue()
                });

                return(null);
            }
        }
Пример #2
0
 public static ChallengeRecord MergeRecords(ChallengeRecord x1, ChallengeRecord x2)
 {
     ChallengeDataHolder.Grade enTotalBest = ChallengeDataHolder.Grade.C;
     if (x1.enTotalGrade > enTotalBest)
     {
         enTotalBest = x1.enTotalGrade;
     }
     if (x2.enTotalGrade > enTotalBest)
     {
         enTotalBest = x2.enTotalGrade;
     }
     ChallengeRecordEntry[] banan = new ChallengeRecordEntry[x1.lxSubGrades.Count];
     for (int i = 0; i < banan.Length; i++)
     {
         if (ChallengeDataHolder.IsBetterThan(x1.lxSubGrades[i], x2.lxSubGrades[i]))
         {
             banan[i] = x1.lxSubGrades[i];
         }
         else
         {
             banan[i] = x2.lxSubGrades[i];
         }
     }
     return new ChallengeRecord(enTotalBest, banan);
 }
Пример #3
0
        public void Initialize()
        {
            foreach (var type in Program.WorldAssembly.GetTypes())
            {
                ChallengeAttribute attribute = type.GetCustomAttribute <ChallengeAttribute>();

                if (attribute != null)
                {
                    this.m_challenges.Add(ChallengeRecord.GetChallenge(attribute.ChallengeType), type);
                }
            }
        }
Пример #4
0
        // CONSTRUCTORS
        public ChallengeChecker()
        {
            this.m_pattern = this;

            this.m_challenge = Singleton <ChallengeManager> .Instance.GetChallenge(this.ChallengeId);

            if (this.m_challenge == null)
            {
                throw new Exception("Challenge checker is not related to a valid challenge.");
            }

            this.m_nbGrade = Math.Max(0, (this.MaxBonus - this.MinBonus) / 5);
        }
Пример #5
0
 public Nomade(ChallengeRecord template, FightTeam team)
     : base(template, team)
 {
 }
Пример #6
0
 public Mystic(ChallengeRecord template, FightTeam team)
     : base(template, team)
 {
 }
Пример #7
0
 public Zombie(ChallengeRecord template, FightTeam team)
     : base(template, team)
 {
 }
Пример #8
0
 public Untouchable(ChallengeRecord template, FightTeam team)
     : base(template, team)
 {
 }
Пример #9
0
 public Status(ChallengeRecord template, FightTeam team)
     : base(template, team)
 {
 }
Пример #10
0
 public Blitzkrieg(ChallengeRecord template, FightTeam team)
     : base(template, team)
 {
 }
Пример #11
0
 public Challenge(ChallengeRecord template, FightTeam team)
 {
     this.Template = template;
     this.Team     = team;
 }
Пример #12
0
 private bool CanAddChallenge(List <Challenge> results, ChallengeRecord added)
 {
     return(!results.Any(x => added.IncompatibleChallenges.Contains((short)x.Id)) && results.Find(x => x.Id == added.Id) == null);
 }
Пример #13
0
 public Elitiste(ChallengeRecord template, FightTeam team)
     : base(template, team)
 {
 }
Пример #14
0
 public Survivant(ChallengeRecord template, FightTeam team)
     : base(template, team)
 {
 }
Пример #15
0
 // Nothing to do :D
 public DevCheat(ChallengeRecord template, FightTeam team)
     : base(template, team)
 {
 }
Пример #16
0
 public void CompareResults()
 {
     this.bActive = false;
     this.lxChallengeRecords.Clear();
     this.lbBrokeRecord.Clear();
     PlayerView xLocalPlayer = Program.GetTheGame().xLocalPlayer;
     if (this.enChallengeType == ChallengeDataHolder.ChallangeType.Challenge01_SuperTrials)
     {
         ChallengeDataHolder.Grade enTimeGrade = ChallengeDataHolder.Grade.C;
         if (this.iTime < 10800)
         {
             enTimeGrade = ChallengeDataHolder.Grade.S;
         }
         else if (this.iTime < 18000)
         {
             enTimeGrade = ChallengeDataHolder.Grade.A;
         }
         else if (this.iTime < 25200)
         {
             enTimeGrade = ChallengeDataHolder.Grade.B;
         }
         ChallengeDataHolder.Grade enDamageGrade = ChallengeDataHolder.Grade.C;
         if (this.iDamageReceived <= 0)
         {
             enDamageGrade = ChallengeDataHolder.Grade.S;
         }
         else if (this.iDamageReceived <= 200)
         {
             enDamageGrade = ChallengeDataHolder.Grade.A;
         }
         else if (this.iDamageReceived <= 500)
         {
             enDamageGrade = ChallengeDataHolder.Grade.B;
         }
         this.lxChallengeRecords.Add(new ChallengeRecordEntry(ChallengeDataHolder.GradeType.Time_LowerIsBetter, enTimeGrade, this.iTime));
         this.lxChallengeRecords.Add(new ChallengeRecordEntry(ChallengeDataHolder.GradeType.DamageTaken, enDamageGrade, this.iDamageReceived));
         if (!xLocalPlayer.xJournalInfo.denxChallengeRecords.ContainsKey(this.enChallengeType) || xLocalPlayer.xJournalInfo.denxChallengeRecords[this.enChallengeType].lxSubGrades[0].iValue > this.iTime)
         {
             this.lbBrokeRecord.Add(true);
         }
         else
         {
             this.lbBrokeRecord.Add(false);
         }
         if (!xLocalPlayer.xJournalInfo.denxChallengeRecords.ContainsKey(this.enChallengeType) || xLocalPlayer.xJournalInfo.denxChallengeRecords[this.enChallengeType].lxSubGrades[1].iValue > this.iDamageReceived)
         {
             this.lbBrokeRecord.Add(true);
         }
         else
         {
             this.lbBrokeRecord.Add(false);
         }
     }
     else if (this.enChallengeType == ChallengeDataHolder.ChallangeType.Challenge03_KingSlime)
     {
         ChallengeDataHolder.Grade enTimeGrade2 = ChallengeDataHolder.Grade.C;
         if (this.iTime < 5400)
         {
             enTimeGrade2 = ChallengeDataHolder.Grade.S;
         }
         else if (this.iTime < 9000)
         {
             enTimeGrade2 = ChallengeDataHolder.Grade.A;
         }
         else if (this.iTime < 12600)
         {
             enTimeGrade2 = ChallengeDataHolder.Grade.B;
         }
         ChallengeDataHolder.Grade enDamageGrade2 = ChallengeDataHolder.Grade.C;
         if (this.iDamageReceived <= 0)
         {
             enDamageGrade2 = ChallengeDataHolder.Grade.S;
         }
         else if (this.iDamageReceived <= 150)
         {
             enDamageGrade2 = ChallengeDataHolder.Grade.A;
         }
         else if (this.iDamageReceived <= 350)
         {
             enDamageGrade2 = ChallengeDataHolder.Grade.B;
         }
         this.lxChallengeRecords.Add(new ChallengeRecordEntry(ChallengeDataHolder.GradeType.Time_LowerIsBetter, enTimeGrade2, this.iTime));
         this.lxChallengeRecords.Add(new ChallengeRecordEntry(ChallengeDataHolder.GradeType.DamageTaken, enDamageGrade2, this.iDamageReceived));
         if (!xLocalPlayer.xJournalInfo.denxChallengeRecords.ContainsKey(this.enChallengeType) || xLocalPlayer.xJournalInfo.denxChallengeRecords[this.enChallengeType].lxSubGrades[0].iValue > this.iTime)
         {
             this.lbBrokeRecord.Add(true);
         }
         else
         {
             this.lbBrokeRecord.Add(false);
         }
         if (!xLocalPlayer.xJournalInfo.denxChallengeRecords.ContainsKey(this.enChallengeType) || xLocalPlayer.xJournalInfo.denxChallengeRecords[this.enChallengeType].lxSubGrades[1].iValue > this.iDamageReceived)
         {
             this.lbBrokeRecord.Add(true);
         }
         else
         {
             this.lbBrokeRecord.Add(false);
         }
     }
     int iTempGrade = 0;
     foreach (ChallengeRecordEntry grade in this.lxChallengeRecords)
     {
         iTempGrade = (int)((byte)iTempGrade + grade.enGradeValue);
     }
     iTempGrade /= this.lxChallengeRecords.Count;
     this.enTotalGrade = (ChallengeDataHolder.Grade)iTempGrade;
     if (!xLocalPlayer.xJournalInfo.denxChallengeRecords.ContainsKey(this.enChallengeType) || xLocalPlayer.xJournalInfo.denxChallengeRecords[this.enChallengeType].enTotalGrade < this.enTotalGrade)
     {
         this.bBrokeTotalRecord = true;
     }
     if (xLocalPlayer.xJournalInfo.denxChallengeRecords.ContainsKey(this.enChallengeType))
     {
         this.enPreviousBest = xLocalPlayer.xJournalInfo.denxChallengeRecords[this.enChallengeType].enTotalGrade;
     }
     this.xChallangeRecord = new ChallengeRecord(this.enTotalGrade, this.lxChallengeRecords.ToArray());
     this.bVictoryToAward = true;
 }