示例#1
0
 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);
     }
 }
示例#2
0
 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);
 }
示例#3
0
 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);
 }
示例#4
0
 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);
 }