def __switchMode(self, amount): self.__mode = (self.__mode + amount) % 3 self.__caption.unlink(True) if self.__mode == 0: captionNode = self._theme.getNode("city_defense") elif self.__mode == 1: captionNode = self._theme.getNode("versus_2") else: captionNode = self._theme.getNode("versus_3") self.__caption = captionNode( pos=(self.size[0] // 10 * 2.5, (self.size[0] // 4 - self.size[0] // 6) // 2), size=(self.size[0] // 2, self.size[1] // 7), parent=self.__mode_div ) self.__highscore = Highscore(str(self.__mode)) if self.__highscoreDiv: self.__highscoreDiv.unlink(True) self.__highscoreDiv = avg.DivNode(parent=self) self.__highscoreDiv.pos = (self.size[0] // 10, self.size[1] // 4) self.__highscoreDiv.size = (self.size[0] // 10 * 8, self.size[1] // 4 * 3 - self.size[1] // 10) self.__highscore.readHighscore() for i, entry in enumerate(self.__highscore.entries): avg.WordsNode(text=("%02i" % (i + 1)) + ". " + unicode(entry[0]), color="FEFB00", fontsize=20, pos=(0, i * self.size[1] // 16), parent=self.__highscoreDiv) avg.WordsNode(text=str(entry[1]) + " ", color="FEFB00", fontsize=20, pos=(self.size[0] // 5 * 4, i * self.size[1] // 16), alignment="right", parent=self.__highscoreDiv)
class HighscoreBox(Box): def __init__(self, mainMenu, theme=themes.StandardTheme(), **kwargs): Box.__init__(self, mainMenu, **kwargs) self.__mode = 0 highscore_div = avg.DivNode( pos=(0, 0), size=(self.size[0], self.size[1]), parent=self, ) self.__mode_div = avg.DivNode(pos=(0, 0), size=(self.size[0], self.size[1] // 4), parent=highscore_div) choose_left = MenuButton( upImg="LessUp", downImg="LessDown", pos=(self.size[0] // 8, self.size[0] // 10), size=(self.size[0] // 8, self.size[1] // 7), parent=self.__mode_div, clickHandler=lambda event: self.__switchMode(-1)) self.__caption = self._theme.getNode("city_defense")( pos=(self.size[0] // 10 * 2.5, (self.size[0] // 4 - self.size[0] // 7) // 2), size=(self.size[0] // 2, self.size[1] // 7), parent=self.__mode_div ) choose_right = MenuButton( upImg="GreaterUp", downImg="GreaterDown", pos=(self.size[0] // 8 * 7 , self.size[0] // 10), size=(self.size[0] // 8, self.size[1] // 7), parent=self.__mode_div, clickHandler=lambda event: self.__switchMode(1)) self.appendChild(self._cancel_button) self.active = False self.__highscoreDiv = None self.__switchMode(0) def __switchMode(self, amount): self.__mode = (self.__mode + amount) % 3 self.__caption.unlink(True) if self.__mode == 0: captionNode = self._theme.getNode("city_defense") elif self.__mode == 1: captionNode = self._theme.getNode("versus_2") else: captionNode = self._theme.getNode("versus_3") self.__caption = captionNode( pos=(self.size[0] // 10 * 2.5, (self.size[0] // 4 - self.size[0] // 6) // 2), size=(self.size[0] // 2, self.size[1] // 7), parent=self.__mode_div ) self.__highscore = Highscore(str(self.__mode)) if self.__highscoreDiv: self.__highscoreDiv.unlink(True) self.__highscoreDiv = avg.DivNode(parent=self) self.__highscoreDiv.pos = (self.size[0] // 10, self.size[1] // 4) self.__highscoreDiv.size = (self.size[0] // 10 * 8, self.size[1] // 4 * 3 - self.size[1] // 10) self.__highscore.readHighscore() for i, entry in enumerate(self.__highscore.entries): avg.WordsNode(text=("%02i" % (i + 1)) + ". " + unicode(entry[0]), color="FEFB00", fontsize=20, pos=(0, i * self.size[1] // 16), parent=self.__highscoreDiv) avg.WordsNode(text=str(entry[1]) + " ", color="FEFB00", fontsize=20, pos=(self.size[0] // 5 * 4, i * self.size[1] // 16), alignment="right", parent=self.__highscoreDiv)