Exemplo n.º 1
0
 def new_room_widget(self, name):
     rclss = rooms.classes()
     choices = [(rcls, rcls) for rcls in rclss]
     choices.insert(0, (None, 'New room ...'))
     info = dict(name=name,
                 choices=choices,
                 selected='')
     return self.render_form_select(info)
Exemplo n.º 2
0
    def render_process(self, ctx, data):
        request = ctx.locate(inevow.IRequest)
        args = normalize_args(request.args)

        roomid = int(args['roomid'])
        room = tzindex.get(roomid)

        xname = args['xname']
        xclass = args['xclass']

        bxname = args['bxname']
        bxclass = args['bxclass']

        destid = args['dest']
        if destid != 'None':
            destid = int(destid)
            dest = tzindex.get(destid)
        else:
            dest = None

        newroomcls = args['newroom']
        newroomname = args['newroomname']
        if newroomcls == 'None' and newroomname:
            newroomcls = 'Room'
        elif newroomcls == 'None':
            newroomcls = None

        if dest is None and newroomcls is None:
            self.goback(request, 'Choose existing room, or room type to clone.')
            return
        elif dest is not None and newroomcls is not None:
            self.goback(request, 'Choose only one target room: Existing room or New room.')
            return
        elif newroomcls and newroomcls in rooms.classes():
            cls = getattr(rooms, newroomcls)
            newroomname = args['newroomname']
            if newroomname:
                newroom = cls(newroomname)
            else:
                newroom = cls()
            dest = newroom
            print 'NR', dest, dest.name

        if xname and xclass in exits.classes():
            xcls = getattr(exits, xclass)
            if bxname and bxclass in exits.classes():
                bxcls = getattr(exits, xclass)
                bx = bxcls(bxname, room=dest)
                x = xcls(xname, room=room, destination=dest, return_name=bxname)
            else:
                x = xcls(xname, room=room, destination=dest)
            tzid = x.tzid
            editpage = '/edit/%s' % roomid
            request.redirect(editpage)
        else:
            self.goback(request, 'Give a name for the exit.')
Exemplo n.º 3
0
    def render_process(self, ctx, data):
        request = ctx.locate(inevow.IRequest)

        roomname = ctx.arg('roomname')
        roomclass = ctx.arg('roomclass')

        if roomname and roomclass in rooms.classes():
            cls = getattr(rooms, roomclass)
            newroom = cls(roomname)
            tzid = newroom.tzid
            editpage = '/edit/%s' % tzid
            request.redirect(editpage)
        else:
            self.goback(request, 'Give a name for the room.')
Exemplo n.º 4
0
    def render_addroomform(self, ctx, data):
        action = '/rooms/add/'
        lines = [T.h2['Add Room']]
        roomclasses = rooms.classes()
        roomclasses.sort()
        choices = [(cls, cls) for cls in roomclasses]
        roomsinfo = dict(name='roomclass',
                            choices=choices,
                            selected='Room')
        row = T.tr[T.td[self.render_form_select(roomsinfo)],
                    T.td[T.input(name='roomname')],
                    T.td[T.input(type='submit', value=' Add ')]]
        tbl = T.table(_class="center")[row]
        lines.append(tbl)
        form = T.form(action=action, method='POST')[lines]

        return T.div(_class='addroom')[form]
Exemplo n.º 5
0
def cmd_list(s, r):
    '''list |players|items|rooms|mobs|exits|

    List all objects of the given type.

    '''

    listing = r['type']

    if listing == 'players':
        objs = players.ls()
        classes = []
    elif listing == 'items':
        objs = items.ls()
        classes = items.classes()
    elif listing == 'rooms':
        objs = rooms.ls()
        classes = rooms.classes()
    elif listing == 'mobs':
        objs = mobs.ls()
        classes = mobs.classes()
    elif listing == 'exits':
        objs = exits.ls()
        classes = exits.classes()

    if objs:
        s.message('Existing objects:')
        objs.sort(key=operator.attrgetter('tzid'))
        msgs = []
        for obj in objs:
            tzid = '(%s)' % obj.tzid
            msgs.append('%s %s' % (tzid.rjust(4, ' '), obj))
        s.mlmessage(msgs, indent=4)
    else:
        s.message('No', listing, 'yet.')

    if classes:
        classes = list(classes)
        classes.sort()
        if objs:
            s.message()
        s.message('Cloneable:')
        s.columns_v(classes, color=colors.white)
Exemplo n.º 6
0
def _clone_room(s, objname, objtzid, newname=''):
    # next, try to clone a room
    # first look at existing rooms
    orig = rooms.getname(objname) or \
            rooms.get(objtzid)

    # if it is not there, it might be a Room class
    if orig is None:
        if objname in rooms.classes():
            cls = getattr(rooms, objname)
            obj = cls()
        else:
            obj = None
    else:
        obj = copy.copy(orig)

    if obj:
        if newname:
            obj.name = newname
        s.message(obj, 'created.')
        return obj
Exemplo n.º 7
0
    def render_process(self, ctx, data):
        request = ctx.locate(inevow.IRequest)
        args = normalize_args(request.args)

        roomid = int(args['roomid'])
        room = tzindex.get(roomid)

        xname = args['xname']
        xclass = args['xclass']

        bxname = args['bxname']
        bxclass = args['bxclass']

        destid = args['dest']
        if destid != 'None':
            destid = int(destid)
            dest = tzindex.get(destid)
        else:
            dest = None

        newroomcls = args['newroom']
        newroomname = args['newroomname']
        if newroomcls == 'None' and newroomname:
            newroomcls = 'Room'
        elif newroomcls == 'None':
            newroomcls = None

        if dest is None and newroomcls is None:
            self.goback(request,
                        'Choose existing room, or room type to clone.')
            return
        elif dest is not None and newroomcls is not None:
            self.goback(
                request,
                'Choose only one target room: Existing room or New room.')
            return
        elif newroomcls and newroomcls in rooms.classes():
            cls = getattr(rooms, newroomcls)
            newroomname = args['newroomname']
            if newroomname:
                newroom = cls(newroomname)
            else:
                newroom = cls()
            dest = newroom
            print 'NR', dest, dest.name

        if xname and xclass in exits.classes():
            xcls = getattr(exits, xclass)
            if bxname and bxclass in exits.classes():
                bxcls = getattr(exits, xclass)
                bx = bxcls(bxname, room=dest)
                x = xcls(xname,
                         room=room,
                         destination=dest,
                         return_name=bxname)
            else:
                x = xcls(xname, room=room, destination=dest)
            tzid = x.tzid
            editpage = '/edit/%s' % roomid
            request.redirect(editpage)
        else:
            self.goback(request, 'Give a name for the exit.')