private void GridWindow_OnMouseUp(object sender, MouseButtonEventArgs e) { if (okImageState == ImageState.Focus) { OkEvent?.Invoke(sender, new OkEventArgs()); } else if (cancelImageState == ImageState.Focus) { CancelEvent?.Invoke(sender, new OkEventArgs()); } }
/// <summary> /// Play the matching sound to a given emoji type. /// </summary> /// <param name="type">The emoji type to play the sound to.</param> /// <exception cref="ArgumentOutOfRangeException"></exception> private void PlayEmojiSound(EmojiType type) { switch (type) { case EmojiType.SUCCESS: if (SuccessEvent != null) { SuccessEvent.Raise(); } break; case EmojiType.ANGRY: if (AngryEvent != null) { AngryEvent.Raise(); } break; case EmojiType.OK: if (OkEvent != null) { OkEvent.Raise(); } break; case EmojiType.NO: if (NoEvent != null) { NoEvent.Raise(); } break; case EmojiType.BUBBLE: break; case EmojiType.LEVELUP: if (LevelUpEvent != null) { LevelUpEvent.Raise(); } break; case EmojiType.TWITTER: break; default: throw new ArgumentOutOfRangeException(nameof(type), type, null); } }
public void OnOk(IDictionary <string, string> values) { OkEvent?.Invoke(this, values); }
public IServerEvent ReadAndParse(TcpClient client) { TcpConnector connector = client.Connector; byte[] header = new byte[16]; int receiveSize = connector.Receive(header); if (receiveSize <= 0) { return(new ConnectionCloseEvent(connector)); } // magicの照合 bool isMagicCorrect = header.Take(2).SequenceEqual(magicNumber); if (!isMagicCorrect) { return(new UnknownEvent("Invalid magic.")); } // bodyの取得 var bodyLen = BitConverter.ToUInt32(header, 8); byte[] body = new byte[bodyLen]; connector.Receive(body); // hash magicの照合 var hashMagicBytes = hashAlgorithm.ComputeHash(body.Concat(header).ToArray()); var hashMagic = BitConverter.ToUInt32(hashMagicBytes.Reverse().ToArray(), 0); var isHashMagicCorrect = hashMagic == this.hashMagic; if (!isHashMagicCorrect) { return(new UnknownEvent("Invalid hash algorithm magic.")); } // event名の取得 var eventName = BinUtil.BytesToString(header.Skip(2).Take(6).ToArray()); IServerEvent serverEvent; switch (eventName) { case "WELCOM": serverEvent = new WelcomeEvent(); break; case "ROOMS ": serverEvent = new RoomsEvent(body, client); break; case "1ROOM ": serverEvent = new Room1Event(body); break; case "ROOMDL": serverEvent = new RoomDeleteEvent(); break; case "PING ": serverEvent = new PingEvent(body); break; case "START ": serverEvent = new StartEvent(body); break; case "READY ": serverEvent = new ReadyEvent(body); break; case "OKAY ": serverEvent = new OkEvent(body); break; case "PLAY ": serverEvent = new PlayEvent(body); break; case "ACTION": serverEvent = new ActionEvent(body); break; case "FINISH": serverEvent = new FinishEvent(); break; case "ERROR!": serverEvent = new ErrorEvent(); break; default: serverEvent = new UnknownEvent("Unknown event received"); break; } return(serverEvent); }