Factor out flash light into utils.
authorSimon Cross <hodgestar@gmail.com>
Sat, 17 May 2014 22:01:27 +0000 (00:01 +0200)
committerSimon Cross <hodgestar@gmail.com>
Sat, 17 May 2014 22:01:27 +0000 (00:01 +0200)
naja/utils.py
naja/widgets/info_area.py

index d5d17cc6067276a8649369c625893872388760fe..7ad4f582c2188a9c6fdcc914fa535eddd70fdc3f 100644 (file)
@@ -37,3 +37,18 @@ def warp_to_game_state(game_state):
     from naja.scenes.game import GameScene
     LoadGameEvent.post(game_state)
     SceneChangeEvent.post(GameScene)
+
+
+class Flashlight(object):
+    def __init__(self, rate):
+        self.rate = rate
+        self.ticks = 0
+        self.on = False
+
+    def tick(self):
+        self.ticks += 1
+        if self.ticks >= self.rate:
+            self.on = not self.on
+            self.ticks = 0
+            return True
+        return False
index 1ff6bbbd92168e52ec12c4a489cf6f54638f95a7..fd470387e6b994a2d15eace94df7df8c22892274 100644 (file)
@@ -12,11 +12,11 @@ from naja.events import finish_event
 from naja.resources import resources
 from naja.resources.mutators import EIGHT_BIT, blender
 from naja.sound import sound
-from naja.utils import bit_glyphs
+from naja.utils import bit_glyphs, Flashlight
 
 from naja.widgets.base import Widget
 from naja.widgets.tile import BIT_MAP
-from naja.widgets.text import TextBoxWidget, TextWidget
+from naja.widgets.text import TextBoxWidget
 from naja import constants
 
 
@@ -44,8 +44,7 @@ class InfoAreaWidget(Widget):
         self.chosen = None
         self.card_position = state.player.position
         self.set_position(state.player.position)
-        self.flash_count = 0
-        self.flash_light = True
+        self.flash_light = Flashlight(constants.FPS // 2)
 
     def prepare(self):
         if self.state.gameboard.player_mode == ACT:
@@ -131,7 +130,7 @@ class InfoAreaWidget(Widget):
 
         border_colour = None
         if choice == self.chosen:
-            if self.flash_light:
+            if self.flash_light.on:
                 border_colour = (PALETTE.GREEN if action_viable else
                                  PALETTE.ORANGE)
             else:
@@ -188,10 +187,7 @@ class InfoAreaWidget(Widget):
             self.chosen = None
 
     def draw(self, surface):
-        self.flash_count += 1
-        if self.flash_count >= (constants.FPS // 2):
-            self.flash_light = not self.flash_light
-            self.flash_count = 0
+        if self.flash_light.tick():
             self.prepare()
         surface.blit(self.surface, self.pos)