Пример #1
0
 public void init()
 {
     SFUtils.log("正在连接GameServer...");
     m_sendQueue      = new Queue <SFBaseRequestMessage>();
     m_recvQueue      = new Queue <string>();
     dispatcher       = new SFEventDispatcher(this);
     m_client         = new SFTcpClient();
     m_ping           = -1;
     m_heartbeatTimer = SFCommonConf.instance.heatbeatInterval;
     m_client.init(SFCommonConf.instance.serverIp, SFCommonConf.instance.serverPort, onRecvMsg, ret =>
     {
         if (ret == 0)
         {
             SFUtils.log("连接GameServer成功");
         }
         else
         {
             SFUtils.logWarning("连接GameServer失败");
         }
         dispatcher.dispatchEvent(SFEvent.EVENT_NETWORK_READY, new SFSimpleEventData(ret));
     });
     m_client.dispatcher.addEventListener(this, SFEvent.EVENT_NETWORK_INTERRUPTED, e =>
     {
         dispatcher.dispatchEvent(e);
     });
     dispatcher.addEventListener(this, SFResponseMsgSocketHeartbeat.pName, onHeartbeat);
 }
Пример #2
0
        void onOk(SFEvent e)
        {
            m_view.lblTitle.text = "Button Clicked!";
            m_view.btnOk.SetText("修改了button的Text");
            var md5 = SFUtils.getMD5("Abcd.1234@BA!");

            SFUtils.log(SFUtils.getMD5(md5));
        }
Пример #3
0
        void onHeartbeat(SFEvent e)
        {
            var now  = DateTime.Now;
            var diff = now.Subtract(m_heartbeatStartTime);

            m_ping = diff.TotalMilliseconds;
            SFUtils.log("ping: {0:F2}", m_ping);
            dispatcher.dispatchEvent(SFEvent.EVENT_NETWORK_PING);
        }
Пример #4
0
        void onLifeChange(SFEvent e)
        {
            var data = e.data as SFUnitLifeChange;

            if (data.uid == SFUserData.instance.uid)
            {
                m_view.proLife.setProgress(1.0f * data.curLife / data.maxLife);
                SFUtils.log("当前血量{0}/{1}", data.curLife, data.maxLife);
            }
        }
Пример #5
0
        public void update(float dt)
        {
            // 发送队列
            while (m_sendQueue.Count > 0)
            {
                SFBaseRequestMessage req = m_sendQueue.Dequeue();
                string data = JsonUtility.ToJson(req);
                m_client.sendData(data);
                if (req.pid != 0 && req.pid != 3)
                {
                    SFUtils.log("Sending message[{0}]: {1}", data.Length, data);
                }
            }

            // 接收队列
            while (m_recvQueue.Count > 0)
            {
                string data = m_recvQueue.Dequeue();
                SFBaseResponseMessage obj = null;
                try
                {
                    obj = JsonUtility.FromJson <SFBaseResponseMessage>(data);
                }
                catch
                {
                }
                if (obj != null)
                {
                    handleProtocol(obj.pid, data);
                    if (obj.pid != 0 && obj.pid != 3 && obj.pid != 4)
                    {
                        SFUtils.log("收到信息:协议号={0}\ndata={1}", obj.pid, data);
                    }
                }
                else
                {
                    SFUtils.logWarning("不能解析的信息格式:\n" + data);
                }
            }

            // 心跳包
            m_heartbeatTimer += dt;
            if (m_heartbeatTimer > SFCommonConf.instance.heatbeatInterval)
            {
                m_heartbeatTimer -= SFCommonConf.instance.heatbeatInterval;
                sendHeartbeat();
            }
        }
Пример #6
0
 void onSend(SFEvent e)
 {
     if (m_mgr.isReady())
     {
         string content = m_view.txtMsg.text;
         SFUtils.log("正在发送 " + content);
         SFRequestMsgUnitLogin req = new SFRequestMsgUnitLogin();
         req.uid        = "abc";
         req.loginOrOut = 1;
         m_mgr.sendMessage(req);
     }
     else
     {
         m_infoMsg = "服务器未连接";
     }
 }
Пример #7
0
 /// <summary>
 /// 移除来自某对象的所有监听
 /// </summary>
 /// <param name="target">Target.</param>
 public void removeAllEventListenersWithTarget(object target)
 {
     foreach (var item in m_dictListeners)
     {
         var pairs = item.Value;
         for (int i = pairs.Count - 1; i >= 0; --i)
         {
             var pair = pairs[i];
             if (pair.listener.GetHashCode() == target.GetHashCode())
             {
                 pairs.Remove(pair);
             }
         }
     }
     SFUtils.log("removeAllEventListenersWithTarget by " + target.ToString());
 }
Пример #8
0
        void onRemoteUsers(SFEvent e)
        {
            var data = e.data as SFResponseMsgNotifyRemoteUsers;

            if (data.retCode == 0)
            {
                SFBattleData.instance.enterBattle_mapId       = data.mapId;
                SFBattleData.instance.enterBattle_remoteUsers = data.users;
                SFBattleData.instance.enterBattle_posX        = data.posX;
                SFBattleData.instance.enterBattle_posY        = data.posY;
                SFBattleData.instance.enterBattle_rotation    = data.rotation;
                SFBattleData.instance.enterBattle_maxLife     = data.maxLife;
                SFBattleData.instance.enterBattle_initRunTime = data.runTime;

                SFUtils.log("玩家初始坐标:({0}, {1}),rot={2}", data.posX, data.posY, data.rotation);
            }
        }
Пример #9
0
        /// <summary>
        /// 关闭TCP客户端
        /// </summary>
        public void uninit()
        {
            if (m_socket != null)
            {
                if (m_socket.Connected)
                {
                    m_socket.Disconnect(false);
                }
                m_socket.Close();
                m_socket = null;
            }
            m_isReady = false;
            long  endTime   = SFUtils.getTimeStampNow();
            float totalTime = endTime - m_startTime;

            if (totalTime < 1)
            {
                totalTime = 1;
            }
            SFUtils.log("共发送{0:F2} KB, 共接收{0:F2} KB", totalSendLength / 1024.0, totalRecvLength / 1024.0);
            SFUtils.log("平均流量:{0:F2} KB/sec", 1.0 * (totalSendLength + totalRecvLength) / totalTime / 1024.0);
            SFUtils.log("连接已关闭");
        }
Пример #10
0
 public void onViewRemoved()
 {
     SFUtils.log("SFTestView被关闭了");
 }