示例#1
0
    /// <summary>
    /// Shows the rescue screen.
    /// </summary>
    /// <returns>The rescue screen.</returns>
    /// <param name="reason">Reason.</param>
    IEnumerator ShowRescueScreen(GameOverReason reason)
    {
        #region time mode
        if (GameController.gameMode == GameMode.TIMED || GameController.gameMode == GameMode.CHALLENGE)
        {
            GamePlay.Instance.timeSlider.PauseTimer();
        }
        #endregion

        switch (reason)
        {
        case GameOverReason.OUT_OF_MOVES:
            //txtAlertText.SetLocalizedTextForTag ("txt-out-moves");
            break;

        case GameOverReason.BOMB_COUNTER_ZERO:
            //txtAlertText.SetLocalizedTextForTag ("txt-bomb-blast");
            break;

        case GameOverReason.TIME_OVER:
            //txtAlertText.SetLocalizedTextForTag ("txt-time-over");
            break;
        }

        yield return(new WaitForSeconds(0.5F));

        alertWindow.SetActive(true);
        yield return(new WaitForSeconds(1.5F));

        alertWindow.SetActive(false);
        GamePlay.Instance.OnGameOver();
        //StackManager.Instance.SpawnUIScreen ("Rescue");
    }
示例#2
0
        public static void Prefix([HarmonyArgument(0)] GameOverReason gameOverReason)
        {
            if (!TryGetSpecialRole(out Survivor survivor))
            {
                return;
            }

            if (TempData.DidHumansWin(gameOverReason))
            {
                survivor.Owner.Data.IsImpostor = survivor.Owner.Data.IsDead;
                if (!survivor.Owner.Data.IsDead)
                {
                    return;
                }

                TempData.winners.Remove(TempData.winners.ToArray()
                                        .FirstOrDefault(winner => winner.Name.Equals(survivor.Owner.Data.PlayerName)));
            }
            else if (gameOverReason != GameOverReason.ImpostorBySabotage)   // Impostor won without Sabotage
            {
                survivor.Owner.Data.IsImpostor = !survivor.Owner.Data.IsDead;
                if (survivor.Owner.Data.IsDead)
                {
                    return;
                }

                TempData.winners.Add(new WinningPlayerData(survivor.Owner.Data));
            }
        }
示例#3
0
 private void EndGame(GameOverReason cause)
 {
     Cursor.SetCursor(null, Vector2.zero, CursorMode.Auto);
     PlayerPrefs.SetString(Consts.PlayerDied, (cause == GameOverReason.Death || cause == GameOverReason.Quit).ToString());
     PlayerPrefs.SetInt(Consts.Score, GameScore);
     SceneManager.LoadScene(Consts.GameOverSceneName);
 }
        public static void Prefix([HarmonyArgument(0)] GameOverReason gameOverReason)
        {
            if (!TryGetSpecialRole(out GuardianAngel guardianAngel))
            {
                return;
            }

            if (TempData.DidHumansWin(gameOverReason))
            {
                guardianAngel.Owner.Data.IsImpostor = guardianAngel.ProtectTarget.Data.IsDead;
                if (!guardianAngel.ProtectTarget.Data.IsDead)
                {
                    return;
                }

                TempData.winners.Remove(TempData.winners.ToArray()
                                        .FirstOrDefault(winner => winner.Name.Equals(guardianAngel.Owner.Data.PlayerName)));
            }
            else if (gameOverReason != GameOverReason.ImpostorBySabotage)   // Impostor won without Sabotage
            {
                guardianAngel.Owner.Data.IsImpostor = !guardianAngel.ProtectTarget.Data.IsDead;
                if (guardianAngel.ProtectTarget.Data.IsDead)
                {
                    return;
                }

                TempData.winners.Add(new WinningPlayerData(guardianAngel.Owner.Data));
            }
        }
示例#5
0
        public static async Task EndGame(GameOverReason gameOverReason)
        {
            if (!_instance.isServerActive)
            {
                return;
            }
            LogInfo("EndGame");
            // Dayを終了
            await EndDay();

            // ゲーム終了理由を更新
            using (var client = new HttpClient())
            {
                string url      = _instance.url + _instance.gameId.ToString() + "/";
                var    response = await client.GetAsync(url);

                if (response.IsSuccessStatusCode)
                {
                    string data = await response.Content.ReadAsStringAsync();

                    ResGame retGame = JsonConvert.DeserializeObject <ResGame>(data);
                    retGame.gameOverReason = (int)gameOverReason;
                    string json    = JsonConvert.SerializeObject(retGame);
                    var    content = new StringContent(json, Encoding.UTF8);
                    response = await client.PutAsync(url, content);
                }
                else
                {
                    _instance.isServerActive = false;
                }
            }
        }
        public void game_over(GameOverReason reason)
        {
            if (state == State.exiting)
            {
                return;
            }

            if (state != State.playing_wave)
            {
                return;
            }

            state = State.game_over;

            if (reason == GameOverReason.timeout)
            {
                if (timeout_gameover_display != null)
                {
                    StopCoroutine(timeout_gameover_display);
                }
                timeout_gameover_display = game_over_timeout_display();
                StartCoroutine(timeout_gameover_display);
            }
            else
            {
                timeout.stop();
            }
        }
示例#7
0
 public void GameOver(GameOverReason gameOverReason)
 {
     GameOverMenu.GameOverReason = gameOverReason;
     GameOverMenu.Score          = Player.Score;
     AppInsights.GameOver(gameOverReason);
     ChangeState(GameState.GameOver);
 }
示例#8
0
 public static void Postfix(AmongUsClient __instance, ref GameOverReason gameOverReason, bool showAd)
 {
     MuteBot.LogInfo("OnGameEndPatch");
     MuteBot.GetInstance().isGameEnded = true;
     Task.Run(() => MuteBot.UpdateStatus(GameStatus.Lobby));
     return;
 }
示例#9
0
 private static void Prefix([HarmonyArgument(0)] GameOverReason reason)
 {
     if (reason.IsCustom())
     {
         CustomGameOverReasonManager.Winners      = CustomGameOverReasonManager.EndReason.Winners.Select(p => new WinningPlayerData(p)).ToList();
         CustomGameOverReasonManager.ShownWinners = CustomGameOverReasonManager.EndReason.ShownWinners.Select(p => new WinningPlayerData(p)).ToList();
     }
 }
示例#10
0
 public static void Prefix(AmongUsClient __instance, ref GameOverReason OFLKLGMHBEL, bool JFFPAKGPNJA)
 {
     gameOverReason = OFLKLGMHBEL;
     if ((int)OFLKLGMHBEL >= 10)
     {
         OFLKLGMHBEL = GameOverReason.ImpostorByKill;
     }
 }
示例#11
0
        public static bool Prefix(ShipStatus __instance, [HarmonyArgument(0)] GameOverReason reason)
        {
            EndGameEvent endEvent = new EndGameEvent(__instance, reason);

            GameEventManager.callEndGame(endEvent);

            return(true);
        }
        public static void Postfix(AmongUsClient __instance, ref GameOverReason NEPMFBMGGLF, bool FBEKDLNKNLL)
        {
            Recorder.LogInfo("OnGameEndPatch");
            GameOverReason gameOverReason = NEPMFBMGGLF;

            Task.Run(() => Recorder.EndGame(gameOverReason));
            return;
        }
示例#13
0
 public static void Postfix(AmongUsClient __instance, [HarmonyArgument(0)] GameOverReason reason, [HarmonyArgument(0)] bool showAd)
 {
     Utils.potentialWinners.Clear();
     foreach (var player in PlayerControl.AllPlayerControls)
     {
         Utils.potentialWinners.Add(new WinningPlayerData(player.Data));
     }
 }
示例#14
0
 public static void Prefix(AmongUsClient __instance, [HarmonyArgument(0)] ref GameOverReason reason, [HarmonyArgument(1)] bool showAd)
 {
     gameOverReason = reason;
     if ((int)reason >= 10)
     {
         reason = GameOverReason.ImpostorByKill;
     }
 }
示例#15
0
    public void TriggerGameLost(GameOverReason reason)
    {
        // We od this because the spawner will persist into the next scene and could keep spawning goals otherwise.
        spawner.StopSpawning();

        IsGameEnded = true;
        GameEndedEvent();
        GameLostEvent(reason);
    }
示例#16
0
 public void HandlePlayerDied()
 {
     if (IsPlaying)
     {
         mGameOverReason = GameOverReason.PlayerDied;
         mGameState      = GameState.GameOver;
         mAutoAdvanceCountdown.Start(GameConsts.AutoRetryTime);
     }
     audio.Stop();
 }
示例#17
0
        private void OnGameOver(GameOverReason gameOverReasonType)
        {
            _viewTimer.Stop();
            var text = gameOverReasonType == GameOverReason.HeadBlown ?
                       "Oh shit your head has blown! XD" :
                       "Your can't left move than one tail! :(";

            MessageBox.Show(text, "Game is over!");
            this.Close();
        }
示例#18
0
    public IEnumerator GameOverWithAnItsyBitsyTeenyWeenyNoImmediateDeathMachiney(
        GameOverReason reason = GameOverReason.Undefined)
    {
        IsGameOver = true;
        AudioController.Instance.PlaySound("GameOverSound");
        AudioController.Instance.StopAllMusic();

        yield return(new WaitForSeconds(1));

        GameOver(reason);
    }
示例#19
0
 public void Initialize(int totalMatchTime, SO_Dish[] expectedDishes)
 {
     LocalPlayerControllerSpawned = false;
     MatchStarted      = false;
     MatchOver         = false;
     ExpectedDishes    = expectedDishes;
     TimeLeft          = totalMatchTime;
     WonTheMatch       = false;
     GameOverReason    = GameOverReason.GAME_NOT_OVER;
     PlayerCookingPots = new Dictionary <int, CookingPot>();
 }
示例#20
0
    public void GameOver(GameOverReason reason = GameOverReason.Undefined)
    {
        if (!IsGameOver)
        {
            AudioController.Instance.PlaySound("GameOverSound");
            AudioController.Instance.StopAllMusic();
        }

        Debug.Log("GameOver Reason: " + Enum.GetName(typeof(GameOverReason), reason));

        IsGameOver = true;
        gameOverOverlay.SetActive(true);
        ScoreController.Instance.UpdateGameOverPanel();
    }
    private void RpcChangeGameState(GameState newState, GameOverReason reason)
    {
        if (isServer)
        {
            return;
        }

        gameState = newState;
        if (gameState == GameState.Over)
        {
            gameOverReason = reason;
            RoundEnding();
        }
    }
        private void SetupAndEnable(GameOverReason reason)
        {
            ReasonTranslationData matchingTranslation = reasonsTranslation.FirstOrDefault(translation => translation.Reason == reason);
            string translatedReason = matchingTranslation.Equals(default(ReasonTranslationData))
                ? string.Empty
                : matchingTranslation.Translation;
            string translatedTitle = matchingTranslation.Equals(default(ReasonTranslationData))
                ? string.Empty
                : matchingTranslation.Title;

            reasonContainer.text = translatedReason;
            titleContainer.text  = translatedTitle;
            Enable();
        }
示例#23
0
        public void HandleCivilianDestroyed()
        {
            if (IsPlaying)
            {
                // civilians killed - end level
                mGameOverReason = GameOverReason.CiviliansDied;
                mGameState      = GameState.GameOver;
                mAutoAdvanceCountdown.Start(GameConsts.AutoRetryTime);

                // destroy player
                GameObject p = GameObject.FindGameObjectWithTag("Player");
                p.GetComponent <PlayerController>().KillPlayer();
            }
        }
示例#24
0
        public void GameOver(GameOverReason reason)
        {
            var properties = GetPropertiesDictionary();

            properties.Add("GameOverReason", reason.ToString());

            var metrics = new Dictionary <string, double>
            {
                { "Num Levels", TheLastSliceGame.LevelManager.Levels.Count },
                { "Seconds Played", (DateTime.Now - StartTime).TotalSeconds },
            };

            TelemetryClient.TrackEvent("GameOver", properties, metrics);
        }
 //game over event and state handling
 public void GameOver(GameOverReason reason)
 {
     if (reason == GameOverReason.gameOverTimeOut)
     {
     }
     else if (reason == GameOverReason.allLiveLost)
     {
     }
     else if (reason == GameOverReason.badItemCollected)
     {
     }
     gameState = GameState.inMenu;
     ViewGameOver.instance.PopulateGameOverUI();
     CollectibleSpawner.instance.RemoveFishes();
 }
示例#26
0
        protected bool CheckCollideWithEgg(Collider2D collider, GameOverReason reason, string detail)
        {
            if (null != collider && collider.gameObject == GameController.GetSingleton().levelsController.eggController.gameObject)
            {
                ColliderDistance2D dis = collider.Distance(gameObject.GetComponent <Collider2D>());
                Log.Info("xxx {0} {1} {2}", dis.distance, dis.isOverlapped, detail);
                if (dis.distance < 0.1 || dis.isOverlapped)
                {
                    GameController.GetSingleton().levelsController.levelController.GameOver(transform, reason, detail);

                    return(true);
                }
            }

            return(false);
        }
示例#27
0
 public void LoseGame(GameOverReason gameOverReason)
 {
     if (_gameOver)
     {
         return;
     }
     _gameOver = true;
     if (gameOverReason == GameOverReason.NoPossibleMove)
     {
         UIManager.Instance.SetGameOverReason("No Possible Move");
     }
     else if (gameOverReason == GameOverReason.BombExploded)
     {
         UIManager.Instance.SetGameOverReason("Bomb Exploded");
     }
     StartCoroutine(LoseGameRoutine());
 }
示例#28
0
        public static bool Prefix(ShipStatus __instance, [HarmonyArgument(0)] GameOverReason reason)
        {
            if (reason != GameOverReason.HumansByVote && reason != GameOverReason.HumansByTask)
            {
                return(true);
            }

            if (Utils.Jester == null)
            {
                return(true);
            }
            var writer = AmongUsClient.Instance.StartRpcImmediately(PlayerControl.LocalPlayer.NetId, (byte)CustomRPC.JesterLose,
                                                                    SendOption.Reliable, -1);

            AmongUsClient.Instance.FinishRpcImmediately(writer);
            Utils.Jester.Data.IsImpostor = true;

            return(true);
        }
示例#29
0
    public void ShowData(GameOverReason reason)
    {
        switch (reason)
        {
        case GameOverReason.BlackHole:
        {
            reasonText.text = "THE BLACK HOLE TOOK YOU.";
            tipText.text    = "Tip: Flying near the black hole is a great way to increase your speed, just make sure not to get too close.";
            break;
        }

        case GameOverReason.Asteroid:
        {
            reasonText.text = "YOU HIT AN ASTEROID.";
            tipText.text    = "Tip: You can reduce your speed by avoiding the black hole.";
            break;
        }
        }
    }
示例#30
0
        public async ValueTask HandleEndGame(IMessageReader message, GameOverReason gameOverReason)
        {
            GameState = GameStates.Ended;

            // Broadcast end of the game.
            using (var packet = MessageWriter.Get(MessageType.Reliable))
            {
                message.CopyTo(packet);
                await SendToAllAsync(packet);
            }

            // Put all players in the correct limbo state.
            foreach (var player in _players)
            {
                player.Value.Limbo = LimboStates.PreSpawn;
            }

            await _eventManager.CallAsync(new GameEndedEvent(this, gameOverReason));
        }
示例#31
0
		/// <summary>
		/// Dos the game over.
		/// </summary>
		/// <param name="aGameOverReason">A game over reason.</param>
		public void doGameOver (GameOverReason aGameOverReason) 
		{
			_lastGameOverReason = aGameOverReason;
			_doGameOver_Part1();

		}
示例#32
0
 void GameOver(GameOverReason reason)
 {
     switch(reason)
     {
         case GameOverReason.HIT_SNAKE:
             gameOverText.GetComponent<Text>().text = "You ran into yourself!\n";
             break;
         case GameOverReason.HIT_WALL:
             gameOverText.GetComponent<Text>().text = "You ran into the wall!\n";
             break;
         case GameOverReason.INCORRECT_ANSWER:
             gameOverText.GetComponent<Text>().text = "Incorrect Answer!\n";
             break;
         default:
             gameOverText.GetComponent<Text>().text = "Unknown Reason!\n";
             break;
     }
     currentSnakeHead.GetComponent<SnakeHead>().cycling = false;
     gameOverText.GetComponent<Text>().text += "Game Over\nCorrect Answer: " + answerObject.name + "\n\nPress Enter to Restart";
     gameOverText.GetComponent<Text>().enabled = true;
     gameOver = true;
 }
示例#33
0
	//GameOver is called when the player reaches 0 food points
	public void GameOver(GameOverReason reason) {
		string failMessage = "YOU WERE REMOVED FROM COURT\n";
		switch (reason) {
			case GameOverReason.WINE:
			failMessage += "You ran out of wine before reaching the King.";
			break;
			case GameOverReason.TIME:
			failMessage += "You ran out of time before reaching the King.";
			break;
			case GameOverReason.SHADOWS:
			failMessage += "You spent too long skulking in the shadows.";
			break;
			case GameOverReason.ATTEMPTED_REGICIDE:
			failMessage += "TOO CLOSE.";
			break;
		}
		ShowGameOverMessage(failMessage);

		//Disable this GameManager.
		enabled = false;
	}
示例#34
0
    public void HandleCivilianDestroyed()
    {
        if (IsPlaying) {
            // civilians killed - end level
            mGameOverReason = GameOverReason.CiviliansDied;
            mGameState = GameState.GameOver;
            mAutoAdvanceCountdown.Start(GameConsts.AutoRetryTime);

            // destroy player
            GameObject p = GameObject.FindGameObjectWithTag("Player");
            p.GetComponent<PlayerController>().KillPlayer();
        }
    }
示例#35
0
 public void HandlePlayerDied()
 {
     if (IsPlaying) {
         mGameOverReason = GameOverReason.PlayerDied;
         mGameState = GameState.GameOver;
         mAutoAdvanceCountdown.Start(GameConsts.AutoRetryTime);
     }
     audio.Stop();
 }