示例#1
0
文件: FspManager.cs 项目: mengtest/fs
        /// <summary>
        /// 添加FSP消息,问题:接受FSP消息时,是存储List<FspFrame> ,还是FspFrame
        /// 应该是List,正常情况一次只有一个帧消息,但是断线重连可以扩充为list
        /// </summary>
        public void AddServerFrameMsg(NetMessage msg)
        {
            FspMsgFrame frameMsg = msg as FspMsgFrame;

            if (frameMsg != null)
            {
                AddServerFrameUnit(frameMsg.m_frameData);
            }
        }
示例#2
0
文件: CCreature.cs 项目: mengtest/fs
        /// <summary>
        /// 指令对象转消息内容并发送
        /// </summary>
        /// <param name="cmd"></param>
        public void SendFspCmd(IFspCmdType cmd)
        {
            // 如果本地单机测试
            if (Client.Inst().isSingleTest)
            {
                PushCommand(cmd);
                return;
            }

            CmdFspEnum  type = cmd.GetCmdType();
            FspMsgFrame msg  = (FspMsgFrame)NetManager.Inst.GetMessage(eNetMessageID.FspMsgFrame);
            FspVKey     key  = new FspVKey();

            key.vkey     = (int)type;
            key.playerId = (uint)GetUid();
            switch (type)
            {
            case CmdFspEnum.eFspStopMove:
                msg.m_frameData.vkeys.Add(key);
                break;

            case CmdFspEnum.eFspMove:
                CmdFspMove moveCmd = cmd as CmdFspMove;
                key.args    = new int[2];
                key.args[0] = (int)(moveCmd.m_dir.x * 100);
                key.args[1] = (int)(moveCmd.m_dir.y * 100);
                msg.m_frameData.vkeys.Add(key);
                break;

            case CmdFspEnum.eFspAutoMove:
                CmdFspAutoMove amoveCmd = cmd as CmdFspAutoMove;
                key.args    = new int[2];
                key.args[0] = (int)(amoveCmd.m_pos.x * 100);
                key.args[1] = (int)(amoveCmd.m_pos.y * 100);
                Debug.Log("send :" + key.args[0] + "  " + key.args[1]);
                msg.m_frameData.vkeys.Add(key);
                break;

            case CmdFspEnum.eFspSendSkill:
                CmdFspSendSkill skill = cmd as CmdFspSendSkill;
                key.args    = new int[7];
                key.args[0] = (int)skill.m_casterUid;
                key.args[1] = (int)skill.m_skillIndex;
                key.args[2] = (int)skill.m_targetId;

                key.args[3] = (int)(skill.m_dir.x * 100);
                key.args[4] = (int)(skill.m_dir.y * 100);

                key.args[5] = (int)(skill.m_endPos.x * 100);
                key.args[6] = (int)(skill.m_endPos.y * 100);

                msg.m_frameData.vkeys.Add(key);
                break;
            }
            FspNetRunTime.Inst.SendMessage(msg);
        }
示例#3
0
        public void Send(FspFrame frame)
        {
            if (frame == null)
            {
                return;
            }

            if (!m_frameList.Contains(frame))
            {
                m_frameList.Enqueue(frame);
            }

            while (m_frameList.Count > 0)
            {
                FspFrame fsp = m_frameList.Peek();

                FspMsgFrame msg = (FspMsgFrame)NetManager.Inst.GetMessage(eNetMessageID.FspMsgFrame);
                msg.frameMsg = fsp;
                FspNetRunTime.Inst.Send(conn, msg);

                m_frameList.Dequeue();
            }
        }