Session transition phase 1.

This commit is contained in:
Greg Taylor 2006-12-22 01:40:40 +00:00
parent 6bb2be6068
commit d883d67638
6 changed files with 67 additions and 38 deletions

View file

@ -3,6 +3,7 @@ import time
import functions_general import functions_general
import functions_db import functions_db
import global_defines import global_defines
import session_mgr
from ansi import * from ansi import *
""" """
@ -168,7 +169,7 @@ def cmd_who(cdat):
""" """
Generic WHO command. Generic WHO command.
""" """
session_list = cdat['server'].get_session_list() session_list = session_mgr.get_session_list()
session = cdat['session'] session = cdat['session']
pobject = session.get_pobject() pobject = session.get_pobject()
@ -200,7 +201,7 @@ def cmd_say(cdat):
""" """
Room-based speech command. Room-based speech command.
""" """
session_list = cdat['server'].get_session_list() session_list = session_mgr.get_session_list()
session = cdat['session'] session = cdat['session']
pobject = session.get_pobject() pobject = session.get_pobject()
speech = ' '.join(cdat['uinput']['splitted'][1:]) speech = ' '.join(cdat['uinput']['splitted'][1:])

View file

@ -3,6 +3,7 @@ import functions_db
import functions_general import functions_general
import commands_general import commands_general
import cmdhandler import cmdhandler
import session_mgr
""" """
Staff commands may be a bad description for this file, but it'll do for now. Staff commands may be a bad description for this file, but it'll do for now.
@ -59,7 +60,7 @@ def cmd_destroy(cdat):
target_obj = results[0] target_obj = results[0]
session.msg("You destroy %s." % (target_obj,)) session.msg("You destroy %s." % (target_obj,))
target_obj.destroy(session.server.session_list) target_obj.destroy(session_mgr.get_session_list())
def cmd_name(cdat): def cmd_name(cdat):
""" """
@ -245,7 +246,7 @@ def cmd_teleport(cdat):
# to do it sometime else. If we can find a session in the server's # to do it sometime else. If we can find a session in the server's
# session list matching the object we're teleporting, force it to # session list matching the object we're teleporting, force it to
# look. This is going to typically be a player. # look. This is going to typically be a player.
victim_session = functions_db.session_from_object(server.get_session_list(), victim[0]) victim_session = session_mgr.session_from_object(victim[0])
if victim_session: if victim_session:
# We need to form up a new cdat dictionary to pass with the command. # We need to form up a new cdat dictionary to pass with the command.
# Kinda yucky I guess. # Kinda yucky I guess.

View file

@ -104,32 +104,6 @@ def is_dbref(dbstring):
else: else:
return True return True
def session_from_object(session_list, targobject):
"""
Return the session object given a object (if there is one open).
session_list: (list) The server's session_list attribute.
targobject: (Object) The object to match.
"""
results = [prospect for prospect in session_list if prospect.get_pobject().id == targobject.id]
if results:
return results[0]
else:
return False
def session_from_dbref(session_list, dbstring):
"""
Return the session object given a dbref (if there is one open).
dbstring: (int) The dbref number to match against.
"""
if is_dbref(dbstring):
results = [prospect for prospect in session_list if prospect.get_pobject().dbref_match(dbstring)]
if results:
return results[0]
else:
return False
def get_object_from_dbref(dbref): def get_object_from_dbref(dbref):
""" """
Returns an object when given a dbref. Returns an object when given a dbref.

View file

@ -1,7 +1,6 @@
from asyncore import dispatcher from asyncore import dispatcher
from asynchat import async_chat from asynchat import async_chat
import socket, asyncore, time, sys import socket, asyncore, time, sys
from sessions import PlayerSession
from django.db import models from django.db import models
from django.db import connection from django.db import connection
from django.contrib.auth.models import User from django.contrib.auth.models import User
@ -11,6 +10,7 @@ from scheduler import Scheduler
import functions_db import functions_db
import functions_general import functions_general
import global_defines import global_defines
import session_mgr
class Server(dispatcher): class Server(dispatcher):
""" """
@ -72,11 +72,10 @@ class Server(dispatcher):
What to do when we get a connection. What to do when we get a connection.
""" """
conn, addr = self.accept() conn, addr = self.accept()
session = PlayerSession(self, conn, addr) session = session_mgr.new_session(self, conn, addr)
session.game_connect_screen(session) session.game_connect_screen(session)
print 'Connection:', str(session) print 'Connection:', str(session)
self.session_list.append(session) print 'Sessions active:', len(session_mgr.get_session_list())
print 'Sessions active:', len(self.session_list)
""" """
BEGIN GENERAL METHODS BEGIN GENERAL METHODS
@ -106,13 +105,13 @@ class Server(dispatcher):
""" """
Lists the server's connected session objects. Lists the server's connected session objects.
""" """
return self.session_list return session_mgr.get_session_list()
def remove_session(self, session): def remove_session(self, session):
""" """
Removes a session from the server's session list. Removes a session from the server's session list.
""" """
self.session_list.remove(session) session_mgr.remove_session(session)
def shutdown(self, message='The server has been shutdown. Please check back soon.'): def shutdown(self, message='The server has been shutdown. Please check back soon.'):
functions_general.announce_all(server, message) functions_general.announce_all(server, message)

View file

@ -0,0 +1,53 @@
from sessions import PlayerSession
"""
Session manager, handles connected players.
"""
# Our list of connected sessions.
session_list = []
def new_session(server, conn, addr):
"""
Create and return a new session.
"""
session = PlayerSession(server, conn, addr)
session_list.insert(0, session)
return session
def get_session_list():
"""
Lists the connected session objects.
"""
return session_list
def remove_session(session):
"""
Removes a session from the session list.
"""
session_list.remove(session)
def session_from_object(targobject):
"""
Return the session object given a object (if there is one open).
session_list: (list) The server's session_list attribute.
targobject: (Object) The object to match.
"""
results = [prospect for prospect in session_list if prospect.get_pobject().id == targobject.id]
if results:
return results[0]
else:
return False
def session_from_dbref(dbstring):
"""
Return the session object given a dbref (if there is one open).
dbstring: (int) The dbref number to match against.
"""
if is_dbref(dbstring):
results = [prospect for prospect in session_list if prospect.get_pobject().dbref_match(dbstring)]
if results:
return results[0]
else:
return False

View file

@ -6,6 +6,7 @@ from apps.objects.models import Object
from django.contrib.auth.models import User from django.contrib.auth.models import User
import commands_general import commands_general
import functions_db import functions_db
import session_mgr
class PlayerSession(async_chat): class PlayerSession(async_chat):
""" """
@ -60,8 +61,8 @@ class PlayerSession(async_chat):
self.get_pobject().set_flag("CONNECTED", False) self.get_pobject().set_flag("CONNECTED", False)
async_chat.handle_close(self) async_chat.handle_close(self)
self.logged_in = False self.logged_in = False
self.server.remove_session(self) session_mgr.remove_session(self)
print 'Sessions active:', len(self.server.get_session_list()) print 'Sessions active:', len(session_mgr.get_session_list())
def get_pobject(self): def get_pobject(self):
""" """