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); } }
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); }
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); } } }
// 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); }
public Nomade(ChallengeRecord template, FightTeam team) : base(template, team) { }
public Mystic(ChallengeRecord template, FightTeam team) : base(template, team) { }
public Zombie(ChallengeRecord template, FightTeam team) : base(template, team) { }
public Untouchable(ChallengeRecord template, FightTeam team) : base(template, team) { }
public Status(ChallengeRecord template, FightTeam team) : base(template, team) { }
public Blitzkrieg(ChallengeRecord template, FightTeam team) : base(template, team) { }
public Challenge(ChallengeRecord template, FightTeam team) { this.Template = template; this.Team = team; }
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); }
public Elitiste(ChallengeRecord template, FightTeam team) : base(template, team) { }
public Survivant(ChallengeRecord template, FightTeam team) : base(template, team) { }
// Nothing to do :D public DevCheat(ChallengeRecord template, FightTeam team) : base(template, team) { }
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; }