internal static void RunSocketCommand(PlayCommand command, PlayEventCode eventCode = PlayEventCode.None, Action <PlayCommand, PlayResponse> done = null) { var encoded = command.SokcetEncode; Play.Log("socket=>" + encoded); Play.RoomConnection.Send(encoded); var repsonseListener = new SocketResponseListener() { Command = command, Done = done, EventCode = eventCode }; Play.SubscribeNoticeReceived(repsonseListener); //Action<string> onMessage = null; //LogCommand(command, null, CommandType.WebSocket); //onMessage = (messgae) => //{ // var messageJson = Json.Parse(messgae) as IDictionary<string, object>; // if (messageJson.Keys.Contains("i")) // { // if (command.Body["i"].ToString() == messageJson["i"].ToString()) // { // RoomConnection.OnMessage -= onMessage; // var response = new PlayResponse(messageJson); // LogCommand(null, response, CommandType.WebSocket); // if (response.IsSuccessful) // { // if (done != null) // { // done(command, response); // } // } // if (eventCode != PlayEventCode.None) // { // var next = PlayStateMachine.Next(eventCode, response); // if (response.IsSuccessful) // { // Play.InvokeEvent(next); // } // else // { // Play.InvokeEvent(next, response.ErrorCode, response.ErrorReason); // } // } // } // } //}; //RoomConnection.OnMessage += onMessage; }
static Play() { peer = new PlayPeer(); Player = new Player(peer); lobby = new PlayLobby(); EevntMessageQueue = new Queue <PlayEventMessage>(); Play.OnPlayEvent += InvokeEvent; Play.SubscribeNoticeReceived(new PlayRPCListener()); Play.SubscribeNoticeReceived(new RoomJoinListener()); Play.SubscribeNoticeReceived(new RoomOnlineListener()); Play.SubscribeNoticeReceived(new RoomOfflineListener()); Play.SubscribeNoticeReceived(new RoomUpdateListener()); Play.SubscribeNoticeReceived(new RoomLeftListener()); Play.SubscribeNoticeReceived(new RoomMasterClientSwitchListener()); Play.SubscribeNoticeReceived(new PlayerPropertyListener()); Play.SubscribeNoticeReceived(new RoomOpenListener()); Play.SubscribeNoticeReceived(new RoomVisibleListener()); Play.StartListen(); Play.RegisterSynchronousObjectType <PlayRoom>(); Play.RegisterSynchronousObjectType <Player>(); Play.RegisterSynchronousObjectType <PlayLobby>(); }