def __init__(self, game): """init and position the wall""" # we use only white dragons for building the wall. We could actually # use any tile because the face is never shown anyway. game.wall = self Wall.__init__(self, game) self.__square = Board(1, 1, Tileset.activeTileset()) self.__square.setZValue(ZValues.marker) sideLength = len(self.tiles) // 8 self.__sides = [UIWallSide( Tileset.activeTileset(), boardRotation, sideLength) for boardRotation in (0, 270, 180, 90)] for side in self.__sides: side.setParentItem(self.__square) side.lightSource = self.lightSource side.windTile = PlayerWind( East, Internal.scene.windTileset, parent=side) side.windTile.hide() side.nameLabel = QGraphicsSimpleTextItem('', side) side.message = YellowText(side) side.message.setZValue(ZValues.popup) side.message.setVisible(False) side.message.setPos(side.center()) self.__sides[0].setPos(yWidth=sideLength) self.__sides[3].setPos(xHeight=1) self.__sides[2].setPos(xHeight=1, xWidth=sideLength, yHeight=1) self.__sides[1].setPos(xWidth=sideLength, yWidth=sideLength, yHeight=1) self.__findOptimalFontHeight() Internal.scene.addItem(self.__square) Internal.Preferences.addWatch('showShadows', self.showShadowsChanged)
def applySettings(self): """apply preferences""" self.mainWindow.actionAngle.setEnabled( bool(self.game) and Internal.Preferences.showShadows) with MoveImmediate(): for item in self.nonTiles(): item.tileset = Tileset.activeTileset()
def __findOptimalFontHeight(self): """for names on walls""" tileHeight = Tileset.activeTileset().faceSize.height() font = self.__sides[0].nameLabel.font() size = 80 font.setPointSize(size) while QFontMetrics(font).ascent() > tileHeight: size -= 1 font.setPointSize(size) for side in self.__sides: side.nameLabel.setFont(font)
def __init__(self, player): assert player self._player = weakref.ref(player) self.exposedMeldDistance = 0.15 self.concealedMeldDistance = 0.0 self.lowerY = 1.0 Board.__init__(self, 15.6, 2.0, Tileset.activeTileset()) self.isHandBoard = True self.tileDragEnabled = False self.setParentItem(player.front) self.setPosition() self.setAcceptDrops(True) Internal.Preferences.addWatch( 'rearrangeMelds', self.rearrangeMeldsChanged) Internal.Preferences.addWatch( 'showShadows', self.showShadowsChanged)
def __init__(self, width, height): Board.__init__(self, width, height, Tileset.activeTileset()) self.setAcceptDrops(True)