コード例 #1
0
    public void CollectAllRpcFuncs()
    {
        Assembly[] assemblies = System.AppDomain.CurrentDomain.GetAssemblies();

        List <MethodInfo> methods = new List <MethodInfo>();

        foreach (var assembly in assemblies)
        {
            var methodsinass = assembly.GetTypes().SelectMany(x => x.GetMethods())
                               .Where(y => y.GetCustomAttributes()
                                      .OfType <NGRPCMethod>().Any()).ToArray();

            methods.AddRange(methodsinass);
            foreach (var method in methodsinass)
            {
                if (name2Method.ContainsKey(method.Name))
                {
                    NGLogger.LogError("Error happens when collecting RFC methods.");
                }
                else
                {
                    name2Method.Add(method.Name, method);
                }
            }
        }
    }
コード例 #2
0
 private void OnDestroy()
 {
     if (Instance == this)
     {
         NGLogger.LogDebug("Socket is Closed.");
         Socket.Close();
     }
 }
コード例 #3
0
ファイル: NGRoom.cs プロジェクト: mengtest/netgo-unity-client
        public void ResponseProcessor(ResponseOperationMessage rmsg)
        {
            switch (rmsg.MsgType)
            {
            case MessageType.CreateRoom:
                var crParams = rmsg.CrrParams;
                switch (crParams.ReturnValue)
                {
                case (uint)ResponseMessageInfo.CreateRoomSuccess:
                    LocalPlayer = new NGPlayer(true, crParams.PeerId);
                    NGEvent.OnCreatedRoom();
                    break;

                case (uint)ResponseMessageInfo.CreateRoomAlreadyExist:
                    NGEvent.OnCreateRoomFailed(crParams.Message);
                    break;
                }
                break;

            case MessageType.JoinRoom:

                var jrrParams = rmsg.JrrParams;

                switch (jrrParams.ReturnValue)
                {
                case (uint)ResponseMessageInfo.JoinRoomSuccess:
                    NGLogger.LogDebug("JoinRoomSuccess responsee");
                    LocalPlayer = new NGPlayer(true, jrrParams.PeerId);
                    NGEvent.OnJoinedRoom();
                    break;

                case (uint)ResponseMessageInfo.JoinRoomAlreadyInRoom:
                    NGEvent.OnJoinRoomFailed();
                    break;

                case (uint)ResponseMessageInfo.JoinRoomFull:
                    NGEvent.OnJoinRoomFailed();
                    break;

                default:
                    NGLogger.LogError("The return value from JoinRoom or JoinOrCreateRoom" + jrrParams.ReturnValue + " cannot be identified.");
                    break;
                }
                break;

            case MessageType.LeaveRoom:
                var lrParams = rmsg.LrrParams;
                switch (lrParams.ReturnValue)
                {
                case (uint)ResponseMessageInfo.LeaveRoomSuccess:

                    NGEvent.OnLeftRoom();
                    break;
                }
                break;
            }
        }
コード例 #4
0
ファイル: NGRoom.cs プロジェクト: mengtest/netgo-unity-client
        public NGPlayer GetNGPlayer(uint peerid)
        {
            NGPlayer rv = null;

            if (!ID2OtherPlayers.TryGetValue(peerid, out rv))
            {
                NGLogger.LogWarning("NGPlayer with ID" + peerid.ToString() + " cannot be found.");
            }

            return(rv);
        }
コード例 #5
0
        public void DeserializeViewComponent(NGViewStream stream)
        {
            if (IsSyncPosition)
            {
                NGLogger.LogInfo("position");
                this.transform.position = (NGVector3)stream.Receive();
            }

            if (IsSyncRotation)
            {
                NGLogger.LogInfo("IsSyncRotation");
                this.transform.rotation = (NGQuaternion)stream.Receive();
            }
        }
コード例 #6
0
 void Update()
 {
     // Touch notifications
     if (Input.touchCount > 0)
     {
         Touch touch = Input.GetTouch(0);
         if (touch.phase != TouchPhase.Began &&
             touch.phase != TouchPhase.Moved &&
             touch.phase != TouchPhase.Stationary)
         {
             SendOnClick(touch.position);
         }
     }
     else
     {
         if (Input.GetMouseButtonUp(0))
         {
             NGLogger.LogDebug("on Click");
             SendOnClick(Input.mousePosition);
         }
     }
 }
コード例 #7
0
 public override void OnConnected()
 {
     Status = SocketStatus.Connected;
     NGLogger.LogDebug("On connected");
 }
コード例 #8
0
        private void ProcessRecieveData(byte[] data)
        {
            //NGLogger.LogInfo("Receive a message");
            Stream stream = new MemoryStream(data);

            ReceiveMessage message = ReadMessage <ReceiveMessage>(stream);

            switch (message.ReceiveMsgType)
            {
            case ReceiveMessageType.ResponseSocketStatus:
                switch (message.RssMsg.SStatus)
                {
                case SocketStatus.Connected:
                    NGNetwork.Status = SocketStatus.Connected;
                    NGNetworkEvent.OnConnected();
                    break;
                }
                break;

            case ReceiveMessageType.ResponseOperation:

                ResponseOperationMessage rmsg = message.RoMsg;
                NGInterface.CurrentRoom().ResponseProcessor(rmsg);
                break;

            case ReceiveMessageType.Forward:

                ForwardMessage fmsg   = message.FMsg;
                uint           peerId = fmsg.PeerId;
                switch (fmsg.MsgType)
                {
                case MessageType.JoinRoom:
                    var      jrParams  = fmsg.JrfParams;
                    NGPlayer newplayer = new NGPlayer(false, peerId);
                    NGInterface.CurrentRoom().AddPlayer(newplayer);
                    NGEvent.OnOtherPlayerEnteredRoom(newplayer);
                    break;

                case MessageType.JoinOrCreateRoom:
                    var      jocParams = fmsg.JocrfParams;
                    NGPlayer player    = new NGPlayer(false, peerId);
                    NGInterface.CurrentRoom().AddPlayer(player);
                    NGEvent.OnOtherPlayerEnteredRoom(player);
                    break;

                case MessageType.LeaveRoom:
                    var lParams = fmsg.LrfParams;
                    NGLogger.LogDebug("LeaveRoom" + peerId);

                    var leaveplayer = NGInterface.CurrentRoom().GetNGPlayer(peerId);
                    NGEvent.OnOtherPlayerLeftRoom(leaveplayer);
                    Destroy(leaveplayer.GO);
                    NGInterface.CurrentRoom().RemovePlayer(peerId);

                    break;

                case MessageType.Rpc:
                    var     rpcparams = fmsg.RfParams;
                    NGAny[] objs      = NGProtobufConverter <NGAny> .RepeatedField2Array(rpcparams.Parameters);

                    NGRPC.ExcuteRPC(rpcparams.ViewID, rpcparams.MethodName, objs);
                    break;

                case MessageType.Instantiation:
                    var i   = fmsg.IfParams;
                    var ids = NGProtobufConverter <uint> .RepeatedField2Array(i.ViewIDs);

                    NGInterface.CurrentRoom().Instantiate(peerId, false, ids, i.PrefabName, i.Position, i.Rotation);
                    break;

                case MessageType.ViewSync:
                    var             viewsyncparams = fmsg.VsfParams;
                    var             viewParams     = viewsyncparams.VsdParams;
                    NGViewContainer container      = new NGViewContainer();
                    container.DeserializeAll(viewParams);
                    break;

                case MessageType.CustomEvent:
                    var ceParams = fmsg.CeParams;
                    NGEvent.OnCustomEvent(ceParams.EventID, NGProtobufConverter <NGAny> .RepeatedField2Array(ceParams.CustomData));
                    break;
                }
                break;
            }
        }
コード例 #9
0
 public override void OnJoinedRoom()
 {
     NGLogger.LogInfo("OnJoinedRoom");
     SceneManager.LoadScene(LobbyMenu.CubeSceneName);
 }
コード例 #10
0
 public override void OnOtherPlayerLeftRoom(NGPlayer player)
 {
     NGLogger.LogInfo("OnOtherPlayerLeftRoom" + player.mPeerId);
 }
コード例 #11
0
 public override void OnLeftRoom()
 {
     NGLogger.LogInfo("onLeftroom");
 }
コード例 #12
0
    void DrawLobbyMenu()
    {
        float rectwidth  = 500f;
        float rectheight = 900f;

        Rect rect = new Rect(Screen.width / 2 - rectwidth / 2,
                             Screen.height / 2 - 100f, rectwidth, rectheight);

        // Show a half-transparent box around the upcoming UI
        GUI.color = new Color(0f, 0f, 0f, 1f);
        GUI.Box(GUIUtils.ProcessRect(rect, 8f), "");
        GUI.color = Color.white;


        float buttonwidth  = rectwidth;
        float buttonheight = 80;

        GUILayoutOption[] buttonoptions = { GUILayout.Width(buttonwidth), GUILayout.Height(buttonheight) };

        float textwidth  = 270;
        float textheight = 60;

        GUILayoutOption[] textoptions = { GUILayout.Width(textwidth), GUILayout.Height(textheight) };


        GUILayout.BeginArea(rect);
        {
            GUILayout.Space(20);

            GUILayout.BeginHorizontal();
            GUILayout.Label("Room Name:");
            mRoomName = GUILayout.TextField(mRoomName, textoptions);
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("Room Capacity:");
            string roomcapacity = "10";
            roomcapacity = GUILayout.TextField(roomcapacity, textoptions);
            GUILayout.EndHorizontal();

            GUILayout.Space(30);

            if (!uint.TryParse(roomcapacity, out mRoomCapacity))
            {
                NGLogger.LogError("The Room Capacity cannot be parsed to uint");
            }
            if (GUILayout.Button("Join Or Create Room", buttonoptions))
            {
                NGInterface.JoinOrCreateRoom(mRoomName, mRoomCapacity);
            }
            GUILayout.Space(5);
            if (GUILayout.Button("Create Room", buttonoptions))
            {
                NGInterface.CreateRoom(mRoomName, mRoomCapacity);
            }
            GUILayout.Space(5);

            // GUILayout.BeginHorizontal();
            // GUILayout.Space((rectwidth - buttonwidth) / 2);
            if (GUILayout.Button("Join Room", buttonoptions))
            {
                NGInterface.JoinRoom(mRoomName);
            }
            //GUILayout.EndHorizontal();

            GUI.backgroundColor = Color.white;

            if (!string.IsNullOrEmpty(mMessage))
            {
                GUILayout.Label(mMessage);
            }
        }
        GUILayout.EndArea();
    }
コード例 #13
0
 public virtual void OnJoinRoomFailed()
 {
     NGLogger.LogDebug("Join room failed ");
 }
コード例 #14
0
 public virtual void OnJoinedRoom()
 {
     NGLogger.LogDebug("On Joined Room. ");
 }
コード例 #15
0
 public virtual void OnGreateRoomFailed(string errmsg)
 {
     NGLogger.LogDebug("Create room failed " + errmsg);
 }