Example #1
0
class ChessSimulatorManager:

    def __init__(self):
        self.board = ChessBoard()
        self.whiteSimulatorStream = None
        self.blackSimulatorStream = None
        self.chessGraphics = ChessGraphicsManager()
        print("SimulatorManager loaded, no simulator streams locked")

    def tick(self):
        pass

    def run(self):
        while True:
            for event in pygame.event.get():
                if(event.type == pygame.QUIT):
                    sys.exit(0)
                elif(event.type == pygame.MOUSEBUTTONDOWN):
                    self.toggleClickedPos(event.pos)
                else:
                    pass
            self.chessGraphics.render(self.board)

    def toggleClickedPos(self, pos):
        position = ChessPosition(int(pos[0]/40), 7-int(pos[1]/40))
        shouldSet = False
        if(self.chessGraphics.selectedPosition is None):
            self.chessGraphics.selectedPosition = position
        else:
            if(self.chessGraphics.selectedPosition.isEqualTo(position)):
                self.chessGraphics.selectedPosition = None
            else:
                piece = self.board.pieceAt(self.chessGraphics.selectedPosition)
                occupant = self.board.pieceAt(position)
                if(piece and occupant and occupant.color == piece.color):
                    self.chessGraphics.selectedPosition = position
                elif(piece is not None and piece.color == self.board.activeColor):
                    move = ChessMove(self.chessGraphics.selectedPosition, position, self.board)
                    self.board.processMove(move)
                    self.chessGraphics.selectedPosition = None
                else:
                    self.chessGraphics.selectedPosition = None

    def lockSimulatorStream(self, simulatorStream, color):
        if(color == COLOR.WHITE):
            self.whiteSimulatorStream = simulatorStream
            print("White simulator stream locked")
        else:
            self.blackSimulatorStream = simulatorStream
            print("Black simulator stream locked")
        if(self.bothSimulatorStreamsLocked()):
            print("Both simulator streams are locked, SimulatorManager primed")

    def bothSimulatorStreamsLocked(self):
        if(self.whiteSimulatorStream and self.blackSimulatorStream):
            return True
        return False