public void HandleChallengeProgressRequestPacket(Client client, Packet packet) { List <ChallengeProgress> challengeProgressList = client.DatabaseContext.ChallengeProgress .Where(q => q.CharacterId == client.Account.Characters[0].CharacterId).ToList(); S2CChallengeProgressAnswerPacket challengeProgressAnswerPacket = new S2CChallengeProgressAnswerPacket(challengeProgressList); client.PacketStream.Write(challengeProgressAnswerPacket); }
public void HandleChallengeDamagePacket(Client client, Packet packet) { C2SChallengeDamagePacket challengeDamagePacket = new C2SChallengeDamagePacket(packet); ((ChallengeBattleGame)client.ActiveChallengeGame).SetHp(challengeDamagePacket.Player, challengeDamagePacket.Hp); if (((ChallengeBattleGame)client.ActiveChallengeGame).Finished) { bool win = ((ChallengeBattleGame)client.ActiveChallengeGame).PlayerHp > 0; int timeNeeded = (((ChallengeBattleGame)client.ActiveChallengeGame).EndTime - ((ChallengeBattleGame)client.ActiveChallengeGame).StartTime).Seconds; S2CChallengeFinishPacket challengeFinishPacket = new S2CChallengeFinishPacket(win, 1, 1, 2, timeNeeded, new List <ItemReward>()); client.PacketStream.Write(challengeFinishPacket); ChallengeProgress challengeProgress = new ChallengeProgress(); challengeProgress.CharacterId = client.ActiveCharacter.CharacterId; challengeProgress.ChallengeId = client.ActiveChallengeGame.ChallengeId; challengeProgress.Success += Convert.ToInt16(win); challengeProgress.Attempts += 1; var dbChallengeProgressContext = client.DatabaseContext.ChallengeProgress.Find(new object[] { challengeProgress.CharacterId, challengeProgress.ChallengeId }); if (dbChallengeProgressContext == null) { client.DatabaseContext.ChallengeProgress.Add(challengeProgress); } else { dbChallengeProgressContext.Success = challengeProgress.Success; dbChallengeProgressContext.Attempts = challengeProgress.Attempts; client.DatabaseContext.ChallengeProgress.Update(dbChallengeProgressContext); } client.DatabaseContext.SaveChanges(); client.ActiveChallengeGame = null; List <ChallengeProgress> challengeProgressList = client.DatabaseContext.ChallengeProgress .Where(q => q.CharacterId == client.Account.Characters[0].CharacterId).ToList(); client.ActiveCharacter.ChallengeProgress = challengeProgressList; S2CChallengeProgressAnswerPacket challengeProgressAnswerPacket = new S2CChallengeProgressAnswerPacket(challengeProgressList); client.PacketStream.Write(challengeProgressAnswerPacket); } }