private void OnGameAllianceJoin(ServerRequestArgs args) { if (args.ErrorCode == ServerRequestError.Aborted) { AllianceJoinFailedMessage allianceJoinFailedMessage = new AllianceJoinFailedMessage(); allianceJoinFailedMessage.SetReason(AllianceJoinFailedMessage.Reason.GENERIC); this.m_session.SendPiranhaMessage(allianceJoinFailedMessage, 1); } else if (!args.ResponseMessage.Success) { GameJoinAllianceResponseMessage gameJoinAllianceResponseMessage = (GameJoinAllianceResponseMessage)args.ResponseMessage; AllianceJoinFailedMessage allianceJoinFailedMessage = new AllianceJoinFailedMessage(); switch (gameJoinAllianceResponseMessage.ErrorReason) { case GameJoinAllianceResponseMessage.Reason.NO_CASTLE: case GameJoinAllianceResponseMessage.Reason.ALREADY_IN_ALLIANCE: case GameJoinAllianceResponseMessage.Reason.GENERIC: allianceJoinFailedMessage.SetReason(AllianceJoinFailedMessage.Reason.GENERIC); break; case GameJoinAllianceResponseMessage.Reason.FULL: allianceJoinFailedMessage.SetReason(AllianceJoinFailedMessage.Reason.FULL); break; case GameJoinAllianceResponseMessage.Reason.CLOSED: allianceJoinFailedMessage.SetReason(AllianceJoinFailedMessage.Reason.CLOSED); break; case GameJoinAllianceResponseMessage.Reason.SCORE: allianceJoinFailedMessage.SetReason(AllianceJoinFailedMessage.Reason.SCORE); break; case GameJoinAllianceResponseMessage.Reason.BANNED: allianceJoinFailedMessage.SetReason(AllianceJoinFailedMessage.Reason.BANNED); break; } this.m_session.SendPiranhaMessage(allianceJoinFailedMessage, 1); } }
private static void OnGameJoinAllianceRequestMessageReceived(GameJoinAllianceRequestMessage message) { if (GameAvatarManager.TryGet(message.AccountId, out GameAvatar document)) { if (document.LogicClientAvatar.IsInAlliance() || document.HasServerCommandOfType(LogicCommandType.JOIN_ALLIANCE)) { ServerRequestManager.SendResponse(new GameJoinAllianceResponseMessage { ErrorReason = GameJoinAllianceResponseMessage.Reason.ALREADY_IN_ALLIANCE }, message); return; } if (!document.LogicClientAvatar.HasAllianceCastle()) { ServerRequestManager.SendResponse(new GameJoinAllianceResponseMessage { ErrorReason = GameJoinAllianceResponseMessage.Reason.NO_CASTLE }, message); return; } if (document.PendingAllianceJoinResponse || message.AvatarStreamId != null && document.AvatarStreamList.IndexOf(message.AvatarStreamId) == -1) { ServerRequestManager.SendResponse(new GameJoinAllianceResponseMessage { ErrorReason = GameJoinAllianceResponseMessage.Reason.GENERIC }, message); return; } document.PendingAllianceJoinResponse = true; ServerRequestManager.Create(new AllianceJoinRequestMessage { AllianceId = message.AllianceId, Avatar = document.LogicClientAvatar, Created = message.Created, Invited = message.Invited }, ServerManager.GetDocumentSocket(11, message.AllianceId), 15).OnComplete = args => { document.PendingAllianceJoinResponse = false; if (args.ErrorCode == ServerRequestError.Success) { AllianceJoinResponseMessage allianceJoinResponseMessage = (AllianceJoinResponseMessage)args.ResponseMessage; if (allianceJoinResponseMessage.Success) { if (message.AvatarStreamId != null) { document.RemoveAvatarStreamEntry(message.AvatarStreamId); } LogicJoinAllianceCommand logicJoinAllianceCommand = new LogicJoinAllianceCommand(); logicJoinAllianceCommand.SetAllianceData(allianceJoinResponseMessage.AllianceId, allianceJoinResponseMessage.AllianceName, allianceJoinResponseMessage.AllianceBadgeId, allianceJoinResponseMessage.AllianceLevel, allianceJoinResponseMessage.Created); document.AddServerCommand(logicJoinAllianceCommand); ServerRequestManager.SendResponse(new GameJoinAllianceResponseMessage { Success = true }, message); } else { GameJoinAllianceResponseMessage gameJoinAllianceResponseMessage = new GameJoinAllianceResponseMessage(); switch (allianceJoinResponseMessage.ErrorReason) { case AllianceJoinResponseMessage.Reason.GENERIC: gameJoinAllianceResponseMessage.ErrorReason = GameJoinAllianceResponseMessage.Reason.GENERIC; break; case AllianceJoinResponseMessage.Reason.FULL: gameJoinAllianceResponseMessage.ErrorReason = GameJoinAllianceResponseMessage.Reason.FULL; break; case AllianceJoinResponseMessage.Reason.CLOSED: gameJoinAllianceResponseMessage.ErrorReason = GameJoinAllianceResponseMessage.Reason.CLOSED; break; case AllianceJoinResponseMessage.Reason.SCORE: gameJoinAllianceResponseMessage.ErrorReason = GameJoinAllianceResponseMessage.Reason.SCORE; break; case AllianceJoinResponseMessage.Reason.BANNED: gameJoinAllianceResponseMessage.ErrorReason = GameJoinAllianceResponseMessage.Reason.BANNED; break; } ServerRequestManager.SendResponse(gameJoinAllianceResponseMessage, message); } } else { ServerRequestManager.SendResponse(new GameJoinAllianceResponseMessage { ErrorReason = GameJoinAllianceResponseMessage.Reason.GENERIC }, message); } }; } }
private void OnRespondToAllianceJoinRequestMessageReceived(RespondToAllianceJoinRequestMessage message) { if (this.m_session.Alliance != null) { Alliance alliance = this.m_session.Alliance; AllianceMemberEntry memberEntry = alliance.Members[this.m_session.AccountId]; if (memberEntry.GetAllianceRole() == LogicAvatarAllianceRole.MEMBER) { AllianceInvitationSendFailedMessage allianceInvitationSendFailedMessage = new AllianceInvitationSendFailedMessage(); allianceInvitationSendFailedMessage.SetReason(AllianceInvitationSendFailedMessage.Reason.NO_RIGHTS); this.m_session.SendPiranhaMessage(allianceInvitationSendFailedMessage, 1); return; } LogicLong streamId = message.GetStreamEntryId(); if (alliance.StreamEntryList.IndexOf(streamId) != -1) { StreamEntry streamEntry = StreamManager.GetAllianceStream(message.GetStreamEntryId()); if (streamEntry.GetStreamEntryType() == StreamEntryType.JOIN_REQUEST) { JoinRequestAllianceStreamEntry joinRequestAllianceStreamEntry = (JoinRequestAllianceStreamEntry)streamEntry; if (joinRequestAllianceStreamEntry.GetState() == 1) { if (message.IsAccepted()) { ServerRequestManager.Create(new GameJoinAllianceRequestMessage { AccountId = joinRequestAllianceStreamEntry.GetSenderAvatarId(), AllianceId = alliance.Id, Invited = true }, ServerManager.GetDocumentSocket(9, joinRequestAllianceStreamEntry.GetSenderAvatarId())).OnComplete = args => { if (this.m_session.IsDestructed()) { return; } if (args.ErrorCode == ServerRequestError.Success) { if (args.ResponseMessage.Success) { joinRequestAllianceStreamEntry.SetState(2); joinRequestAllianceStreamEntry.SetResponderName(memberEntry.GetName()); alliance.UpdateStreamEntry(joinRequestAllianceStreamEntry); StreamManager.Save(joinRequestAllianceStreamEntry); } else { GameJoinAllianceResponseMessage gameJoinAllianceResponseMessage = (GameJoinAllianceResponseMessage)args.ResponseMessage; AllianceInvitationSendFailedMessage allianceInvitationSendFailedMessage = new AllianceInvitationSendFailedMessage(); switch (gameJoinAllianceResponseMessage.ErrorReason) { case GameJoinAllianceResponseMessage.Reason.NO_CASTLE: allianceInvitationSendFailedMessage.SetReason(AllianceInvitationSendFailedMessage.Reason.NO_CASTLE); if (joinRequestAllianceStreamEntry.GetState() == 1) { alliance.RemoveStreamEntry(joinRequestAllianceStreamEntry.GetId()); AllianceManager.Save(alliance); } break; case GameJoinAllianceResponseMessage.Reason.ALREADY_IN_ALLIANCE: allianceInvitationSendFailedMessage.SetReason(AllianceInvitationSendFailedMessage.Reason.ALREADY_IN_ALLIANCE); if (joinRequestAllianceStreamEntry.GetState() == 1) { alliance.RemoveStreamEntry(joinRequestAllianceStreamEntry.GetId()); AllianceManager.Save(alliance); } break; default: allianceInvitationSendFailedMessage.SetReason(AllianceInvitationSendFailedMessage.Reason.GENERIC); break; } this.m_session.SendPiranhaMessage(allianceInvitationSendFailedMessage, 1); } } else { AllianceInvitationSendFailedMessage allianceInvitationSendFailedMessage = new AllianceInvitationSendFailedMessage(); allianceInvitationSendFailedMessage.SetReason(AllianceInvitationSendFailedMessage.Reason.GENERIC); this.m_session.SendPiranhaMessage(allianceInvitationSendFailedMessage, 1); } }; } else { joinRequestAllianceStreamEntry.SetState(0); joinRequestAllianceStreamEntry.SetResponderName(memberEntry.GetName()); alliance.UpdateStreamEntry(joinRequestAllianceStreamEntry); StreamManager.Save(joinRequestAllianceStreamEntry); JoinAllianceResponseAvatarStreamEntry joinAllianceResponseAvatarStreamEntry = new JoinAllianceResponseAvatarStreamEntry(); joinAllianceResponseAvatarStreamEntry.SetSenderAvatarId(memberEntry.GetAvatarId()); joinAllianceResponseAvatarStreamEntry.SetSenderHomeId(memberEntry.GetHomeId()); joinAllianceResponseAvatarStreamEntry.SetSenderName(memberEntry.GetName()); joinAllianceResponseAvatarStreamEntry.SetSenderLevel(memberEntry.GetExpLevel()); joinAllianceResponseAvatarStreamEntry.SetSenderLeagueType(memberEntry.GetLeagueType()); joinAllianceResponseAvatarStreamEntry.SetAllianceId(alliance.Id); joinAllianceResponseAvatarStreamEntry.SetAllianceName(alliance.Header.GetAllianceName()); joinAllianceResponseAvatarStreamEntry.SetAllianceBadgeId(alliance.Header.GetAllianceBadgeId()); ServerMessageManager.SendMessage(new CreateAvatarStreamMessage { AccountId = joinRequestAllianceStreamEntry.GetSenderAvatarId(), Entry = joinAllianceResponseAvatarStreamEntry }, 9); } } } } } }