protected virtual void HandleReceivedMessage(object sender, ServerLinkMessageEvent message)
{
switch (message.MessageType)
{
case MessageType.MsgSpawn:
{
MsgSpawnPacket packet = (MsgSpawnPacket)message.MessageData;
// only interested in it if it's us that is spawning
if (packet.Slot == this.Slot && State != PlayerState.Alive)
{
Spawn(packet.Position, packet.Rotation);
}
break;
}
case MessageType.MsgDeath:
{
MsgDeathPacket packet = (MsgDeathPacket)message.MessageData;
// only interested in it if it's us that was killed
if (packet.Slot == this.Slot)
{
Die(World.PlayerManager.GetPlayerBySlot(packet.Killer));
}
break;
}
case MessageType.MsgScore:
{
MsgScorePacket packet = (MsgScorePacket)message.MessageData;
// only interested in it if it's our new score
if (packet.Slot == this.Slot)
{
this.Score = packet.Score;
}
break;
}
case MessageType.MsgEndShot:
{
MsgEndShotPacket packet = (MsgEndShotPacket)message.MessageData;
// only interested if it's a shot by this player that's ending
if (packet.Slot == this.Slot)
{
try
{
Shots[packet.ShotSlot].End(packet.Explode, false);
}
catch (KeyNotFoundException e)
{
Log.Warn(e.Message);
Log.Warn(e.StackTrace);
}
}
break;
}
default:
break;
}
return;
}