public void SyncKey(Dictionary <string, object> data) { int serverFrameCount = 0; serverFrameCount = data.TryGetInt("framecount"); GameData.m_GameFrame = serverFrameCount; //补帧逻辑,后续添加 //if (serverFrameCount >= GameData.m_GameFrame) //{ FrameKeyData frameKeyData = new FrameKeyData(); frameKeyData.m_KeyDataList = new List <KeyData>(); frameKeyData.m_FrameCount = serverFrameCount; GameData.m_OperationEventList.Add(frameKeyData); if (data["keydatalist"] == null) { return; } object[] keydataArray = data["keydatalist"] as object[]; for (int i = 0; i < keydataArray.Length; i++) { Dictionary <string, object> keydata = keydataArray[i] as Dictionary <string, object>; KeyData m_KeyData = new KeyData(); m_KeyData.m_RoleId = keydata.TryGetInt("m_RoleId"); m_KeyData.m_Cmd = keydata.TryGetInt("m_Cmd"); m_KeyData.m_Parameter = keydata.TryGetString("m_Parameter"); frameKeyData.m_KeyDataList.Add(m_KeyData); m_BattleLogicManager.OnOperation(m_KeyData); LogMsg(string.Format("收到操作:{0},参数:{1},帧数:{2}", m_KeyData.m_Cmd.ToString(), m_KeyData.m_Parameter, GameData.m_GameFrame)); } //GameData.m_GameFrame += 1; //} }
/// <summary> /// 输入操作 /// </summary> /// <param name="cmd"></param> /// <param name="parameter"></param> public CWritePacket InputCmd(Cmd cmd, string parameter = null) { FrameKeyData frameKeyData = new FrameKeyData(); frameKeyData.m_KeyDataList = new List <KeyData>(); KeyData data = new KeyData(); data.m_RoleId = GameData.m_CurrentRoleId; data.m_Cmd = (int)cmd; data.m_Parameter = parameter; frameKeyData.m_KeyDataList.Add(data); Dictionary <string, object> packet = new Dictionary <string, object>(); packet.Add("msgid", NetProtocol.SYNC_KEY); packet.Add("roleid", GameData.m_CurrentRoleId); packet.Add("mobaKey", GameData.m_MobaKey); packet.Add("keydatalist", frameKeyData.m_KeyDataList); CWritePacket writePacket = new CWritePacket(NetProtocol.SYNC_KEY); StringBuilder builder = Jsontext.WriteData(packet); string json_Str = builder.ToString(); writePacket.WriteString(json_Str); return(writePacket); }