diff options
author | Justin Lewis <jtl1728@rit.edu> | 2010-01-15 22:50:09 (GMT) |
---|---|---|
committer | Justin Lewis <jtl1728@rit.edu> | 2010-01-15 22:50:09 (GMT) |
commit | 8620c0c5e5834225ca12e52b2e8aa77966215643 (patch) | |
tree | 5d60adbe219b17ef1f012fd5d91c51f0cf4d35d6 /FortuneMaker.activity | |
parent | 07bedb5d95f3deaa62a45562f8277550d2cf7024 (diff) |
Basic prototype of level maker
Diffstat (limited to 'FortuneMaker.activity')
-rw-r--r-- | FortuneMaker.activity/Dungeon.py | 9 | ||||
-rw-r--r-- | FortuneMaker.activity/FortuneMaker.py | 50 |
2 files changed, 59 insertions, 0 deletions
diff --git a/FortuneMaker.activity/Dungeon.py b/FortuneMaker.activity/Dungeon.py index c11ddd9..f8ad618 100644 --- a/FortuneMaker.activity/Dungeon.py +++ b/FortuneMaker.activity/Dungeon.py @@ -4,6 +4,8 @@ class Dungeon: def __init__( self, name, theme, width, height ): self.name = name self.theme = theme + self.width = width + self.height = height self.roomlist = [] for y in range(0, width): @@ -17,3 +19,10 @@ class Dungeon: def update_room(self, room): self.roomlist[room._y][room._x] = room + + def export(self): + text = str(self.width) + "x" + str(self.height) + "\n" + for row in self.roomlist: + for room in row: + text += room.room_to_string() + "\n" + return text diff --git a/FortuneMaker.activity/FortuneMaker.py b/FortuneMaker.activity/FortuneMaker.py index ad67198..fbb426c 100644 --- a/FortuneMaker.activity/FortuneMaker.py +++ b/FortuneMaker.activity/FortuneMaker.py @@ -41,6 +41,15 @@ class FortuneMaker(Activity): self.view_dungeon_grid() elif view == 'room': self.view_room() + elif view == 'export': + self.export_view() + + def export_view(self): + textbuffer = gtk.Label() + textbuffer.set_text(self.dungeon.export()) + + self.set_gui_view( textbuffer, True ) + def set_gui_view(self, view, buttons=False): if buttons: @@ -69,6 +78,11 @@ class FortuneMaker(Activity): room.connect( 'clicked', self.view_change_cb, 'room') button_tabs.pack_start( room, False ) + dump = gtk.Button( _("Export") ) + dump.set_alignment(0,.5) + dump.connect( 'clicked', self.view_change_cb, 'export' ) + button_tabs.pack_start( dump, False ) + return button_tabs def set_create_dungeon_settings(self): @@ -293,8 +307,44 @@ class FortuneMaker(Activity): frame.add( holder ) room_holder.pack_start( frame, False ) + ## Save Button + ############## + save = gtk.Button(_('Save')) + save.connect('clicked', self.save_room, {'doors':doors,'flag':flag_sel,'enemy':enem,'items':item_arr}) + + room_holder.pack_start( save, False ) + self.set_gui_view( room_holder, True ) + def save_room(self, widgit, data): + + def find_key(dic, val): + """return the key of dictionary dic given the value""" + try: + return [k for k, v in dic.iteritems() if v == val][0] + except: + return False + + for key in data['doors']: + value = find_key( DOOR_FLAGS, data['doors'][key].get_active_text()) + if value: + self.active_room.add_door( key, value ) + else: + self.active_room.remove_door( key ) + + self.active_room.set_room_flag( find_key(SPEC_FLAGS, data['flag'].get_active_text() ) ) + + i = 0 + for enemy_select in data['enemy']: + en_id= find_key( ENEM_INDEX, enemy_select.get_active_text() ) + self.active_room.set_enemy( i, en_id ) + i = i + 1 + + #TODO ITEMS + + self.dungeon.update_room( self.active_room ) + self.view_dungeon_grid() + def set_active_room(self, widgit, room): self.active_room = room self.view_room() |