protected override void SendMessage(Message msg) { /*$EMPTY$*/ }
/// <summary> /// Обрабатывает сообщение. /// Для добавления сообщения в очередь нужно использовать процедуру <c>PostMessage()</c>. /// </summary> /// <param name="msg">Обрабатываемое сообщение.</param> protected void ProccessMessage(Message msg) { switch (msg.Type) { case Message.MoveMessageType: { MoveMessage m = (MoveMessage)msg; OnMove(m.DX, m.DY); } break; case Message.WallMessageType: { WallMessage m = (WallMessage)msg; OnSetWall(m.I, m.J, m.Style); } break; case Message.ChangeTurnType: { OnChangeTurn(); } break; } }
/// <summary> /// Отправить сообщение противнику. /// Контракт: /// завершение этого метода гарантирует, что сообщение доставлено; /// берёт на себя преобразование данных сообщения, если это необходимо. /// </summary> /// <param name="msg"></param> protected abstract void SendMessage(Message msg);
/// <summary> /// Отправить сообщение в очередь на обработку. /// </summary> /// <param name="msg">Сообщение, что нужно обработать.</param> public void PostMessage(Message msg) { messages.Enqueue(msg); StartProccesMessages(); }