def setupScene(self):
        base.loadingScreen.tick()
        base.disableMouse()
        self._initGUI()
        base.loadingScreen.beginStep('setupScene', 9, 45)
        base.loadingScreen.tick()
        self.hintScreen = PotionHint(self)
        self.hintScreen.stash()
        base.loadingScreen.tick()
        self.infoScreen = PotionInfo(self)
        self.infoScreen.stash()
        base.loadingScreen.tick()
        self.currentRecipe = None
        self.recipes = []
        for recipeData in PotionRecipeData.PotionRecipeList:
            valid = True
            if recipeData.get('disabled', False):
                continue

            for ingredient in recipeData['ingredients']:
                if ingredient['color'] not in PotionRecipeData.PotionColorSets[
                        self.dist.colorSet]:
                    valid = False
                    continue

            newRecipe = PotionRecipe(self, recipeData['potionID'],
                                     recipeData['name'], recipeData['desc'],
                                     recipeData['ingredients'],
                                     recipeData['level'], recipeData['free'],
                                     recipeData.get('questOnly', False))
            if valid:
                newRecipe.available = True
            else:
                newRecipe.available = False
            self.recipes.append(newRecipe)

        for recipe in self.recipes:
            recipe.setPos(-1.1000000000000001, 0, -0.65000000000000002)

        self.recipePicker = PotionRecipePicker(self)
        base.loadingScreen.tick()
        (self.recipePicker.setPos(0.0, 0.0, 0.0), )
        self.recipePicker.setEnabled(False)
        self.recipePicker.stash()
        self.resultsScreen = PotionResults(self)
        self.resultsScreen.stash()
        base.loadingScreen.tick()
        self.failScreen = PotionFail(self)
        self.failScreen.stash()
        base.loadingScreen.tick()
        self._initIntervals()
        base.loadingScreen.tick()
        self.gameBoard = PotionGameBoard(self)
        self.gameBoard.setPos(0.10000000000000001, 0, -0.70499999999999996)
        base.loadingScreen.tick()
        self.unlockList = []
        base.musicMgr.request(SoundGlobals.MUSIC_MINIGAME_POTION,
                              priority=1,
                              volume=0.40000000000000002)
        base.loadingScreen.endStep('setupScene')