/// <summary> /// Coroutine that kills the player, stops the camera, resets the points. /// </summary> /// <returns>The player co.</returns> protected IEnumerator SoloModeRestart(Character player, Transform respawnPoint, Character.FacingDirections facingDirection) { if ((PlayerPrefabs.Count() <= 0) && (SceneCharacters.Count <= 0)) { yield break; } MMCameraEvent.Trigger(MMCameraEventTypes.StopFollowing); CharacterSwapManager.DisableSwap(); yield return(new WaitForSeconds(RespawnDelay)); CharacterSwapManager.EnableSwap(); // if we've setup our game manager to use lives (meaning our max lives is more than zero) if (GameManager.Instance.MaximumLives > 0) { int lastCurrentLives = GameManager.Instance.CurrentLives; // we lose a life GameManager.Instance.LoseLife(); Config.currentLives = GameManager.Instance.CurrentLives; var currentLives = GameManager.Instance.CurrentLives; //nếu đang ở level không cho phép hồi sinh dưới 0 mạng if (Config.currentSceneIndex > Config.UNLIMIT_LIVE_LEVEL) { //nếu âm mạng hoặc mạng đang bằng 0 từ đầu ván thì ending //còn nếu mạng về 0 thì vẫn cho chơi nốt một lần if (currentLives < 0 || (currentLives == 0 && lastCurrentLives == 0)) { StickmanManager.Instance.ShowRevivePanel(); yield return(new WaitUntil(() => !StickmanManager.Instance.isWaitToRevive)); yield return(null); } } } MMCameraEvent.Trigger(MMCameraEventTypes.StartFollowing); player.RespawnAt(respawnPoint, facingDirection); _started = DateTime.UtcNow; // we send a new points event for the GameManager to catch (and other classes that may listen to it too) CorgiEnginePointsEvent.Trigger(PointsMethods.Set, 0); // we trigger a respawn event ResetLevelBoundsToOriginalBounds(); CorgiEngineEvent.Trigger(CorgiEngineEventTypes.Respawn); }
/// <summary> /// Triggered when something collides with the coin /// </summary> /// <param name="collider">Other.</param> protected override void Pick() { // we send a new points event for the GameManager to catch (and other classes that may listen to it too) CorgiEnginePointsEvent.Trigger(PointsMethods.Add, Config.COIN_ITEM); }