public void HandleMessage(object sender, Message message)
{
if (message.Kind == Message.MessageType.InputMessage)
{
// Pass input messages to the respective ball controllers
InputMessage msg = (InputMessage)message;
// When using turn mode in hot-seat, direct all input messages to the active player
if (Session.UsePlayerTurns && Session.ActivePlayer != null && ActiveControllers.ContainsKey(Session.ActivePlayer))
{
ActiveControllers[Session.ActivePlayer]?.HandleMessage(sender, msg);
}
// Otherwise, redirect input messages to the player given by msg.Player
else if(msg.Player != null && ActiveControllers.ContainsKey(msg.Player) && ActiveControllers.ContainsKey(msg.Player))
{
ActiveControllers[msg.Player]?.HandleMessage(sender, msg);
}
}
if (message.Kind == Message.MessageType.LogicMessage)
{
LogicMessage msg = (LogicMessage)message;
if (msg.Kind == LogicMessage.MessageType.GameMessage)
{
Enabled = !Enabled;
if (Enabled && Game.Match.State != SessionState.Finished)
Game.Match.State = SessionState.Running;
else
{
Ballz.The().Services.GetService<SoundControl>().PlaySound(SoundControl.DeclineSound);
Game.Match.State = SessionState.Paused;
}
}
}
}