void OnEnable() { string playerProfilesCsv = String.Join(",", sceneData.SelectedPlayerProfiles.Select(it => it.Name)); Debug.Log($"[{playerProfilesCsv}] start (or continue) singing of {SongMeta.Title}."); // Start the music StartAudioPlayback(); // Start any associated video Invoke("StartVideoPlayback", SongMeta.VideoGap); // Go to next scene when the song finishes Invoke("CheckSongFinished", mainOutputStream.TotalTime.Seconds); // Handle players foreach (PlayerProfile playerProfile in sceneData.SelectedPlayerProfiles) { CreatePlayerController(playerProfile); } // Associate LyricsDisplayer with one of the (duett) players LyricsDisplayer lyricsDisplayer = FindObjectOfType <LyricsDisplayer>(); PlayerControllers[0].LyricsDisplayer = lyricsDisplayer; }
void Start() { LoadSceneData(); // Handle players List <PlayerProfile> playerProfilesWithoutMic = new List <PlayerProfile>(); foreach (PlayerProfile playerProfile in sceneData.SelectedPlayerProfiles) { sceneData.PlayerProfileToMicProfileMap.TryGetValue(playerProfile, out MicProfile micProfile); if (micProfile == null) { playerProfilesWithoutMic.Add(playerProfile); } CreatePlayerController(playerProfile, micProfile); } // Handle dummy singers if (Application.isEditor) { DummySingers = FindObjectsOfType <AbstractDummySinger>().ToList(); foreach (AbstractDummySinger dummySinger in DummySingers) { if (dummySinger.playerIndexToSimulate < PlayerControllers.Count) { dummySinger.SetPlayerController(PlayerControllers[dummySinger.playerIndexToSimulate]); } else { Debug.LogWarning("DummySinger cannot simulate player with index " + dummySinger.playerIndexToSimulate); dummySinger.gameObject.SetActive(false); } } } // Create warning about missing microphones string playerNameCsv = string.Join(",", playerProfilesWithoutMic.Select(it => it.Name).ToList()); if (!playerProfilesWithoutMic.IsNullOrEmpty()) { UiManager.Instance.CreateWarningDialog("Missing microphones", $"No microphone for player(s) {playerNameCsv}"); } // Associate LyricsDisplayer with one of the (duett) players if (!PlayerControllers.IsNullOrEmpty()) { LyricsDisplayer lyricsDisplayer = FindObjectOfType <LyricsDisplayer>(); PlayerControllers[0].LyricsDisplayer = lyricsDisplayer; } //Save information about the song being started into stats Statistics stats = StatsManager.Instance.Statistics; stats.RecordSongStarted(SongMeta); songVideoPlayer.Init(SongMeta, songAudioPlayer); StartCoroutine(StartMusicAndVideo()); }
void Start() { string playerProfilesCsv = SceneData.SelectedPlayerProfiles.Select(it => it.Name).ToCsv(); Debug.Log($"{playerProfilesCsv} start (or continue) singing of {SongMeta.Title} at {SceneData.PositionInSongInMillis} ms."); // Prepare columns and rows for player UI PlayerUiArea.SetupPlayerUiGrid(SceneData.SelectedPlayerProfiles.Count, playerUiArea.GetComponent <GridLayoutGroupCellSizer>()); // Handle players List <PlayerProfile> playerProfilesWithoutMic = new List <PlayerProfile>(); foreach (PlayerProfile playerProfile in SceneData.SelectedPlayerProfiles) { SceneData.PlayerProfileToMicProfileMap.TryGetValue(playerProfile, out MicProfile micProfile); if (micProfile == null) { playerProfilesWithoutMic.Add(playerProfile); } PlayerController playerController = CreatePlayerController(playerProfile, micProfile); if (SceneData.PlayerProfileToScoreDataMap.TryGetValue(playerProfile, out PlayerScoreControllerData scoreData)) { playerController.PlayerScoreController.ScoreData = scoreData; } } // Handle dummy singers if (Application.isEditor) { DummySingers = FindObjectsOfType <AbstractDummySinger>().ToList(); foreach (AbstractDummySinger dummySinger in DummySingers) { if (dummySinger.playerIndexToSimulate < PlayerControllers.Count) { dummySinger.SetPlayerController(PlayerControllers[dummySinger.playerIndexToSimulate]); } else { Debug.LogWarning("DummySinger cannot simulate player with index " + dummySinger.playerIndexToSimulate); dummySinger.gameObject.SetActive(false); } } } // Create warning about missing microphones string playerNameCsv = string.Join(",", playerProfilesWithoutMic.Select(it => it.Name).ToList()); if (!playerProfilesWithoutMic.IsNullOrEmpty()) { UiManager.Instance.CreateWarningDialog("Missing microphones", $"No microphone for player(s) {playerNameCsv}"); } // Associate LyricsDisplayer with one of the (duett) players if (!PlayerControllers.IsNullOrEmpty()) { LyricsDisplayer lyricsDisplayer = FindObjectOfType <LyricsDisplayer>(); lyricsDisplayer?.Init(PlayerControllers[0]); } //Save information about the song being started into stats Statistics stats = StatsManager.Instance.Statistics; stats.RecordSongStarted(SongMeta); songVideoPlayer.Init(SongMeta, songAudioPlayer); StartCoroutine(StartMusicAndVideo()); // Rebuild whole UI LayoutRebuilder.ForceRebuildLayoutImmediate(CanvasUtils.FindCanvas().GetComponent <RectTransform>()); }