/// <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); } }
/// <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); }
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(); } }