private static void SendMessages(Coroner coroner) { var killerPlayer = coroner.KillerSpectator as Player; var killedPlayer = coroner.KilledSpectator as Player; var players = coroner.Game.DataEngine.Players; switch (coroner.DeathType) { default: throw new ApplicationException("Unexpected DeathType " + coroner.DeathType); case Coroner.DeathTypeType.Kill: CreateKillMessage(coroner.KillerSpectator, coroner.DamageInfo.Target.Pos); if (killerPlayer != null) killerPlayer.Messages.Add(new PlayerMessage(coroner.MessageToKiller, PlayerMessage.KILL_COLOR)); if (killedPlayer != null) killedPlayer.Messages.Add(new PlayerMessage(coroner.MessageToCorpse, PlayerMessage.DEATH_COLOR)); break; case Coroner.DeathTypeType.TeamKill: CreateTeamKillMessage(coroner.KillerSpectator, coroner.DamageInfo.Target.Pos); if (killerPlayer != null) killerPlayer.Messages.Add(new PlayerMessage(coroner.MessageToKiller, PlayerMessage.SUICIDE_COLOR)); if (killedPlayer != null) killedPlayer.Messages.Add(new PlayerMessage(coroner.MessageToCorpse, PlayerMessage.DEATH_COLOR)); break; case Coroner.DeathTypeType.Accident: CreateSuicideMessage(coroner.KilledSpectator, coroner.DamageInfo.Target.Pos); if (killedPlayer != null) killedPlayer.Messages.Add(new PlayerMessage(coroner.MessageToCorpse, PlayerMessage.SUICIDE_COLOR)); break; } var bystanderMessage = new PlayerMessage(coroner.MessageToBystander, PlayerMessage.DEFAULT_COLOR); foreach (var plr in coroner.GetBystandingPlayers(players)) plr.Messages.Add(bystanderMessage); if (coroner.SpecialMessage != null) { var specialMessage = new PlayerMessage(coroner.SpecialMessage, PlayerMessage.SPECIAL_KILL_COLOR); foreach (var plr in players) plr.Messages.Add(specialMessage); } }
public void TestBystandersSuicide() { var info = new DamageInfo(_gob1).Bind(_gob1); var coroner = new Coroner(info); var bystanders = coroner.GetBystandingPlayers(AllPlayers).ToArray(); Assert.AreEqual(new[] { _player2, _player3, _player4 }, bystanders); }
public void TestBystandersKillLastDamager() { _arena.TotalTime = TimeSpan.FromSeconds(11); var info = DamageInfo.Unspecified.Bind(_gob1DamagedBy2); var coroner = new Coroner(info); var bystanders = coroner.GetBystandingPlayers(new[] { _player1, _player2, _player3 }).ToArray(); Assert.AreEqual(new[] { _player3 }, bystanders); }
public void TestBystandersUnspecifiedDeath() { var info = DamageInfo.Unspecified.Bind(_gob1); var coroner = new Coroner(info); var bystanders = coroner.GetBystandingPlayers(AllPlayers).ToArray(); Assert.AreEqual(new[] { _player2, _player3, _player4 }, bystanders); }