import piece from board import EMPTY, positions class NullView(object): def __init__(self, model): self.model = model def __getattr__(self, name): return getattr(self.model, name) class PlayerView(NullView): def __init__(self, model, who_am_i): NullView.__init__(self, model) self.who_am_i = who_am_i self.cachedMask = None def pieceAt(self, position): if not self.cachedMask: # print "Filling cache for", self.who_am_i self.cachedMask = self.getMask() if not position in self.cachedMask: return piece.Fog() return self.model.pieceAt(position) def getMask(self): my_side = piece.MoveablePiece(self, self.who_am_i) allowed_positions = {} for pos in positions(): cur_piece = self.model.pieceAt(pos) if my_side.isMyPiece(cur_piece): allowed_positions[pos] = None for allowable_position in cur_piece.moves(): allowed_positions[allowable_position] = None return allowed_positions