Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/game.py
diff options
context:
space:
mode:
authorWalter Bender <walter.bender@gmail.com>2012-04-11 03:48:51 (GMT)
committer Walter Bender <walter.bender@gmail.com>2012-04-11 03:48:51 (GMT)
commit58f9fe0d1ff77356256ad3f69aee5c3ab9c0adf5 (patch)
tree9329870a47ff674c1fd96d1ab73e889c72e6bd57 /game.py
parentcc57cb35d80f8ded38ba04ccceae1682a499c0ae (diff)
save all scores and enable copy to clipboard
Diffstat (limited to 'game.py')
-rw-r--r--game.py49
1 files changed, 46 insertions, 3 deletions
diff --git a/game.py b/game.py
index 28f31b0..39bac12 100644
--- a/game.py
+++ b/game.py
@@ -87,11 +87,13 @@ class Game():
parent.show_all()
self.canvas.set_flags(gtk.CAN_FOCUS)
- self.canvas.add_events(gtk.gdk.BUTTON_PRESS_MASK)
- self.canvas.add_events(gtk.gdk.BUTTON_RELEASE_MASK)
self.canvas.connect('expose-event', self._expose_cb)
+ self.canvas.add_events(gtk.gdk.BUTTON_PRESS_MASK)
self.canvas.connect('button-press-event', self._button_press_cb)
+ self.canvas.add_events(gtk.gdk.BUTTON_RELEASE_MASK)
self.canvas.connect('button-release-event', self._button_release_cb)
+ self.canvas.add_events(gtk.gdk.POINTER_MOTION_MASK)
+ self.canvas.connect("motion-notify-event", self._mouse_move_cb)
self.canvas.connect('key_press_event', self._keypress_cb)
self.width = gtk.gdk.screen_width()
self.height = gtk.gdk.screen_height() - GRID_CELL_SIZE
@@ -102,10 +104,14 @@ class Game():
None]
self.sprites = Sprites(self.canvas)
self.selected = []
+ self.press = None
self.match_display_area = []
self.smiley = []
self.clicked = [None, None, None]
+ self.dragged_init_xy = [[None, None], [None, None], [None, None]]
+ self.dragpos = [0, 0]
self.low_score = [-1, -1, -1]
+ self.all_scores = []
self.robot = False
self.numberC = 0
self.numberO = 0
@@ -291,15 +297,49 @@ class Game():
def _button_press_cb(self, win, event):
''' Just grab focus on press. '''
win.grab_focus()
+ x, y = map(int, event.get_coords())
+ self.statpos = (x, y)
+ self.dragpos = [x, y]
+ spr = self.sprites.find_sprite((x, y))
+ if spr is None:
+ return True
+ if self.deck.spr_to_card(spr) is not None:
+ self.press = spr # Make sure sprite is a card.
+ else:
+ self.press = None
return True
+ def _mouse_move_cb(self, win, event):
+ """ Drag a card with the mouse. """
+ if self.press is None:
+ self.dragpos = [0, 0]
+ return True
+ win.grab_focus()
+ x, y = map(int, event.get_coords())
+ dx = x - self.dragpos[0]
+ dy = y - self.dragpos[1]
+ self.press.move_relative((dx, dy))
+ self.dragpos = [x, y]
+
def _button_release_cb(self, win, event):
''' Select the sprite under the mouse and process the selection. '''
win.grab_focus()
x, y = map(int, event.get_coords())
- spr = self.sprites.find_sprite((x, y))
+ spr = self.sprites.find_sprite((x, y), reverse=True)
if spr is None:
+ self.press = None
return True
+
+ if spr in self.match_display_area:
+ i = self.match_display_area.index(spr)
+ # Is it an empty slot?
+ if self.clicked[i] is None:
+ x, y = self.match_display_area[i].get_xy()
+ self.press.move((x, y))
+ self.clicked[i] = self.press
+ else:
+ self.press.move((self.startpos))
+
if self._sharing():
if self.deck.spr_to_card(spr) is not None:
self.activity._send_event(
@@ -307,6 +347,7 @@ class Game():
i = self._selected(spr)
if i is not -1:
self.activity._send_event('S:' + str(i))
+ self.press = None
return self._process_selection(spr)
def _selected(self, spr):
@@ -429,6 +470,8 @@ class Game():
self.set_label('status', '%s (%d:%02d)' %
(_('New record'), int(self.total_time / 60),
int(self.total_time % 60)))
+ self.all_scores.append(self.total_time)
+ _logger.debug(self.all_scores)
if not self.sugar:
self.activity.save_score()
return True