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); } }
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()); }
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; }
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; } }
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); }
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; } }
private void EndGame(Game game, GameEndReason reason) { game.EndDate = DateTime.UtcNow; game.EndToken = Guid.NewGuid(); game.EndReason = reason; }
/// <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; }
private void StopInvoking(GameEndReason reason) { CancelInvoke(nameof(BringBackLootPeriodic)); }
public GameEndEvent(GameEndReason gameEndReason) { this.GameEndReason = gameEndReason; }
public void notifyLoose(GameEndReason gameEndReason) { Debug.Log("perdu !!! " + gameEndReason); GameEnd(); }
public GameResultsData(GameEndReason reason) { Reason = reason; }
public Result WithEndReason(GameEndReason reason) { EndReason = (int)reason; return(this); }
public GameFinishedException(GameEndReason status) : base() { Status = status; }
public GameEndedEventArgs(GameEndReason reason) { Reason = reason; }
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; } }
void OnGameEnd(GameEndReason reason) { TopHighscore = Math.Max(TopHighscore, Score); LatestScore = Score; }