diff options
author | Justin Lewis <jtl1728@rit.edu> | 2010-02-01 21:25:59 (GMT) |
---|---|---|
committer | Justin Lewis <jtl1728@rit.edu> | 2010-02-01 21:25:59 (GMT) |
commit | 3f7b50e56fc5b1259e03ca898b0a8df0ee59971c (patch) | |
tree | bc3058ee51e6e74195028326637541ec441d33bb /FortuneMaker.activity | |
parent | 4c7b347ba6a5fcf1403ee33abd9136a0d44ec8a0 (diff) |
Added door check to ensure only one entrance and exit.
Diffstat (limited to 'FortuneMaker.activity')
-rw-r--r-- | FortuneMaker.activity/Dungeon.py | 11 | ||||
-rw-r--r-- | FortuneMaker.activity/FortuneMaker.py | 25 |
2 files changed, 24 insertions, 12 deletions
diff --git a/FortuneMaker.activity/Dungeon.py b/FortuneMaker.activity/Dungeon.py index ce72473..19a0d63 100644 --- a/FortuneMaker.activity/Dungeon.py +++ b/FortuneMaker.activity/Dungeon.py @@ -28,6 +28,17 @@ class Dungeon: def get_room_array(self): return self.roomlist + def has_door_type(self, key): + for room_row in self.roomlist: + for room in room_row: + for door_key in room.doors: + if room.doors[door_key][1] == key: + return True + return False + + def valid_dungeon(self): + return self.has_door_type( 'e' ) and self.has_door_type( 'x' ) + def get_adj_room( self, room, dir ): if dir == "N": next_x = room._x diff --git a/FortuneMaker.activity/FortuneMaker.py b/FortuneMaker.activity/FortuneMaker.py index b3216ef..0fecaec 100644 --- a/FortuneMaker.activity/FortuneMaker.py +++ b/FortuneMaker.activity/FortuneMaker.py @@ -227,17 +227,15 @@ class FortuneMaker(Activity): self.set_gui_view( room_center ) def export_view(self): - data = self.dungeon.export() + if self.dungeon.valid_dungeon(): + data = self.dungeon.export() + filename = self.dungeon.name - textbuffer = gtk.Label() - filename = self.dungeon.name - - self._write_textfile( filename, data) - - textbuffer.set_text( "File Saved to %s"%(filename) ) - - self.set_gui_view( textbuffer ) + self._write_textfile( filename, data ) + self._alert( _( "Dungeon Exported to Journal"), filename ) + else: + self._alert( _( "Export Failed"), _("Invalid dungeon configuration") ) #### Method: _write_textfile, which creates a simple text file @@ -500,7 +498,7 @@ class FortuneMaker(Activity): self.view_dungeon_grid() def _draw_room_button_grid(self): - # Setup Room Pannel + # Setup Room Panel room_array = self.dungeon.get_room_array() box = gtk.VBox() for row_array in room_array: @@ -520,7 +518,7 @@ class FortuneMaker(Activity): self.edit_pane = gtk.HPaned() self._pane2 = None - # Setup Button Pannel + # Setup Button Panel listbox = gtk.VBox() lbl = gtk.RadioButton(None,_('Remove Enemy')) @@ -748,7 +746,10 @@ class FortuneMaker(Activity): else: self._alert( _("Door Not Added"), _("This door can not be placed at edge of dungeon")) else: - self.active_room.add_door( door_pos, but.track_flag ) + if not self.dungeon.has_door_type( but.track_flag ): + self.active_room.add_door( door_pos, but.track_flag ) + else: + self._alert( _("Door Not Added"), _("The dungeon can only have one %s") % DOOR_FLAGS[but.track_flag] ) elif but.track_mode == 'SPEC_FLAG': |