def loadLevel(self): terrain, self.startpos = self.maps.load(self.level) self.terrain = pygame.sprite.Group(*terrain) self.ball = Ball(*self.startpos) self.score = 0 self.stopwatch.restart() if self.level != "test": highscore = self.progress[self.level]["score"] bestTime = self.progress[self.level]["time"] else: highscore, bestTime = None, None self.highscoreText = str(highscore) if highscore != None else "---" if bestTime != None: self.bestTimeText = Stopwatch.secToMin(bestTime) else: self.bestTimeText = "---"
def initLevelMenu(self): top = 60 left = 130 entries = [] actions = [] for i, level in enumerate(self.maps.levels): prevLevel = self.maps.levels[i - 1] if i > 0 and self.progress[prevLevel]["score"] == None: entries.append("Level %s Locked" % level) actions.append(None) continue elif self.progress[level]["score"] == None: entries.append("Level %s Unlocked" % level) else: entries.append("Level %s Highscore: %d Best time: %s" % (level, self.progress[level]["score"], Stopwatch.secToMin(self.progress[level]["time"]))) # Locally scope level actions.append(lambda level=level: self.playLevel(level)) entries += ["Return to main menu", "Clear progress"] actions += [self.doMainMenu, self.progress.clear] self.levelMenu = Menu(left, top, entries, actions)