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