From 64cf509d389faaecca0bdb494aec1e1d712558b2 Mon Sep 17 00:00:00 2001 From: Simon Cross Date: Sat, 17 May 2014 19:48:02 +0200 Subject: [PATCH] GenericBits action. --- naja/actions.py | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/naja/actions.py b/naja/actions.py index 45698ef..2407d82 100644 --- a/naja/actions.py +++ b/naja/actions.py @@ -1,6 +1,6 @@ from naja.constants import ACTION_GLYPHS, BITS, CHESS_PIECES from naja.sound import sound -from naja.utils import bit_glyphs, move_glyph +from naja.utils import bit_glyphs, move_glyph, parse_bits class LocationAction(object): @@ -114,6 +114,31 @@ class ToggleBits(LocationAction): board.player.bits.toggle_bits(location.bitwise_operand) +class GenericBits(LocationAction): + GLYPHS = (ACTION_GLYPHS.SET_BITS, ACTION_GLYPHS.CLEAR_BITS) + + def __init__(self, *args, **kw): + super(GenericBits, self).__init__(*args, **kw) + self.set_bits = parse_bits(self.data.get('set', [])) + self.clear_bits = parse_bits(self.data.get('clear', [])) + self.toggle_bits = parse_bits(self.data.get('toggle', [])) + + def perform_action(self, board, location): + bits = board.player.bits + bits.set_bits(self.set_bits) + bits.toggle_bits(self.toggle_bits) + bits.clear_bits(self.clear_bits) + + def get_text(self, location=None): + parts = [] + for template, bits in [ + ('Set %s.', self.set_bits), ('Clear %s.', self.clear_bits), + ('Toggle %s', self.toggle_bits)]: + if bits: + parts.append(template % (bit_glyphs(bits))) + return " ".join(parts) + + class ShiftBits(LocationAction): TEXT = "Barrel-shift player bits %(shift_glyph)s %(shift)s." GLYPHS = (ACTION_GLYPHS.SHIFT_LEFT,) -- 2.34.1