private void ElementChanged(object sender, ElementChangingEventArgs e) { var x = e.X; var y = e.Y; var value = e.Value; if (x > 8 || y > 8 || value > 9 || _data[x, y].IsPermanent) { return; } _data[x, y].Value = value; IMessage message = new ElementChangedMessage(x, y, value); BroadcastMessage(message); if (SudokuFieldIsFull()) { if (Check()) { IMessage messageWin = new WinMessage(); BroadcastMessage(messageWin); } } }
private void ProcessMessage(int messageId) { if (messageId == ELEMENT_CHANGE_MESSAGE_ID) { var stream = new NetworkStream(_socket); var bytes = stream.ReadNBytes(ELEMENT_CHANGE_MESSAGE_SIZE); var args = ElementChangingEventArgs.Deserialize(this, bytes); ElementChanging?.Invoke(this, args); } }
private void ReportChanging(ElementChangingEventArgs args) { if (IsSystemEvent(args)) { return; } else { using (ExposeReadOnly()) { foreach (var kvp in _changingListeners) { if (kvp.Key(args)) { kvp.Value(args); } } } } }