Exemple #1
0
        private static void OnAllianceShareReplayMessageReceivedReceived(AllianceShareReplayMessage message)
        {
            if (AllianceManager.TryGet(message.AccountId, out Alliance alliance) && alliance.Members.TryGetValue(message.MemberId, out AllianceMemberEntry memberEntry))
            {
                ServerRequestManager.Create(new LoadAvatarStreamRequestMessage
                {
                    Id = message.ReplayId
                }, ServerManager.GetDocumentSocket(11, message.ReplayId)).OnComplete = args =>
                {
                    if (args.ErrorCode == ServerRequestError.Success && args.ResponseMessage.Success)
                    {
                        LoadAvatarStreamResponseMessage responseMessage = (LoadAvatarStreamResponseMessage)args.ResponseMessage;

                        if (responseMessage.Entry.GetAvatarStreamEntryType() == AvatarStreamEntryType.ATTACKER_BATTLE_REPORT ||
                            responseMessage.Entry.GetAvatarStreamEntryType() == AvatarStreamEntryType.DEFENDER_BATTLE_REPORT)
                        {
                            BattleReportStreamEntry battleReportStreamEntry = (BattleReportStreamEntry)responseMessage.Entry;
                            ReplayStreamEntry       replayStreamEntry       = new ReplayStreamEntry();
                            AllianceStreamEntryUtil.SetSenderInfo(replayStreamEntry, memberEntry);

                            replayStreamEntry.SetAttack(responseMessage.Entry.GetAvatarStreamEntryType() == AvatarStreamEntryType.ATTACKER_BATTLE_REPORT);
                            replayStreamEntry.SetBattleLogJSON(battleReportStreamEntry.GetBattleLogJSON());
                            replayStreamEntry.SetMajorVersion(battleReportStreamEntry.GetMajorVersion());
                            replayStreamEntry.SetBuildVersion(battleReportStreamEntry.GetBuildVersion());
                            replayStreamEntry.SetContentVersion(battleReportStreamEntry.GetContentVersion());
                            replayStreamEntry.SetReplayId(battleReportStreamEntry.GetReplayId());
                            replayStreamEntry.SetReplayShardId(battleReportStreamEntry.GetReplayShardId());
                            replayStreamEntry.SetOpponentName(battleReportStreamEntry.GetSenderName());

                            string replayMessage = message.Message;

                            if (replayMessage != null && replayMessage.Length > 128)
                            {
                                replayMessage = replayMessage.Substring(0, 128);
                            }

                            replayStreamEntry.SetMessage(replayMessage);

                            StreamManager.Create(alliance.Id, replayStreamEntry);

                            alliance.AddStreamEntry(replayStreamEntry);

                            AllianceManager.Save(alliance);
                        }
                    }
                };
            }
        }
        private void CreateBattleReport()
        {
            LogicClientAvatar attacker = (LogicClientAvatar)this.m_logicGameMode.GetLevel().GetVisitorAvatar();
            LogicClientAvatar defender = (LogicClientAvatar)this.m_logicGameMode.GetLevel().GetHomeOwnerAvatar();

            string attackerBattleLogJSON = LogicJSONParser.CreateJSONString(this.m_logicGameMode.GetLevel().GetBattleLog().GenerateAttackerJSON());
            string defenderBattleLogJSON = LogicJSONParser.CreateJSONString(this.m_logicGameMode.GetLevel().GetBattleLog().GenerateDefenderJSON());

            ServerRequestManager.Create(new CreateReplayStreamRequestMessage
            {
                JSON = LogicJSONParser.CreateJSONString(this.m_logicGameMode.GetReplay().GetJson(), 1536)
            }, ServerManager.GetNextSocket(11)).OnComplete = args =>
            {
                LogicLong replayId = null;

                if (args.ErrorCode == ServerRequestError.Success && args.ResponseMessage.Success)
                {
                    replayId = ((CreateReplayStreamResponseMessage)args.ResponseMessage).Id;
                }

                BattleReportStreamEntry attackerBattleReportStreamEntry = new BattleReportStreamEntry(AvatarStreamEntryType.ATTACKER_BATTLE_REPORT);

                attackerBattleReportStreamEntry.SetSenderAvatarId(defender.GetId());
                attackerBattleReportStreamEntry.SetSenderLevel(defender.GetExpLevel());
                attackerBattleReportStreamEntry.SetSenderLeagueType(defender.GetLeagueType());
                attackerBattleReportStreamEntry.SetSenderName(defender.GetName());
                attackerBattleReportStreamEntry.SetMajorVersion(LogicVersion.MAJOR_VERSION);
                attackerBattleReportStreamEntry.SetBuildVersion(LogicVersion.BUILD_VERSION);
                attackerBattleReportStreamEntry.SetContentVersion(ResourceManager.GetContentVersion());
                attackerBattleReportStreamEntry.SetBattleLogJSON(attackerBattleLogJSON);
                attackerBattleReportStreamEntry.SetReplayId(replayId);

                ServerRequestManager.Create(new CreateAvatarStreamRequestMessage
                {
                    OwnerId = attacker.GetId(),
                    Entry   = attackerBattleReportStreamEntry
                }, ServerManager.GetDocumentSocket(11, attacker.GetId())).OnComplete = args2 =>
                {
                    if (args2.ErrorCode == ServerRequestError.Success && args2.ResponseMessage.Success)
                    {
                        ServerMessageManager.SendMessage(new CreateAvatarStreamMessage
                        {
                            AccountId = attacker.GetId(),
                            Entry     = ((CreateAvatarStreamResponseMessage)args2.ResponseMessage).Entry
                        }, 9);
                    }
                };

                if (this.m_gameDefenderLocked)
                {
                    BattleReportStreamEntry defenderBattleReportStreamEntry = new BattleReportStreamEntry(AvatarStreamEntryType.DEFENDER_BATTLE_REPORT);

                    defenderBattleReportStreamEntry.SetSenderAvatarId(attacker.GetId());
                    defenderBattleReportStreamEntry.SetSenderLevel(attacker.GetExpLevel());
                    defenderBattleReportStreamEntry.SetSenderLeagueType(attacker.GetLeagueType());
                    defenderBattleReportStreamEntry.SetSenderName(attacker.GetName());
                    defenderBattleReportStreamEntry.SetMajorVersion(LogicVersion.MAJOR_VERSION);
                    defenderBattleReportStreamEntry.SetBuildVersion(LogicVersion.BUILD_VERSION);
                    defenderBattleReportStreamEntry.SetContentVersion(ResourceManager.GetContentVersion());
                    defenderBattleReportStreamEntry.SetBattleLogJSON(defenderBattleLogJSON);
                    defenderBattleReportStreamEntry.SetReplayId(replayId);

                    ServerRequestManager.Create(new CreateAvatarStreamRequestMessage
                    {
                        OwnerId = defender.GetId(),
                        Entry   = defenderBattleReportStreamEntry
                    }, ServerManager.GetDocumentSocket(11, defender.GetId())).OnComplete = args2 =>
                    {
                        if (args2.ErrorCode == ServerRequestError.Success && args2.ResponseMessage.Success)
                        {
                            ServerMessageManager.SendMessage(new CreateAvatarStreamMessage
                            {
                                AccountId = defender.GetId(),
                                Entry     = ((CreateAvatarStreamResponseMessage)args2.ResponseMessage).Entry
                            }, 9);
                        }
                    };
                }
            };
        }