protected void OnErrorMessage(MessageEventArgs e) { if (ErrorMessage != null) { ErrorMessage(this, e); } }
protected void OnNewMessage(MessageEventArgs e) { if (NewMessage != null) { NewMessage(this, e); } }
protected void GetMessage(object sender, MessageEventArgs e) { if (!_state.ListenMessage(e.IpAdress)) return; string[] msg = e.Message.Split('_'); switch (msg[0]) { case "hello": { _state.FirstClick(StateController.State.OnOther, e.IpAdress); OnNewGame(new MessageEventArgs(msg[1])); break; } case "ok": { if (msg.Length == 3) { _state.SecondClick(StateController.State.OnThis,e.IpAdress); if (_state.GameState.Check) OnConfirmGame(new MessageEventArgs(msg[2])); } } break; case "you": Send("ok"); break; default: int y, x; bool parseY = int.TryParse(msg[0], out y); bool parseX = int.TryParse(msg[1], out x); if (parseX && parseY && msg.Length == 2) { OnNextTurn(new TurnEventArgs(x, y,false)); } break; } }
/// <summary> /// Предложение игры от другого пользователя /// </summary> private void ProtocolOnNewGame(object sender, MessageEventArgs e) { bool? res = _view.NewGameProposal(e.Message); if (res != null) { //на случай если с тем же игроком уже играли. //завершить игру нельзя т.к. потеряется ip предложившего _model.EmptyGame(); _view.Repaint(); var selectDagger = (bool) res; string strType = (selectDagger) ? "2" : "1"; _protocol.PostContinue(strType); StartGame(selectDagger); } }
private void ProtocolOnErrorMessage(object o, MessageEventArgs messageEventArgs) { _protocol.CloseGame(); _model.EmptyGame(); _view.Repaint(); _view.Say(Resources.Game_ProtocolOnErrorMessage_ClientAborted); }
/// <summary> /// Реакция на приход сообщения ok_ip_{1|2} /// </summary> private void ProtocolOnConfirmGame(object sender, MessageEventArgs e) { //текущий клиент ходит крестиком, если другой клиент выбрал нолик т.е. "1" bool thisDagger = e.Message == "1"; StartGame(thisDagger); //res == true оппонент играет крестиками, значит текущий игрок ноликами (state == false) //res == true оппонент ходит первым, текущий игрок вторым }
public WorkerException(MessageEventArgs msg) : base(msg.Message) { Content = msg; }
private void WorkerError(object sender, MessageEventArgs e) { if (_state.GameState.OtherIP != null && _state.GameState.OtherIP == e.IpAdress) { if (ErrorMessage != null) ErrorMessage.Invoke(sender, e); } }
protected void OnNewGame(MessageEventArgs e) { Action<object, MessageEventArgs> handler = NewGame; if (handler != null) handler(this, e); }