Exemple #1
0
        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);
        }
Exemple #2
0
        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);
            }
        }