コード例 #1
0
ファイル: GameServer.cs プロジェクト: MeleshenkoIS/Komanda
        private void GameSession_GameEnded(object sender, Game.GameEndedEventArgs e)  // метод обработки события о звершении игры
        {
            State = GameServerState.GameEnded;

            foreach (var messageClient in Clients.Values) // новое сосотояние карты игры
            {
                var message = new Message(
                    MessageType.StateUpdate,
                    stateUpdateData: new StateUpdateData(GameSession.RetrieveState(),
                                                         false));

                messageClient.SendMessage(message);
            }

            GameEndReason reason = e.Win ? GameEndReason.Win : GameEndReason.Lose;  // определяем причину окончания игры

            foreach (var messageClient in Clients.Values)                           // игре конец
            {
                var message = new Message(
                    MessageType.GameResult,
                    gameResultsData: new GameResultsData(reason));                  // отправляем сообщение об окончании игры

                messageClient.SendMessage(message);
            }
        }
コード例 #2
0
ファイル: HungerGameService.cs プロジェクト: Chrisdbhr/NyuBot
        private async Task EndGame(SocketCommandContext context, GameEndReason reason, IReadOnlyCollection <Character> allCharacters, Character winner = null)
        {
            await Task.Delay(this._timeToWaitEachMessage);

            var embed = new EmbedBuilder {
                Title = "Fim de Jogo!"
            };


            switch (reason)
            {
            case GameEndReason.victory:
                embed.Color = Color.Green;

                // winner info
                if (winner == null)
                {
                    break;
                }

                embed.WithThumbnailUrl(winner.User.GetAvatarUrl());

                embed.AddField("Vencedor", winner.User.Mention, true);

                // kills
                if (winner.Kills > 0)
                {
                    embed.AddField("Mortes", $"Matou {winner.Kills} no total", true);
                }
                else
                {
                    embed.AddField("Mortes", $"Ganhou sem matar ninguém!", true);
                }

                break;

            case GameEndReason.timeOut:
                embed.Color = Color.DarkOrange;
                embed.AddField("Catástrofe!", "Uma bomba atômica caiu e matou a todos!");
                break;

            case GameEndReason.allDied:
            default:                     // all died
                embed.Color = Color.DarkOrange;
                embed.AddField("Todos morreram", "Ninguém ganhou");
                break;
            }

            // more kills
            var mostKill = allCharacters.Aggregate((i1, i2) => i1.Kills > i2.Kills ? i1 : i2);

            if (mostKill != null && mostKill.Kills > 1)
            {
                var name = mostKill.User.GetNameBoldSafe();
                embed.AddField("Matador", $"{name} matou mais nessa partida, com {mostKill.Kills} mortes");
            }

            await context.Channel.SendMessageAsync(string.Empty, false, embed.Build());
        }
コード例 #3
0
ファイル: GridHistory.cs プロジェクト: Bcante/minesweeper
 public GridHistory(float timeToClear, int correctFlags, int totalFlags, int totalMines, int xLength, int yLength, GameEndReason issue)
 {
     this.timeToClear  = timeToClear;
     this.correctFlags = correctFlags;
     this.totalFlags   = totalFlags;
     this.totalMines   = totalMines;
     this.xLength      = xLength;
     this.yLength      = yLength;
     this.issue        = issue;
 }
コード例 #4
0
ファイル: Scene_Game.cs プロジェクト: OggYiu/game_jam_project
    void CheckIfGameEnd()
    {
        if (game_end_count_down_ > 0 || is_game_ended_)
        {
            return;
        }

        if (GameSettings.GetInstance().TURN_LIMIT > 0 && age_ >= GameSettings.GetInstance().TURN_LIMIT)
        {
            game_end_count_down_ = game_end_interval_;
            game_end_reason_     = GameEndReason.time_out;
            return;
        }

        bool      only_human_existed   = true;
        bool      only_monster_existed = true;
        GameActor target_actor;

        for (int i = 0; i < entities_.Count; ++i)
        {
            target_actor = (GameActor)entities_[i];
            if (!target_actor.isAlive())
            {
                continue;
            }
            if (target_actor.Type() == ActorType.monster)
            {
                only_human_existed = false;
            }
            else
            {
                only_monster_existed = false;
            }
        }

        if (only_human_existed)
        {
            game_end_count_down_ = game_end_interval_;
            game_end_reason_     = GameEndReason.human_rulz;
        }
        else if (only_monster_existed)
        {
            game_end_count_down_ = game_end_interval_;
            game_end_reason_     = GameEndReason.monster_rulz;
        }
    }
コード例 #5
0
        public void SaveResults(GameEndReason reason = GameEndReason.ZombieDeath)
        {
            using (var repository = new UserRepository())
            {
                repository.Records.Add(new Record
                {
                    Name       = repository.User.Name,
                    Coins      = this.CoinController.Coins,
                    Time       = UnityEngine.Time.time - this.Time,
                    LaunchTime = DateTime.Now,
                    Reason     = reason
                });
            }

            this.MainMenu.ShowRecords();
            this.ClearLevel();
            GameObject.Destroy(this.gameObject);
        }
コード例 #6
0
    void EndGame(GameEndReason reason)
    {
        Debug.Log("Game Ended because of " + reason);
        CanShovel      = false;
        DragonCanCarry = false;
        DecreaseRage   = false;

        OnGameEnd?.Invoke(reason);

        switch (reason)
        {
        case GameEndReason.DragonRaged:
            SceneTransition.TransitionToScene(DragonDeathSceneIndex);
            break;

        case GameEndReason.PileFull:
            SceneTransition.TransitionToScene(PileDeathSceneIndex);
            break;
        }
    }
コード例 #7
0
ファイル: GameService.cs プロジェクト: mrtryhard/millebornes
 private void EndGame(Game game, GameEndReason reason)
 {
     game.EndDate   = DateTime.UtcNow;
     game.EndToken  = Guid.NewGuid();
     game.EndReason = reason;
 }
コード例 #8
0
 /// <summary>
 /// Creates game end information
 /// </summary>
 /// <param name="reason">Reason why the game has ended</param>
 /// <param name="players">The player pair of the game controller.</param>
 /// <param name="winnerColor">The player who has won the game, or None if there is no winner.</param>
 private GameEndInformation(GameEndReason reason, PlayerPair players, StoneColor winnerColor = StoneColor.None)
 {
     Reason       = reason;
     Players      = players;
     _winnerColor = winnerColor;
 }
コード例 #9
0
 private void StopInvoking(GameEndReason reason)
 {
     CancelInvoke(nameof(BringBackLootPeriodic));
 }
コード例 #10
0
 public GameEndEvent(GameEndReason gameEndReason)
 {
     this.GameEndReason = gameEndReason;
 }
コード例 #11
0
ファイル: GameService.cs プロジェクト: mrtryhard/millebornes
 private void EndGame(Game game, GameEndReason reason)
 {
     game.EndDate = DateTime.UtcNow;
     game.EndToken = Guid.NewGuid();
     game.EndReason = reason;
 }
コード例 #12
0
 public void notifyLoose(GameEndReason gameEndReason)
 {
     Debug.Log("perdu !!! " + gameEndReason);
     GameEnd();
 }
コード例 #13
0
 public GameResultsData(GameEndReason reason)
 {
     Reason = reason;
 }
コード例 #14
0
 public Result WithEndReason(GameEndReason reason)
 {
     EndReason = (int)reason;
     return(this);
 }
 public GameFinishedException(GameEndReason status) : base()
 {
     Status = status;
 }
コード例 #16
0
 public GameEndedEventArgs(GameEndReason reason)
 {
     Reason = reason;
 }
コード例 #17
0
ファイル: Scene_Game.cs プロジェクト: OggYiu/game_jam_project
    void CheckIfGameEnd()
    {
        if ( game_end_count_down_ > 0 || is_game_ended_ ) {
            return ;
        }

        if ( GameSettings.GetInstance().TURN_LIMIT > 0 && age_ >= GameSettings.GetInstance().TURN_LIMIT ) {
            game_end_count_down_ = game_end_interval_;
            game_end_reason_ = GameEndReason.time_out;
            return ;
        }

        bool only_human_existed = true;
        bool only_monster_existed = true;
        GameActor target_actor;
        for ( int i = 0; i < entities_.Count; ++i ) {
            target_actor = (GameActor)entities_[i];
            if ( !target_actor.isAlive() )
                continue;
            if ( target_actor.Type() == ActorType.monster ) {
                only_human_existed = false;
            } else {
                only_monster_existed = false;
            }
        }

        if ( only_human_existed ) {
            game_end_count_down_ = game_end_interval_;
            game_end_reason_ = GameEndReason.human_rulz;
        } else if ( only_monster_existed ) {
            game_end_count_down_ = game_end_interval_;
            game_end_reason_ = GameEndReason.monster_rulz;
        }
    }
コード例 #18
0
 void OnGameEnd(GameEndReason reason)
 {
     TopHighscore = Math.Max(TopHighscore, Score);
     LatestScore  = Score;
 }