private void OnAvatarReceived(ServerRequestArgs args)
        {
            if (args.ErrorCode == ServerRequestError.Success && args.ResponseMessage.Success)
            {
                this.LogicClientAvatar = ((AvatarResponseMessage)args.ResponseMessage).LogicClientAvatar;

                if (AllianceManager.TryGet(this.LogicClientAvatar.GetAllianceId(), out Alliance avatarAlliance) && avatarAlliance.Members.ContainsKey(this.AccountId))
                {
                    this.Alliance = avatarAlliance;
                    this.Alliance.AddOnlineMember(this.AccountId, this);

                    this.SendPiranhaMessage(this.Alliance.GetAllianceFulEntryUpdateMessage(), 1);
                    this.SendPiranhaMessage(this.Alliance.GetAllianceStreamMessage(), 1);

                    AllianceMemberUtil.SetLogicClientAvatarToAllianceMemberEntry(this.LogicClientAvatar, this.Alliance.Members[this.AccountId], this.Alliance);
                    AllianceManager.Save(this.Alliance);
                }
                else
                {
                    this.SendMessage(new StopServerSessionMessage(), 1);

                    ServerMessageManager.SendMessage(new AllianceLeavedMessage
                    {
                        AccountId  = this.AccountId,
                        AllianceId = this.LogicClientAvatar.GetAllianceId()
                    }, 9);
                    AllianceSessionManager.Remove(this.Id);
                }
            }
            else
            {
                this.SendMessage(new StopServerSessionMessage(), 1);
                AllianceSessionManager.Remove(this.Id);
            }
        }
Esempio n. 2
0
        private void OnHomeServerBound(ServerRequestArgs args)
        {
            if (args.ErrorCode == ServerRequestError.Success && args.ResponseMessage.Success)
            {
                if (this.GameAvatar.LogicClientAvatar.IsInAlliance())
                {
                    this.BindAllianceServer();
                }
                this.SendBookmarksListMessageToClient();
                this.SendAvatarStreamMessageToClient();

                this.LoadGameState(new GameHomeState
                {
                    Home           = this.GameAvatar.LogicClientHome,
                    PlayerAvatar   = this.GameAvatar.LogicClientAvatar,
                    SaveTime       = this.GameAvatar.SaveTime,
                    MapId          = this.GameAvatar.MaintenanceTime,
                    ServerCommands = this.GameAvatar.ServerCommands
                });
            }
            else
            {
                Logging.Error("GameSession.onHomeServerBound: unable to bind a home server to the session.");
                this.SendMessage(new StopSessionMessage(), 1);
            }
        }
Esempio n. 3
0
        private void OnRequestAlliance(ServerRequestArgs args)
        {
            if (this.m_session.IsDestructed())
            {
                return;
            }

            if (args.ErrorCode == ServerRequestError.Success)
            {
                RequestAllianceJoinResponseMessage responseMessage = (RequestAllianceJoinResponseMessage)args.ResponseMessage;

                if (responseMessage.Success)
                {
                    this.m_session.SendPiranhaMessage(new AllianceJoinRequestOkMessage(), 1);
                }
                else
                {
                    AllianceJoinRequestFailedMessage allianceJoinRequestFailedMessage = new AllianceJoinRequestFailedMessage();

                    switch (responseMessage.ErrorReason)
                    {
                    case RequestAllianceJoinResponseMessage.Reason.GENERIC:
                        allianceJoinRequestFailedMessage.SetReason(AllianceJoinRequestFailedMessage.Reason.GENERIC);
                        break;

                    case RequestAllianceJoinResponseMessage.Reason.CLOSED:
                        allianceJoinRequestFailedMessage.SetReason(AllianceJoinRequestFailedMessage.Reason.CLOSED);
                        break;

                    case RequestAllianceJoinResponseMessage.Reason.ALREADY_SENT:
                        allianceJoinRequestFailedMessage.SetReason(AllianceJoinRequestFailedMessage.Reason.ALREADY_SENT);
                        break;

                    case RequestAllianceJoinResponseMessage.Reason.NO_SCORE:
                        allianceJoinRequestFailedMessage.SetReason(AllianceJoinRequestFailedMessage.Reason.NO_SCORE);
                        break;

                    case RequestAllianceJoinResponseMessage.Reason.BANNED:
                        allianceJoinRequestFailedMessage.SetReason(AllianceJoinRequestFailedMessage.Reason.BANNED);
                        break;

                    case RequestAllianceJoinResponseMessage.Reason.TOO_MANY_PENDING_REQUESTS:
                        allianceJoinRequestFailedMessage.SetReason(AllianceJoinRequestFailedMessage.Reason.TOO_MANY_PENDING_REQUESTS);
                        break;

                    case RequestAllianceJoinResponseMessage.Reason.NO_DUEL_SCORE:
                        allianceJoinRequestFailedMessage.SetReason(AllianceJoinRequestFailedMessage.Reason.NO_DUEL_SCORE);
                        break;
                    }

                    this.m_session.SendPiranhaMessage(allianceJoinRequestFailedMessage, 1);
                }
            }
            else
            {
                AllianceJoinRequestFailedMessage allianceJoinRequestFailedMessage = new AllianceJoinRequestFailedMessage();
                allianceJoinRequestFailedMessage.SetReason(AllianceJoinRequestFailedMessage.Reason.GENERIC);
                this.m_session.SendPiranhaMessage(allianceJoinRequestFailedMessage, 1);
            }
        }
 public void OnAvatarStreamCreated(ServerRequestArgs args)
 {
     if (args.ErrorCode == ServerRequestError.Success && args.ResponseMessage.Success)
     {
         this.AddAvatarStreamEntry(((CreateAvatarStreamResponseMessage)args.ResponseMessage).Entry);
     }
     else
     {
         Logging.Warning("GameAvatar.onAvatarStreamCreated: The stream server " + args.ResponseMessage.Sender + " could not create a stream.");
     }
 }
Esempio n. 5
0
        private void OnCreateAlliance(ServerRequestArgs args)
        {
            if (args.ErrorCode == ServerRequestError.Success)
            {
                CreateAllianceResponseMessage createAllianceResponseMessage = (CreateAllianceResponseMessage)args.ResponseMessage;

                if (createAllianceResponseMessage.Success)
                {
                    LogicLong avatarId = this.m_session.GameMode.GetPlayerAvatar().GetId();
                    ServerRequestManager.Create(new GameJoinAllianceRequestMessage
                    {
                        AccountId  = avatarId,
                        AllianceId = createAllianceResponseMessage.AllianceId,
                        Created    = true
                    }, ServerManager.GetDocumentSocket(9, avatarId)).OnComplete = this.OnGameAllianceJoin;
                }
                else
                {
                    AllianceCreateFailedMessage allianceCreateFailedMessage = new AllianceCreateFailedMessage();

                    switch (createAllianceResponseMessage.ErrorReason)
                    {
                    case CreateAllianceResponseMessage.Reason.GENERIC:
                        allianceCreateFailedMessage.SetReason(AllianceCreateFailedMessage.Reason.GENERIC);
                        break;

                    case CreateAllianceResponseMessage.Reason.INVALID_DESCRIPTION:
                        allianceCreateFailedMessage.SetReason(AllianceCreateFailedMessage.Reason.INVALID_DESCRIPTION);
                        break;

                    case CreateAllianceResponseMessage.Reason.INVALID_NAME:
                        allianceCreateFailedMessage.SetReason(AllianceCreateFailedMessage.Reason.INVALID_NAME);
                        break;

                    case CreateAllianceResponseMessage.Reason.NAME_TOO_LONG:
                        allianceCreateFailedMessage.SetReason(AllianceCreateFailedMessage.Reason.NAME_TOO_LONG);
                        break;

                    case CreateAllianceResponseMessage.Reason.NAME_TOO_SHORT:
                        allianceCreateFailedMessage.SetReason(AllianceCreateFailedMessage.Reason.NAME_TOO_SHORT);
                        break;
                    }

                    this.m_session.SendPiranhaMessage(allianceCreateFailedMessage, 1);
                }
            }
            else
            {
                AllianceCreateFailedMessage allianceCreateFailedMessage = new AllianceCreateFailedMessage();
                allianceCreateFailedMessage.SetReason(AllianceCreateFailedMessage.Reason.GENERIC);
                this.m_session.SendPiranhaMessage(allianceCreateFailedMessage, 1);
            }
        }
 private void OnGameServerBound(ServerRequestArgs args)
 {
     if (!this.m_connection.Destructed)
     {
         if (args.ErrorCode == ServerRequestError.Success && args.ResponseMessage.Success)
         {
             if (this.m_connection.State == ClientConnectionState.LOGGED)
             {
                 this.m_connection.Session.SetStarted();
             }
         }
         else
         {
             ClientConnectionManager.Disconnect(this.m_connection, 0);
         }
     }
 }
Esempio n. 7
0
        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 void OnHomeBattleReplayLoaded(ServerRequestArgs args)
        {
            if (args.ErrorCode == ServerRequestError.Success && args.ResponseMessage.Success && !this.m_session.IsDestructed())
            {
                LoadReplayStreamResponseMessage loadReplayStreamResponseMessage = (LoadReplayStreamResponseMessage)args.ResponseMessage;

                if (loadReplayStreamResponseMessage.MajorVersion == LogicVersion.MAJOR_VERSION && loadReplayStreamResponseMessage.BuildVersion == LogicVersion.BUILD_VERSION &&
                    loadReplayStreamResponseMessage.ContentVersion == ResourceManager.GetContentVersion())
                {
                    HomeBattleReplayDataMessage homeBattleReplayDataMessage = new HomeBattleReplayDataMessage();
                    homeBattleReplayDataMessage.SetReplayData(loadReplayStreamResponseMessage.StreamData);
                    this.m_session.SendPiranhaMessage(homeBattleReplayDataMessage, 1);
                }
                else
                {
                    this.m_session.SendPiranhaMessage(new HomeBattleReplayFailedMessage(), 1);
                }
            }
            else
            {
                this.m_session.SendPiranhaMessage(new HomeBattleReplayFailedMessage(), 1);
            }
        }
Esempio n. 9
0
        private static async void OnAvatarResponseMessageReceivedForJoinableAlliancesList(ForwardLogicRequestMessage requestMessage, ServerRequestArgs args)
        {
            int score     = 0;
            int duelScore = 0;

            if (args.ErrorCode == ServerRequestError.Success && args.ResponseMessage.Success)
            {
                AvatarResponseMessage responseMessage = (AvatarResponseMessage)args.ResponseMessage;

                score     = responseMessage.LogicClientAvatar.GetScore();
                duelScore = responseMessage.LogicClientAvatar.GetDuelScore();
            }

            JoinableAllianceListMessage joinableAllianceListMessage = new JoinableAllianceListMessage();

            joinableAllianceListMessage.SetAlliances(await SearchManager.GetJoinableAlliancesList(score, duelScore));
            ServerMessageManager.SendMessage(SearchMessageManager.CreateForwardLogicMessage(joinableAllianceListMessage, requestMessage.SessionId),
                                             ServerManager.GetProxySocket(requestMessage.SessionId));
        }