Ejemplo n.º 1
0
        public LobbyResponse Lobby(ClientSession session, LobbyRequest request)
        {
            session.PublicKey = request.PublicKey;
            var response = new LobbyResponse();

            response.Token = request.Token;
            try
            {
                if (session.HasLobby)
                {
                    var chatLobby = ChatLobbyManager.GetLobby(session.ChatLobbyId);
                    response.Latitude         = chatLobby.Latitude;
                    response.Longitude        = chatLobby.Longitude;
                    response.LobbyId          = chatLobby.LobbyId;
                    response.MemberPublicKeys = chatLobby.GetMemberKeys();
                    response.Range            = chatLobby.Range;
                    response.Success          = true;
                    return(response);
                }
                if (ChatLobbyManager.IsLobbyAvailable())
                {
                    var chatLobbyId = ChatLobbyManager.GetIdForNextOpenLobby();
                    var chatLobby   = ChatLobbyManager.GetLobby(chatLobbyId);
                    chatLobby.JoinLobby(session);
                    response.Latitude         = chatLobby.Latitude;
                    response.Longitude        = chatLobby.Longitude;
                    response.LobbyId          = chatLobby.LobbyId;
                    response.MemberPublicKeys = chatLobby.GetMemberKeys();
                    response.Range            = chatLobby.Range;
                    response.Success          = true;
                    return(response);
                }
                else
                {
                    var chatLobbyId = ChatLobbyManager.CreateLobby(session, request.Longitude, request.Latitude);
                    var chatLobby   = ChatLobbyManager.GetLobby(chatLobbyId);
                    response.Latitude         = chatLobby.Latitude;
                    response.Longitude        = chatLobby.Longitude;
                    response.LobbyId          = chatLobby.LobbyId;
                    response.MemberPublicKeys = chatLobby.GetMemberKeys();
                    response.Range            = chatLobby.Range;
                    response.Success          = true;
                    return(response);
                }
            }
            catch (Exception exc)
            {
                log.Error("Error on LobbyRequest", exc);
                response.Success = false;
                return(response);
            }
        }
Ejemplo n.º 2
0
 public void Message(ClientSession session, MessageRequest request)
 {
     if (session.HasLobby && session.HasChat)
     {
         var chatLobby   = ChatLobbyManager.GetLobby(session.ChatLobbyId);
         var chatSession = chatLobby.GetSession(session.ChatSessionId);
         var data        = RequestSerializer.Serialize <RequestBase>(request);
         if (chatSession != null)
         {
             chatSession.SendToSpecificMember(session.RemoteEndPoint, data);
         }
     }
 }
Ejemplo n.º 3
0
        public async Task <SessionResponse> Session(ClientSession session, SessionRequest request)
        {
            var response = request.CreateResponse <SessionResponse>();

            response.Token = request.Token;
            if (session.HasChat)
            {
                session.LeaveChatSession();
            }
            try
            {
                if (ChatLobbyManager.HasMemberSession(session.ChatLobbyId, request.MemberKey))
                {
                    response.PublicKey = ChatLobbyManager.JoinSession(session.ChatLobbyId, request.MemberKey, session);
                    response.Success   = true;
                    return(response);
                }
                else
                {
                    ChatLobbyManager.OpenSession(session.ChatLobbyId, session);
                    var membersession = ChatLobbyManager.GetLobby(session.ChatLobbyId).GetLobbyMember(request.MemberKey);
                    response.PublicKey = request.MemberKey;
                    //var creatorKey = ChatLobbyManager.JoinSession(session.ChatLobbyId, request.MemberKey, membersession);
                    SessionRequest sessionrequest = new SessionRequest
                    {
                        MemberKey = session.PublicKey
                    };
                    membersession.Send <SessionRequest>(sessionrequest);
                    response.Success = true;
                    return(response);
                }
            }
            catch (Exception exc)
            {
                response.Success = false;
                return(response);
            }
        }