public static ReplayController Create(string name)
        {
            FileInfo fileLocation = new FileInfo($"UserData/Replays/{name}.replay");

            if (!fileLocation.Exists)
            {
                return(null);
            }
            GameObject       go          = new GameObject("ReplayController");
            ReplayController _controller = go.AddComponent <ReplayController>();

            Logger.Info($"Loading Replay for {name}");
            string[] replay = File.ReadAllText(fileLocation.FullName).Split('|');
            foreach (string position in replay)
            {
                _controller._replay.Add(new ReplayPacket(position));
            }
            if (_controller._replay.Count == replay.Length)
            {
                Logger.Info($"Loaded Replay for {name}");
            }
            else
            {
                Logger.Info($"Failed to load replay for {name}");
            }
            _controller.Replay = true;
            return(_controller);
        }
 public void Awake()
 {
     if (Instance != this)
     {
         Instance = this;
         DontDestroyOnLoad(gameObject);
     }
 }
 public void Awake()
 {
     if (Instance != this)
     {
         Instance = this;
         DontDestroyOnLoad(gameObject);
         ReplayController.LoadAvatars();
     }
 }
        private IEnumerator UpdatePresenceAfterFrame()
        {
            yield return(true);

            MainFlowCoordinator    _mainFlowCoordinator = Resources.FindObjectsOfTypeAll <MainFlowCoordinator>().FirstOrDefault();
            GameplayCoreSceneSetup _gameplaySetup       = Resources.FindObjectsOfTypeAll <GameplayCoreSceneSetup>().FirstOrDefault();

            if (_gameplaySetup == null)
            {
                yield break;
            }
            FieldInfo _gameplayCoreSceneSetupDataField = typeof(SceneSetup <GameplayCoreSceneSetupData>).GetField("_sceneSetupData", BindingFlags.NonPublic | BindingFlags.Instance);
            GameplayCoreSceneSetupData _mainSetupData  = _gameplayCoreSceneSetupDataField.GetValue(_gameplaySetup) as GameplayCoreSceneSetupData;

            if (_mainSetupData == null || _gameplaySetup == null || _mainFlowCoordinator == null)
            {
                yield break;
            }
            IDifficultyBeatmap diff = _mainSetupData.difficultyBeatmap;

            this.songName = $"{diff.level.songName}";
            ReplayController.Create(songName);
        }
 public ReplayController()
 {
     Instance = this;
 }