diff options
author | Justin Lewis <jtl1728@rit.edu> | 2010-01-26 19:15:25 (GMT) |
---|---|---|
committer | Justin Lewis <jtl1728@rit.edu> | 2010-01-26 19:15:25 (GMT) |
commit | a54a8365f3d2a867563bf4cd350874861678ebd3 (patch) | |
tree | 3292724c47b4b3696a28382c5b5669ed58693c1b /FortuneMaker.activity | |
parent | c84c455efd3d14d0d6d00997303c26bdbafe3dae (diff) |
Improved dungeon grid gui representation.
Diffstat (limited to 'FortuneMaker.activity')
-rw-r--r-- | FortuneMaker.activity/FortuneMaker.py | 6 | ||||
-rw-r--r-- | FortuneMaker.activity/Room.py | 62 | ||||
-rw-r--r-- | FortuneMaker.activity/constants.py | 9 |
3 files changed, 67 insertions, 10 deletions
diff --git a/FortuneMaker.activity/FortuneMaker.py b/FortuneMaker.activity/FortuneMaker.py index 44fd046..1528dbb 100644 --- a/FortuneMaker.activity/FortuneMaker.py +++ b/FortuneMaker.activity/FortuneMaker.py @@ -356,7 +356,8 @@ class FortuneMaker(Activity): box.pack_start( row, False ) for room in row_array: room_gui = room.render_room() - room_gui.connect('clicked', self.add_prop_to_room, room) + room_gui.connect('button-press-event', self.add_prop_to_room, room) + #room_gui.connect('clicked', self.add_prop_to_room, room) row.pack_start( room_gui, False ) if self._pane2: self.edit_pane.remove( self._pane2 ) @@ -621,7 +622,8 @@ class FortuneMaker(Activity): self.active_room = room self.view_room() - def add_prop_to_room(self, widget, room): + #def add_prop_to_room(self, widget, room): + def add_prop_to_room(self, widget, event, room): self.active_room = room self.enable_room_icons(True, True) for but in self.action_but_group: diff --git a/FortuneMaker.activity/Room.py b/FortuneMaker.activity/Room.py index 07ad1c8..e09be8f 100644 --- a/FortuneMaker.activity/Room.py +++ b/FortuneMaker.activity/Room.py @@ -1,6 +1,6 @@ from constants import ( DOOR_ORDER, DOOR_INDEX, DOOR_FLAGS, SPEC_FLAGS, - ENEM_INDEX, ITEM_INDEX, ITEM_FLAGS + ENEM_INDEX, ITEM_INDEX, ITEM_FLAGS, DOOR_COLOR ) import gtk @@ -58,8 +58,13 @@ class Room: def remove_door(self, door): if door in DOOR_INDEX: - #TODO Check if should change has_door self.doors[door] = ['0', '0'] + self.has_doors = False + for door in self.doors: + if self.doors[door][1] != "0": + self.has_doors = True + break + return True else: print "INVALID DOOR" @@ -146,10 +151,51 @@ class Room: return self.has_doors or self.has_enemy or self.has_item def render_room(self): - if self.not_empty_room(): - but = gtk.Button("(%d, %d)" %(self._x, self._y)) - else: - but = gtk.Button("") + def expose_handler(widget, event): + w, h = widget.window.get_size() + xgc = widget.window.new_gc() + + door_thick = 5 + third_w = w / 3 + third_h = h / 3 + #xgc.set_rgb_fg_color(gtk.gdk.color_parse("yellow")) + #widget.window.draw_arc(xgc, True, 200, 100, 200, 200, 0, 360*64) + + # Fill in if room + if self.not_empty_room(): + xgc.set_rgb_fg_color(gtk.gdk.color_parse("#6666CC")) + widget.window.draw_rectangle(xgc, True, 1, 1, w-2, h-2) + + + # Draw Border + xgc.set_rgb_fg_color(gtk.gdk.color_parse("#000000")) + widget.window.draw_rectangle(xgc, False, 1, 1, w-2, h-2) + + if self.doors['N'][1] != '0': + xgc.set_rgb_fg_color(gtk.gdk.color_parse(DOOR_COLOR[self.doors['N'][1]])) + widget.window.draw_rectangle(xgc, True, third_w, 1, third_w, door_thick) + + if self.doors['S'][1] != '0': + xgc.set_rgb_fg_color(gtk.gdk.color_parse(DOOR_COLOR[self.doors['S'][1]])) + widget.window.draw_rectangle(xgc, True, third_w, h-door_thick, third_w, door_thick) + + if self.doors['E'][1] != '0': + xgc.set_rgb_fg_color(gtk.gdk.color_parse(DOOR_COLOR[self.doors['E'][1]])) + widget.window.draw_rectangle(xgc, True, w-door_thick, third_h, door_thick, third_h) + + if self.doors['W'][1] != '0': + xgc.set_rgb_fg_color(gtk.gdk.color_parse(DOOR_COLOR[self.doors['W'][1]])) + widget.window.draw_rectangle(xgc, True, 1, third_h, door_thick, third_h) + + + #widget.window.draw_arc(xgc, True, 240, 145, 30, 40, 0, 360*64) + #widget.window.draw_arc(xgc, True, 330, 145, 30, 40, 0, 360*64) + #xgc.line_width = 6 + #widget.window.draw_arc(xgc, False, 240, 150, 120, 110, 200*64, 140*64) + + drawing_area = gtk.DrawingArea() + drawing_area.set_size_request(100, 100) + drawing_area.connect("expose-event", expose_handler) + drawing_area.set_events(gtk.gdk.BUTTON_PRESS_MASK) - but.set_size_request(100, 100) - return but + return drawing_area diff --git a/FortuneMaker.activity/constants.py b/FortuneMaker.activity/constants.py index c96d0f8..ad9b676 100644 --- a/FortuneMaker.activity/constants.py +++ b/FortuneMaker.activity/constants.py @@ -17,6 +17,15 @@ DOOR_FLAGS = { 'x':_('Exit') } +DOOR_COLOR = { + 'u':"#000000", + 'l':"#666666", + 'p':"#006600", + 'b':"#008800", + 'e':"#ff0000", + 'x':"#ffff00" +} + SPEC_FLAGS = { '0':_('None'), 'M':_('Merchant'), |