def checkParts(self): info = Song.loadSongInfo(self.engine, self.songName, library = self.libraryName) guitars = [] drums = [] vocals = [] for part in info.parts: if part.id == 4 or part.id == 7: drums.append(part) elif part.id == 5: vocals.append(part) else: guitars.append(part) if len(drums) == 0 and self.engine.input.gameDrums > 0: Dialogs.showMessage(self.engine, _("There are no drum parts in this song. Change your controllers to play.")) return False if len(guitars) == 0 and self.engine.input.gameGuitars > 0: Dialogs.showMessage(self.engine, _("There are no guitar parts in this song. Change your controllers to play.")) return False if len(vocals) == 0 and self.engine.input.gameMics > 0: Dialogs.showMessage(self.engine, _("There are no vocal parts in this song. Change your controllers to play.")) return False return True
def startGame(self, fromQueue = False): #note this is not refined. if len(self.engine.world.songQueue) == 0: return showDialog = True if not fromQueue and self.queueFormat == 1 and len(self.engine.world.songQueue) > 1: self.engine.world.songQueue.setFullQueue() self.engine.world.playingQueue = True if self.queueOrder == 1: self.songName, self.libraryName = self.engine.world.songQueue.getRandomSong() else: self.songName, self.libraryName = self.engine.world.songQueue.getSong() info = Song.loadSongInfo(self.engine, self.songName, library = self.libraryName) guitars = [] drums = [] vocals = [] for part in info.parts: if part.id == 4 or part.id == 7: drums.append(part) elif part.id == 5: vocals.append(part) else: guitars.append(part) choose = [[] for i in self.players] for i, player in enumerate(self.players): j = self.engine.world.songQueue.getParts()[i] if player.controlType == 2 or player.controlType == 3: choose[i] = drums elif player.controlType == 5: choose[i] = vocals else: choose[i] = guitars if self.queued: showDialog = False for i, player in enumerate(self.players): if Song.parts[j] in choose[i]: p = Song.parts[j] elif self.queueParts == 0: if j == 0: for k in [3, 1, 2]: if Song.parts[k] in choose[i]: p = Song.parts[k] break elif j == 1: for k in [2, 0, 3]: if Song.parts[k] in choose[i]: p = Song.parts[k] break elif j == 2: for k in [1, 0, 3]: if Song.parts[k] in choose[i]: p = Song.parts[k] break elif j == 3: for k in [0, 1, 2]: if Song.parts[k] in choose[i]: p = Song.parts[k] break j = self.engine.world.songQueue.getDiffs()[i] if Song.difficulties[j] in info.partDifficulties[p.id]: d = Song.difficulties[j] elif self.queueDiffs == 0: if j == 0: for k in range(1,4): if Song.difficulties[k] in info.partDifficulties[p.id]: d = Song.difficulties[k] elif j == 1: for k in range(2,5): if Song.difficulties[k%4] in info.partDifficulties[p.id]: d = Song.difficulties[k%4] elif j == 2: if Song.difficulties[3] in info.partDifficulties[p.id]: d = Song.difficulties[3] else: for k in range(1, -1, -1): if Song.difficulties[k] in info.partDifficulties[p.id]: d = Song.difficulties[k] else: for k in range(2, -1, -1): if Song.difficulties[k] in info.partDifficulties[p.id]: d = Song.difficulties[k] elif self.queueDiffs == 1: if j == 3: for k in range(2,-1, -1): if Song.difficulties[k] in info.partDifficulties[p.id]: d = Song.difficulties[k] elif j == 2: for k in range(1,-2,-1): if Song.difficulties[k%4] in info.partDifficulties[p.id]: d = Song.difficulties[k%4] elif j == 1: if Song.difficulties[0] in info.partDifficulties[p.id]: d = Song.difficulties[0] else: for k in range(2,4): if Song.difficulties[k] in info.partDifficulties[p.id]: d = Song.difficulties[k] else: for k in range(1,4): if Song.difficulties[k] in info.partDifficulties[p.id]: d = Song.difficulties[k] if p and d: player.part = p player.difficulty = d else: showDialog = True if showDialog: ready = False while not ready: ready = Dialogs.choosePartDiffs(self.engine, choose, info, self.players) if not ready and not self.queued and not self.engine.cmdPlay: return False if self.engine.cmdPlay > 0: self.engine.cmdPlay = 3 self.freeResources() self.engine.world.createScene("GuitarScene", libraryName = self.libraryName, songName = self.songName) self.gameStarted = True
def checkCmdPlay(self): info = Song.loadSongInfo(self.engine, self.songName, library = self.libraryName) guitars = [] drums = [] vocals = [] autoPart = None for part in info.parts: if part.id == 4 or part.id == 7: drums.append(part) elif part.id == 5: vocals.append(part) else: guitars.append(part) if self.engine.cmdPlay == 2 and self.engine.cmdPart is not None and len(self.playerList) == 1: if self.engine.cmdPart == part.id: log.debug("Command-line mode: Part found!") if part.id == 4 and self.engine.input.gameDrums > 0: autoPart = part.id elif part.id == 5 and self.engine.input.gameMics > 0: autoPart = part.id elif self.engine.input.gameGuitars > 0: autoPart = part.id if autoPart is None: if len(drums) == 0 and self.engine.input.gameDrums > 0: if self.splash: Dialogs.hideLoadingSplashScreen(self.engine, self.splash) self.splash = None Dialogs.showMessage(self.engine, _("There are no drum parts in this song. Change your controllers to play.")) if self.engine.cmdPlay == 2: self.engine.cmdPlay = 0 return False if len(guitars) == 0 and self.engine.input.gameGuitars > 0: if self.splash: Dialogs.hideLoadingSplashScreen(self.engine, self.splash) self.splash = None Dialogs.showMessage(self.engine, _("There are no guitar parts in this song. Change your controllers to play.")) if self.engine.cmdPlay == 2: self.engine.cmdPlay = 0 return False if len(vocals) == 0 and self.engine.input.gameMics > 0: if self.splash: Dialogs.hideLoadingSplashScreen(self.engine, self.splash) self.splash = None Dialogs.showMessage(self.engine, _("There are no vocal parts in this song. Change your controllers to play.")) if self.engine.cmdPlay == 2: self.engine.cmdPlay = 0 return False # Make sure the difficulty we chose is available p = self.playerList[0].part player = self.playerList[0] if self.engine.cmdDiff is not None: diff = Song.difficulties[self.engine.cmdDiff] if diff in info.partDifficulties[p.id]: self.playerList[0].difficulty = diff else: self.playerList[0].difficulty = info.partDifficulties[p.id][0] else: if self.splash: Dialogs.hideLoadingSplashScreen(self.engine, self.splash) self.splash = None self.playerList[0].difficulty = Dialogs.chooseItem(self.engine, info.partDifficulties[p.id], "%s \n %s" % (Song.removeSongOrderPrefixFromName(info.name), _("%s Choose a difficulty:") % player.name), selected = player.difficulty) return True