From: Simon Cross Date: Sat, 17 May 2014 17:48:02 +0000 (+0200) Subject: GenericBits action. X-Git-Tag: 0.1~55 X-Git-Url: https://git.ctpug.org.za/?a=commitdiff_plain;h=64cf509d389faaecca0bdb494aec1e1d712558b2;p=naja.git GenericBits action. --- 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,)