Allow selecting non-viable actions with arrow keys (tab still takes one to the next...
authorSimon Cross <hodgestar@gmail.com>
Thu, 15 May 2014 20:06:40 +0000 (22:06 +0200)
committerSimon Cross <hodgestar@gmail.com>
Thu, 15 May 2014 20:06:40 +0000 (22:06 +0200)
naja/widgets/info_area.py

index 6b4e78917e5d01e91f13cf45d89a0d055b1cb5e4..934bbc8fc5457dbf3d81b0e920fe9cd23d541c51 100644 (file)
@@ -113,7 +113,7 @@ class InfoAreaWidget(Widget):
     def draw(self, surface):
         surface.blit(self.surface, self.pos)
 
-    def next_viable_action(self, step=1):
+    def next_action(self, viable_only=False, step=1):
         num_actions = len(self.card.actions)
         if num_actions == 0:
             return
@@ -123,12 +123,12 @@ class InfoAreaWidget(Widget):
             # loop through each action at most once.
             chosen = (chosen + step) % num_actions
             action = self.card.actions[chosen]
-            if action.check_available(player):
+            if not viable_only or action.check_available(player):
                 sound.play_sound('change_action.ogg', volume=0.05)
                 self.chosen = chosen
 
-    def prev_viable_action(self):
-        return self.next_viable_action(step=-1)
+    def prev_action(self, viable_only=False):
+        return self.next_action(viable_only=viable_only, step=-1)
 
     def try_perform_action(self):
         player = self.state.player
@@ -149,12 +149,12 @@ class InfoAreaWidget(Widget):
                 self.try_perform_action()
                 return finish_event()
             if ev.key in KEYS.UP:
-                self.next_viable_action()
+                self.next_action()
                 return finish_event()
             if ev.key in KEYS.DOWN:
-                self.prev_viable_action()
+                self.prev_action()
                 return finish_event()
             if ev.key in KEYS.SWITCH:
-                self.next_viable_action()
+                self.next_action(viable_only=True)
                 return finish_event()
         return super(InfoAreaWidget, self).handle_event(ev)