public Coroutine Unload(Action <float> onProgress = null) { if (this.isUnloading) { return(null); } if (!IsLoaded) { return(null); } return(CorouWaiter.Start(GetRoutine())); IEnumerator GetRoutine() { try { OnStartUnload(); } catch (Exception e) { Debug.LogError(e); } this.isUnloading = true; var operation = SceneManager.UnloadSceneAsync(this.BuildIndex); bool done = false; OnUnload += Unloaded; void Unloaded(SceneWrapper wrapper) { OnUnload -= Unloaded; done = true; } while (!done) { onProgress?.Invoke(operation.progress / 0.9f); yield return(null); } this.isUnloading = false; try { OnFinishUnload(); } catch (Exception e) { Debug.LogError(e); } } }
public static Coroutine StopGame() { return(CorouWaiter.Start(Routine())); IEnumerator Routine() { PauseManager.PauseEnabled = false; yield return(SceneLoadingManager.LoadMenu()); } }
public static void StartLevel(int id) { _currentLevelId = id; Debug.LogWarning($"START LEVEL: {_currentLevelId}"); CorouWaiter.Start(Routine()); IEnumerator Routine() { PauseManager.PauseEnabled = true; yield return(SceneLoadingManager.LoadGame()); MatchController.I.StartMatch(id); } }
public static Coroutine FirstLoad() { return(CorouWaiter.Start(GetRoutine())); IEnumerator GetRoutine() { yield return(ShowWaitScreen(true)); yield return(UnloadAll()); yield return(LoadScenes(MainMenuScenes)); yield return(HideWaitScreen()); } }
public static Coroutine StartGame() { return(CorouWaiter.Start(Routine())); IEnumerator Routine() { yield return(SceneLoadingManager.LoadGame(onCompleteLoad: () => InitGame())); } void InitGame() { GameView.I.Init(); PauseManager.PauseEnabled = true; } }
public static Coroutine LoadGame() { return(CorouWaiter.Start(GetRoutine())); IEnumerator GetRoutine() { yield return(ShowWaitScreen()); yield return(UnloadAll()); yield return(LoadScenes(GameScenes)); yield return(HideWaitScreen()); } }
public static Coroutine StartGame() { return(CorouWaiter.Start(Routine())); IEnumerator Routine() { yield return(SceneLoadingManager.LoadGame(onCompleteLoad: () => InitGame())); } void InitGame() { GameView.I.Init(); GameView.I.Player.OnAllPlanetsCaptured += () => PopupManager.OpenPopup <EndLevelPopup>().SetWindow(true); PauseManager.PauseEnabled = true; } }
public static Coroutine LoadGame(Action onStartLoad = null, Action onCompleteLoad = null) { return(CorouWaiter.Start(GetRoutine())); IEnumerator GetRoutine() { yield return(ShowWaitScreen()); onStartLoad?.Invoke(); yield return(UnloadAll()); yield return(LoadScenes(GameScenes)); onCompleteLoad?.Invoke(); yield return(HideWaitScreen()); } }
public Coroutine Hide(bool forced = false) { return(CorouWaiter.Start(GetRoutine())); IEnumerator GetRoutine() { if (!forced) { this.background.color = this.background.color.SetAlpha(1f); this.spinnerContainer.anchoredPosition = this.spinnerPointOn.anchoredPosition; var sequence = DOTween.Sequence() .Append(this.background.DOFade(0f, this.duration).SetEase(Ease.InOutSine)) .Join(this.spinnerContainer.DOAnchorPos(this.spinnerPointOff.anchoredPosition, this.duration).SetEase(Ease.InSine)); yield return(sequence.WaitForCompletion(true)); } this.waitScreenGo.SetActive(false); yield break; } }
public static Coroutine UnloadScenes(IList <SceneKind> kinds) { return(CorouWaiter.Start(GetRoutine())); IEnumerator GetRoutine() { var operations = new List <Coroutine>(kinds.Count); foreach (var kind in kinds) { var wrapper = SceneWrapper.GetWrapper(kind); operations.Add(wrapper.Unload()); } foreach (var operation in operations) { yield return(operation); } yield break; } }
public Coroutine Load(bool allowActivation = true, LoadSceneMode mode = LoadSceneMode.Additive, Action <float> onProgress = null) { if (this.isLoading) { return(null); } if (IsLoaded) { return(null); } return(CorouWaiter.Start(GetRoutine())); IEnumerator GetRoutine() { try { OnStartLoad(); } catch (Exception e) { Debug.LogError(e); } this.isLoading = true; var operation = SceneManager.LoadSceneAsync(this.BuildIndex, mode); operation.allowSceneActivation = allowActivation; bool done = false; OnLoad += Loaded; void Loaded(SceneWrapper wrapper) { OnLoad -= Loaded; done = true; } while (!done) { onProgress?.Invoke(operation.progress / 0.9f); yield return(null); } this.isLoading = false; try { OnFinishLoad(); } catch (Exception e) { Debug.LogError(e); } } }
public void StartMatch(int levelId) { this.preset = LevelPresetData.GetPreset(levelId); CorouWaiter.Start(Routine()); IEnumerator Routine() { yield return(CorouWaiter.WaitFor(() => PlayerController.I != null)); yield return(CorouWaiter.WaitFor(() => UserHUDController.I != null)); PlayerController.I.Player.Health.OnDamage += (_, hp) => UserHUDController.I.SetHp(hp); PlayerController.I.Player.Health.OnDead += StopMatch; var waitSecond = new WaitForSeconds(1f); int counter = 3; while (counter-- > 0) { Debug.Log(counter + 1); yield return(waitSecond); } Debug.Log("Math started!"); var waitSpawn = new WaitForSeconds(this.preset.duration / (float)this.preset.count); counter = this.preset.count; while (counter-- > 0) { var enemy = spawner.SpawnEnemy(); enemy.OnCollide += Damage; void Damage(Enemy e, Collision c) { enemy.OnCollide -= Damage; var health = c.collider.GetComponentInParent <PlayerHealth>(); if (health != null) { health.SetDamage(1, enemy.GO); } } enemy.OnDeadByPlayer += Kill; void Kill(Enemy e) { enemy.OnDeadByPlayer -= Kill; ++this.killCount; } enemy.OnDestroyEvent += Destroy; void Destroy(Enemy e) { enemy.OnDestroyEvent -= Destroy; ++this.destroyCount; if (this.destroyCount == this.preset.count) { StopMatch(); } } yield return(waitSpawn); } } }