Beispiel #1
0
        /// <summary>
        /// create a room with config and name.
        /// </summary>
        /// <param name="roomConfig">config of Room</param>
        /// <param name="roomName">name of Room</param>
        public static void CreateRoom(PlayRoom.RoomConfig roomConfig, string roomName = null)
        {
            var createRoomCommand = new PlayCommand()
            {
                Body = new Dictionary <string, object>()
                {
                    { "cmd", "conv" },
                    { "op", "start" },
                },
            };

            if (string.IsNullOrEmpty(roomName))
            {
                roomName = PlayRoom.RandomRoomName(24);
            }

            RunSocketCommand(createRoomCommand, done: (request, response) =>
            {
                // get game server address from game router
                var roomRemoteSecureAddress = response.Body["secureAddr"] as string;
                var roomRemoteAddress       = response.Body["addr"] as string;

                // open websocket connection with game server
                DoConnectToGameSever(roomRemoteSecureAddress, () =>
                {
                    Play.InvokeEvent(PlayEventCode.OnCreatingRoom);
                    // create room at game server
                    peer.SessionCreateRoom(roomName, roomConfig, (room) =>
                    {
                        Play.Room = room;
                        Play.InvokeEvent(PlayEventCode.OnCreatedRoom);
                        Play.InvokeEvent(PlayEventCode.OnJoinedRoom);
                    });
                });
            });
        }