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); } }; } }; }