Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWalter Bender <walter.bender@gmail.com>2012-05-11 17:54:57 (GMT)
committer Walter Bender <walter.bender@gmail.com>2012-05-11 17:54:57 (GMT)
commit60d9f0cf8142fccaddd1aa4e6766087e902cc324 (patch)
tree3e9c1dab736ff00f60686f96ced97bdc47d1aedf
parent7336f7fad5486183d69d222094b23d08091c9554 (diff)
cache image surfaces
-rw-r--r--game.py17
1 files changed, 16 insertions, 1 deletions
diff --git a/game.py b/game.py
index 1a7419e..f188b73 100644
--- a/game.py
+++ b/game.py
@@ -203,6 +203,14 @@ class Game():
self._timeout_id = gobject.timeout_add(
1000, self._load_image_from_list)
+ def _find_repeat(self):
+ ''' Find an image that repeats '''
+ for i in range(self._level):
+ for j in range(self._level - i - 1):
+ if self._dots[i].type == self._dots[j].type:
+ return i
+ return None
+
def _new_game(self, restore=False):
''' Load game images and then ask a question... '''
if self._game in [0, 1]:
@@ -228,7 +236,10 @@ class Game():
image=self._dots[n].type))
self._dots[self._repeat].type = self._dots[n].type
else: # Find repeated image, as that is the answer
- self._repeat = 0 # TODO: fix
+ self._repeat = self._find_repeat()
+ if self._repeat is None:
+ _logger.debug('could not find repeat')
+ self._repeat = 0
if self.we_are_sharing:
_logger.debug('sending a new game')
@@ -413,6 +424,8 @@ class Game():
''' generate a dot of a color color '''
self._dot_cache = {}
if image is not None:
+ if image in self._dot_cache:
+ return self._dot_cache[image]
pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(
os.path.join(self._path, self._PATHS[image]),
self._svg_width, self._svg_height)
@@ -439,6 +452,8 @@ class Game():
context.fill()
if image is None:
self._dot_cache[color] = surface
+ else:
+ self._dot_cache[image] = surface
return surface
def _line(self, vertical=True):