Ejemplo n.º 1
0
        //获取客户端位置请求的处理的代码
        public void OnSyncTransitionReceived(Client peer, OperationRequest operationRequest, SendParameters sendParameters)
        {
            //接收位置并保持起来
            byte[]   bytes = (byte[])DictTool.GetValue <byte, object>(operationRequest.Parameters, 1);
            object[] objs  = (object[])DictTool.GetValue <byte, object>(operationRequest.Parameters, 2);
            ProtoData.SyncTransitionC2S syncTransitionC2S = BinSerializer.DeSerialize <ProtoData.SyncTransitionC2S>(bytes);

            ProtoData.SyncTransitionS2C syncTransitionS2C = new ProtoData.SyncTransitionS2C();
            syncTransitionS2C.username         = peer.playerData.username;
            syncTransitionS2C.targetTransition = syncTransitionC2S.targetTransition;
            byte[] bytes2 = BinSerializer.Serialize(syncTransitionS2C);

            // 告诉其它客户端 当前客户端改变的动作
            foreach (Client tempPeer in ClientMgr.Instance.BattlePeerList)
            {
                if (!string.IsNullOrEmpty(tempPeer.playerData.username) && tempPeer != peer)
                {
                    EventData ed = new EventData((byte)MessageCode.SyncTransition);
                    Dictionary <byte, object> data = new Dictionary <byte, object>();
                    data.Add(1, bytes2);
                    data.Add(2, objs);
                    ed.Parameters = data;
                    tempPeer.SendEvent(ed, sendParameters); // 发送事件
                }
            }
        }
Ejemplo n.º 2
0
        //发起状态信息请求
        public void SendSyncTransitionRequest(FSMTransition transition, params object[] objs)
        {
            ProtoData.SyncTransitionC2S syncTransitionC2S = new ProtoData.SyncTransitionC2S();
            syncTransitionC2S.targetTransition = (int)transition;
            byte[] bytes = BinSerializer.Serialize(syncTransitionC2S);

            //把位置信息x,y,z传递给服务器端
            Dictionary <byte, object> data = new Dictionary <byte, object>();

            data.Add(1, bytes);
            data.Add(2, objs);

            PhotonEngine.Peer.OpCustom((byte)MessageCode.SyncTransition, data, true);//把Player状态传递给服务器
        }