Exemple #1
0
 def _handle_new_chat(self):
     user_entry = users.get_user_entry(self.user_id)
     session_id = user_entry.joined_id
     if session_id is None:
         session_id = user_entry.invited_id
     session_entry = session.get_entry(session_id)
     output_buf = session_entry.chat_buf
     sender, msg = output_buf[-1]
     avatar = user_entry.avatar
     event = {'chat': {'sender': sender, 'message': msg}}
     event_str = json.dumps(event)
     avatar.send_event_to_client(event_str)
Exemple #2
0
 def _reject_invitation(self):
     user_id = self.user_id
     my_entry = users.get_user_entry(user_id)
     session_id = my_entry.invited_id
     my_entry.invited_id = None
     self.lobby.reject()
     session_entry = session.get_entry(session_id)
     owner = session_entry.owner
     owner_entry = users.get_user_entry(owner)
     owner_avatar = owner_entry.avatar
     owner_avatar.send_app_signal(('invite-cancelled', user_id))
     owner_avatar.send_message(
         "{} rejected your invitation.".format(user_id))
Exemple #3
0
 def _leave_session(self):
     user_id = self.user_id
     my_entry = users.get_user_entry(user_id)
     session_id = my_entry.joined_id
     my_entry.joined_id = None
     session_entry = session.get_entry(session_id)
     session_entry.members.discard(user_id)
     self.lobby.cancel()
     members = set(session_entry.members)
     members.discard(user_id)
     msg = "{} left session {}.".format(user_id, session_id)
     for player in members:
         user_entry = users.get_user_entry(player)
         avatar = user_entry.avatar
         avatar.send_message(msg)
Exemple #4
0
 def chat(self, request):
     if not check_authenticated(request):
         return
     avatar = get_avatar(request)
     user_id = avatar.user_id
     message = request.args.get(b'message')[0];
     message = message.decode('utf-8')
     user_entry = users.get_user_entry(user_id)
     session_id = user_entry.joined_id or user_entry.invited_id
     if session_id is None:
         return
     session_entry = session.get_entry(session_id)
     chat_buf = session_entry.chat_buf
     chat_buf.append((user_id, message))
     signal = ('chat-message', {'sender': user_id}) 
     session.send_signal_to_members(session_id, signal, include_invited=True)
Exemple #5
0
 def _show_joined(self):
     """
     List the players that have joined the session.
     """
     user_id = self.user_id
     my_entry = users.get_user_entry(user_id)
     session_id = my_entry.joined_id
     session_entry = session.get_entry(session_id)
     members = list(session_entry.members)
     members.sort()
     lines = []
     lines.append("The following players have joined the session:")
     for n, player in enumerate(members):
         lines.append("{}) {}".format(n + 1, player))
     self.output.append('\n'.join(lines))
     self.update_display()
Exemple #6
0
 def _show_chat(self):
     input_buf = self.input_buf
     user_id = self.user_id
     user_entry = users.get_user_entry(user_id)
     session_id = None
     if not user_entry.joined_id is None:
         session_id = user_entry.joined_id
     elif not user_entry.invited_id is None:
         session_id = user_entry.invited_id
     if session_id is None:
         return
     session_entry = session.get_entry(session_id)
     output_buf = session_entry.chat_buf
     dialog = ChatDialog.make_instance(input_buf, output_buf)
     self.install_dialog(dialog)
     self.new_chat_flag = False
Exemple #7
0
 def _start_session(self):
     user_id = self.user_id
     my_entry = users.get_user_entry(user_id)
     session_id = my_entry.joined_id
     session_entry = session.get_entry(session_id)
     for player in self.pending_invitations:
         player_entry = users.get_user_entry(player)
         player_entry.app_protocol.lobby.revoke_invitation()
         msg = "Session '{}' was started.  Your invitation has been revoked.".format(
             session_id)
         player_entry.app_protocol.output.append(msg)
         player_entry.invited_id = None
         player_entry.app_protocol.update_display()
     members = session_entry.members
     for member in members:
         entry = users.get_user_entry(member)
         entry.app_protocol.lobby.start_session()
Exemple #8
0
 def _cancel_session(self):
     user_id = self.user_id
     my_entry = users.get_user_entry(user_id)
     session_id = my_entry.joined_id
     session_entry = session.get_entry(session_id)
     members = session_entry.members
     session.destroy_entry(session_id)
     msg = "{} cancelled the session.".format(user_id)
     for member in members:
         entry = users.get_user_entry(member)
         entry.joined_id = None
         entry.invited_id = None
         entry.avatar.send_message(msg)
         entry.app_protocol.appstate.cancel()
     pending_invitations = self.pending_invitations
     for player in pending_invitations:
         entry = users.get_user_entry(player)
         entry.joined_id = None
         entry.invited_id = None
         entry.avatar.send_message(msg)
         entry.app_protocol.appstate.revoke_invitation()
Exemple #9
0
 def _accept_invitation(self):
     user_id = self.user_id
     my_entry = users.get_user_entry(user_id)
     session_id = my_entry.invited_id
     session_entry = session.get_entry(session_id)
     owner = session_entry.owner
     owner_entry = users.get_user_entry(owner)
     my_entry.joined_id = session_id
     my_entry.invited_id = None
     session_entry.members.add(user_id)
     self.lobby.accept()
     pending_invitations = owner_entry.app_protocol.pending_invitations
     pending_invitations.discard(user_id)
     members = set(session_entry.members)
     members.discard(user_id)
     members = members.union(pending_invitations)
     msg = "{} joined session {}.".format(user_id, session_id)
     for player in members:
         user_entry = users.get_user_entry(player)
         avatar = user_entry.avatar
         avatar.send_message(msg)