class AdjacencyClueView(QFrame): # Prolly could use a better name """ Represents the Adjacency Clue View """ TRANSPARENCY = 100 def __init__(self, adjacencyClue, fragilityClue, parent=None): """ Initialize the Adjacency Clue View """ QFrame.__init__(self, parent) self.adjacencyClue = adjacencyClue self.fragilityClue = fragilityClue self.resize(34, 32) self.setupClueLabel() def setupFont(self): """ Setup the Font """ self.font = QFont() self.font.setPointSize(15) def setupClueLabel(self): """ Setup the Clue Label """ self.setupFont() self.clueLabel = QLabel('', self) self.clueLabel.setFont(self.font) self.clueLabel.move(0, 0) def updateView(self): """ Update the View """ self.clueLabel.setText(self.getLabelText()) self.setColorBasedOnFragility() self.clueLabel.resize(34, self.clueLabel.contentsRect().height()) def getLabelText(self): """ Get the CLue Reading Text """ adjacentMines = self.adjacencyClue.getAdjacentMinesClue() if adjacentMines == 0: return '' else: return str(adjacentMines) def setColorBasedOnFragility(self): """ Set color of the clue based on adjacency to Fragile Mines """ color = "rgba({0}, {1}%)".format(self.getColor(), self.TRANSPARENCY) self.clueLabel.setStyleSheet("QLabel { color : %s }" % color) def getColor(self): """ Return color """ if self.fragilityClue.distance is None: return "0, 0, 0" elif self.fragilityClue.distance <= 1: if self.fragilityClue.count == 1: return "227, 68, 20" else: return "196, 0, 0" elif self.fragilityClue.distance > 1 and self.fragilityClue.distance < 4: return "244, 244, 0" elif self.fragilityClue.distance >= 4: return "0, 154, 0"
class AdjacencyClueView(QFrame): # Prolly could use a better name """ Represents the Adjacency Clue View """ TRANSPARENCY = 100 def __init__(self, adjacencyClue, fragilityClue, parent=None): """ Initialize the Adjacency Clue View """ QFrame.__init__(self, parent) self.adjacencyClue = adjacencyClue self.fragilityClue = fragilityClue self.resize(34, 32) self.setupClueLabel() def setupFont(self): """ Setup the Font """ self.font = QFont() self.font.setPointSize(15) def setupClueLabel(self): """ Setup the Clue Label """ self.setupFont() self.clueLabel = QLabel('', self) self.clueLabel.setFont(self.font) self.clueLabel.move(0, 0) def updateView(self): """ Update the View """ self.clueLabel.setText(self.getLabelText()) self.setColorBasedOnFragility() self.clueLabel.resize(34, self.clueLabel.contentsRect().height()) def getLabelText(self): """ Get the CLue Reading Text """ adjacentMines = self.adjacencyClue.getAdjacentMinesClue() if adjacentMines == 0: return '' else: return str(adjacentMines) def setColorBasedOnFragility(self): """ Set color of the clue based on adjacency to Fragile Mines """ color = "rgba({0}, {1}%)".format(self.getColor(), self.TRANSPARENCY) self.clueLabel.setStyleSheet("QLabel { color : %s }" % color) def getColor(self): """ Return color """ if self.fragilityClue.distance is None: return "0, 0, 0" elif self.fragilityClue.distance <= 1: if self.fragilityClue.count == 1: return "227, 68, 20" else: return "196, 0, 0" elif self.fragilityClue.distance > 1 and self.fragilityClue.distance < 4: return "244, 244, 0" elif self.fragilityClue.distance >= 4: return "0, 154, 0"
class GameStatusView(QFrame): """ It's the game status view """ def __init__(self, level, width, height, parent=None): """ """ QFrame.__init__(self, parent) self.level = level self.setup() self.updateView() self.color = QColor(200, 200, 200) self.setStyleSheet("QFrame { background-color: %s }" % self.color.name()) self.resize(width, height) def setup(self): """ Setup the View """ self.setupFont() self.setupPowerLabel() self.setupMovesLabel() self.setupRemainingDefensesLabels() def setupFont(self): """ Setup the Font """ self.font = QFont() self.font.setPointSize(14) def setupPowerLabel(self): """ Setup the Power Label """ self.powerLabel = QLabel("", self) self.powerLabel.move(32, 16) self.powerLabel.setFont(self.font) def setupMovesLabel(self): """ Setup the Moves Label """ self.movesLabel = QLabel("", self) self.movesLabel.move(32, 16 + 48) self.movesLabel.setFont(self.font) def setupRemainingDefensesLabels(self): """ Setup the Remaining Defenses Labels """ self.remainingDefensesLabels = {} labelNumber = 1 remainingDefenses = self.level.getRemainingDefenses() for defenseClass in remainingDefenses: label = QLabel("", self) label.move(32, 16 + 48 * (labelNumber + 1)) label.setFont(self.font) self.remainingDefensesLabels[defenseClass] = label labelNumber += 1 def updateView(self): """ Update the View """ self.updatePowerLabel() self.updateMovesLabel() self.updateRemainingDefensesLabels() def updatePowerLabel(self): """ Update the Power Label """ self.powerLabel.setText("Power: {0}".format( self.level.drone.powerRating.power)) def updateMovesLabel(self): """ Update the Moves Label """ self.movesLabel.setText("Moves: {0}".format( self.level.moveRating.moveCount)) self.movesLabel.resize(self.movesLabel.contentsRect().width(), self.movesLabel.contentsRect().height()) def updateRemainingDefensesLabels(self): """ Update the Remaining Mines Label """ remainingDefenses = self.level.getRemainingDefenses() for defenseClass in remainingDefenses: label = self.remainingDefensesLabels[defenseClass] label.setText("{0} Left: {1}".format( defenseClass.friendlyName, remainingDefenses[defenseClass]))
class GameStatusView(QFrame): """ It's the game status view """ def __init__(self, level, width, height, parent=None): """ """ QFrame.__init__(self, parent) self.level = level self.setup() self.updateView() self.color = QColor(200, 200, 200) self.setStyleSheet("QFrame { background-color: %s }" % self.color.name()) self.resize(width, height) def setup(self): """ Setup the View """ self.setupFont() self.setupPowerLabel() self.setupMovesLabel() self.setupRemainingDefensesLabels() def setupFont(self): """ Setup the Font """ self.font = QFont() self.font.setPointSize(14) def setupPowerLabel(self): """ Setup the Power Label """ self.powerLabel = QLabel("", self) self.powerLabel.move(32, 16) self.powerLabel.setFont(self.font) def setupMovesLabel(self): """ Setup the Moves Label """ self.movesLabel = QLabel("", self) self.movesLabel.move(32, 16+48) self.movesLabel.setFont(self.font) def setupRemainingDefensesLabels(self): """ Setup the Remaining Defenses Labels """ self.remainingDefensesLabels = {} labelNumber = 1 remainingDefenses = self.level.getRemainingDefenses() for defenseClass in remainingDefenses: label = QLabel("", self) label.move(32, 16+48*(labelNumber+1)) label.setFont(self.font) self.remainingDefensesLabels[defenseClass] = label labelNumber += 1 def updateView(self): """ Update the View """ self.updatePowerLabel() self.updateMovesLabel() self.updateRemainingDefensesLabels() def updatePowerLabel(self): """ Update the Power Label """ self.powerLabel.setText("Power: {0}".format(self.level.drone.powerRating.power)) def updateMovesLabel(self): """ Update the Moves Label """ self.movesLabel.setText("Moves: {0}".format(self.level.moveRating.moveCount)) self.movesLabel.resize(self.movesLabel.contentsRect().width(), self.movesLabel.contentsRect().height()) def updateRemainingDefensesLabels(self): """ Update the Remaining Mines Label """ remainingDefenses = self.level.getRemainingDefenses() for defenseClass in remainingDefenses: label = self.remainingDefensesLabels[defenseClass] label.setText("{0} Left: {1}".format(defenseClass.friendlyName, remainingDefenses[defenseClass]))