/* @brief:请求移动消息 * @param: iModel ,移动模式 * @param: fsrcX ,移动时位置点X * @param: fsrcZ ,移动时位置点Z * @param: fReqX ,请求目标点X * @param: fReqZ ,请求目标点Z * @return void */ public static bool RequstMove(int iModel, float fsrcX, float fsrcZ, float fReqX, float fReqZ) { if (mGameSender == null) { return(false); } VarList args = VarList.GetVarList(); args.AddInt(iModel); args.AddFloat(fsrcX); args.AddFloat(fsrcZ); args.AddFloat(fReqX); args.AddFloat(fReqZ); VarList ret = VarList.GetVarList(); if (mGameSender.RequestMove(ref args, ref ret)) { args.Collect(); bool bref = ret.GetBool(0); ret.Collect(); return(bref); } args.Collect(); return(false); }
/// <summary> /// 请求停止 /// </summary> /// <param name="iModel"></param> /// <param name="fsrcX"></param> /// <param name="fsrcY"></param> /// <param name="fsrcZ"></param> /// <param name="fReqX"></param> /// <param name="fReqZ"></param> /// <param name="fMoveSpeed"></param> /// <param name="strInfo"></param> /// <returns></returns> public static bool RequstStop(float fsrcX, float fsrcZ, float orient) { if (mGameSender == null) { return(false); } VarList args = VarList.GetVarList(); args.AddInt(0); args.AddFloat(fsrcX); args.AddFloat(fsrcZ); args.AddFloat(orient); VarList ret = VarList.GetVarList(); if (mGameSender.RequestMove(ref args, ref ret)) { args.Collect(); //bool bret = ret.GetBool(0); //ret.Collect(); //return bret; return(true); } args.Collect(); return(false); }
public int OnSockConnectFail(UserSock sock, string addr, int port) { LogSystem.Log("OnSockConnectFail"); PromptManager.Instance.ShowPromptUI(XmlManager.Instance.GetCommonText("System0001")); m_gamesock.SetConnected(false); if (null != m_gamesock.m_lgsockcall) { m_gamesock.m_lgsockcall.on_connect_failed(addr, port); return(1); } else { if (m_gamesock != null) { VarList args = VarList.GetVarList(); args.AddString(addr); args.AddInt(port); m_gamesock.Excute_CallBack("on_connect_fail", args); args.Collect(); return(1); } else { LogSystem.LogError("Error, OnSockConnectFail gamesock is null"); } return(0); } }
public int OnSockConnected(UserSock sock, string addr, int port) { LogSystem.Log("OnSockConnected"); m_gamesock.SetConnected(true); if (null != m_gamesock.m_lgsockcall) { m_gamesock.m_lgsockcall.on_connected(addr, port); return(1); } else { if (m_gamesock != null) { VarList args = VarList.GetVarList(); args.AddString(addr); args.AddInt(port); m_gamesock.Excute_CallBack("on_connected", args); args.Collect(); return(1); } else { LogSystem.LogError("Error, OnSockConnected gamesock is null"); } return(0); } }
public bool RecieveData(byte[] data, int iSize) { if (iSize > 65536 - miIndex) { return(false); } Array.Copy(data, 0, mBuffer, miIndex, iSize); int iMax = miIndex + iSize; int iStart = miIndex > 0 ? miIndex - 1 : 0; ///防止上次接收最后一个是\r miIndex += iSize; for (int i = iStart; i < iMax; i++) { if (mBuffer[i] == '\r' && mBuffer[i + 1] == '\n') { miIndex = 0; string strText = System.Text.Encoding.ASCII.GetString(mBuffer, 0, i); VarList args = VarList.GetVarList(); if (TextProtocal.DeocdeMessage(strText, ref args)) { if (monRecieve != null) { monRecieve(this, ref args); } } args.Collect(); return(true); } } return(false); }
//2秒断线重连 private void OnRestNet() { //断线重连需要 一直显示转圈 不显示提示 //SystemWaitPanel.Start(99999999); VarList varlist = VarList.GetVarList(); //ConnectStage.on_connect_block(varlist); varlist.Collect(); }
private bool InnerRecvProperty(GameObj obj, LoadArchive loadAr, int count, bool change) { if (obj == null) { return(false); } try { Var key = Var.zero; for (int i = 0; i < count; i++) { int index = 0; if (!loadAr.ReadInt16(ref index)) { return(false); } if (index >= mPropertyTable.Count) { return(false); } PropData propData = GetPropDataByIndex(index); propData.nCount = propData.nCount + 1; if (!InnerParsePropValue(loadAr, propData.nType, ref key)) { return(false); } if (!obj.UpdateProperty(ref propData.strName, key)) { return(false); } if (change) { VarList argList = VarList.GetVarList(); argList.AddString(obj.GetIdent()); argList.AddString(propData.strName); Excute_CallBack("on_object_property_change", argList); argList.Collect(); } } } catch (System.Exception ex) { LogSystem.Log("GameReceiver.InnerRecvViewProperty() Exception:", ex.ToString()); } return(true); }
//发送客户端自定义消息 public static bool SendCustom(CustomHeader iMSG, params object[] objects) { if (mGameSender == null) { return(false); } VarList args = VarList.GetVarList(); args.AddInt((int)iMSG); for (int i = 0; i < objects.Length; i++) { AddObjectArgs(ref args, ref objects[i]); } if (mGameSender.Custom(ref args)) { args.Collect(); return(true); } args.Collect(); return(false); }
public void ClearRow() { try { for (int i = 0; i < rowSet.Count; i++) { VarList varlit = rowSet[i]; varlit.Collect(); } rowSet.Clear(); } catch (Exception ex) { LogSystem.LogError(ex); return; } return; }
public bool DeleteRow(int row) { try { if (row >= rowSet.Count) { return(false); } VarList varlit = rowSet[row]; varlit.Collect(); rowSet.RemoveAt(row); } catch (Exception ex) { LogSystem.LogError(ex); return(false); } return(true); }
public int OnSockClose(UserSock sock) { m_gamesock.SetConnected(false); if (null != m_gamesock.m_lgsockcall) { m_gamesock.m_lgsockcall.on_close(); return(1); } else { if (m_gamesock != null) { VarList varlist = VarList.GetVarList(); m_gamesock.Excute_CallBack("on_close", varlist); varlist.Collect(); return(1); } else { LogSystem.LogError("Error, OnSockClose gamesock is null"); } return(0); } }
public void ProcessMessage() { if (m_scoket != null) { uint uBeatType = m_gameReceiver.GetBeatType(); if (uBeatType > 0 && mbConnected) { //发送心跳 long iSceneds = DateTime.Now.Ticks / 10000000; long iMilisceneds = DateTime.Now.Ticks / 10000; long iBeatInterval = (long)m_gameReceiver.GetBeatInterval(); long nSend; if (uBeatType == 1) { long iCheckInterval = (long)m_gameReceiver.GetCheckInterval(); long nRecv; nRecv = (iSceneds - miRecvLastMsgTime); nSend = (iSceneds - miLastSendBeatTime); if (nRecv >= iBeatInterval && nSend >= iBeatInterval) { miLastSendBeatTime = iSceneds; m_gameSender.SendBeat(); } iSceneds = DateTime.Now.Ticks / 10000000; nRecv = (iSceneds - miRecvLastMsgTime); nSend = (iSceneds - miCheckTime); if (nRecv > iCheckInterval && nSend > iCheckInterval) { miCheckTime = iSceneds; mbConnected = false; mbSocketBlock = true; ///通知逻辑层检查网络状态,Failed重连网络[1] VarList varlist = VarList.GetVarList(); Excute_CallBack("on_connect_block", varlist); varlist.Collect(); } } else if (uBeatType == 2) { long iCheckInterval = (long)m_gameReceiver.GetCheckInterval(); long nRecv; nRecv = (iSceneds - miRecvLastMsgTime) * 3; nSend = (iSceneds - miLastSendBeatTime) * 3; // if (nRecv >= iBeatInterval && nSend >= iBeatInterval) if (iSceneds - miLastSendBeatTime >= iBeatInterval) { miLastSendBeatTime = iSceneds; m_gameSender.SendTracert(0); } iSceneds = DateTime.Now.Ticks / 10000000; nRecv = (iSceneds - miRecvLastMsgTime); nSend = (iSceneds - miCheckTime); if (nRecv > iCheckInterval && nSend > iCheckInterval) { miCheckTime = iSceneds; mbConnected = false; mbSocketBlock = true; ///通知逻辑层检查网络状态,Failed重连网络[1] VarList varlist = VarList.GetVarList(); Excute_CallBack("on_connect_block", varlist); varlist.Collect(); } } } m_scoket.ProcessMessage(); } }
//发送客户端自定义消息,请保留此功能,谢谢! public static bool SendCustomGM(string content) { if (mGameSender == null) { return(false); } VarList args = VarList.GetVarList(); string[] split = content.Split(' '); int len = split.Length; if (len % 2 == 0) { for (int i = 0; i < len; ++i) { switch (split[i]) { case "BOOL": ++i; args.AddBool(Convert.ToBoolean(split[i])); break; case "INT": ++i; args.AddInt(Convert.ToInt32(split[i])); break; case "INT64": ++i; args.AddInt64(Convert.ToInt64(split[i])); break; case "FLOAT": ++i; args.AddFloat(Convert.ToSingle(split[i])); break; case "DOUBLE": ++i; args.AddDouble(Convert.ToDouble(split[i])); break; case "STRING": ++i; args.AddString(split[i]); break; case "WIDESTR": ++i; args.AddWideStr(split[i]); break; } } } if (mGameSender.Custom(ref args)) { args.Collect(); return(true); } args.Collect(); return(false); }
public bool RecvRecordGrid(ref GameRecord rec, int isViewObj, int nIdent, int nSerial, int index, ref LoadArchive loadAr, int count) { try { Var key = Var.zero; for (int i = 0; i < count; i++) { int row = 0; int col = 0; if (!loadAr.ReadInt16(ref row)) { return(false); } if (!loadAr.ReadInt8(ref col)) { return(false); } if (col >= mRecordTable[index].nCols) { LogSystem.Log("col error"); return(false); } switch (mRecordTable[index].ColTypes[col]) { case OuterDataType.OUTER_TYPE_BYTE: { int value = 0; if (!loadAr.ReadInt8(ref value)) { return(false); } key.SetInt(value); } break; case OuterDataType.OUTER_TYPE_WORD: { int value = 0; if (!loadAr.ReadInt16(ref value)) { return(false); } key.SetInt(value); } break; case OuterDataType.OUTER_TYPE_DWORD: { int value = 0; if (!loadAr.ReadInt32(ref value)) { return(false); } key.SetInt(value); } break; case OuterDataType.OUTER_TYPE_QWORD: { long value = 0; if (!loadAr.ReadInt64(ref value)) { return(false); } key.SetInt64(value); } break; case OuterDataType.OUTER_TYPE_FLOAT: { float value = 0.0f; if (!loadAr.ReadFloat(ref value)) { return(false); } key.SetFloat(value); } break; case OuterDataType.OUTER_TYPE_DOUBLE: { double value = 0.0; if (!loadAr.ReadDouble(ref value)) { return(false); } key.SetDouble(value); } break; case OuterDataType.OUTER_TYPE_STRING: { string value = string.Empty; if (!loadAr.ReadString(ref value)) { return(false); } key.SetString(value); } break; case OuterDataType.OUTER_TYPE_WIDESTR: { string value = string.Empty; if (!loadAr.ReadWideStr(ref value)) { return(false); } key.SetWideStr(value); } break; case OuterDataType.OUTER_TYPE_OBJECT: { ObjectID value = ObjectID.zero; if (!loadAr.ReadObject(ref value)) { return(false); } key.SetObject(value); } break; default: LogSystem.Log("unknown type record name ", rec.GetName()); return(false); }//end switch if (!rec.SetValue(row, col, key)) { LogSystem.Log("set value error recname ", rec.GetName()); return(false); } if (isViewObj == 0) { string ident = UtilTools.StringBuilder(nIdent.ToString(), "-", nSerial.ToString()); VarList argList = VarList.GetVarList(); argList.AddString(ident); argList.AddString(rec.GetName()); argList.AddInt(row); argList.AddInt(col); if (!Excute_CallBack("on_record_single_grid", argList)) { LogSystem.Log("does not RegistCallBack on_record_single_grid"); } argList.Collect(); }//end if (isViewObj == 0) else if (isViewObj == 3) { string view_ident = nIdent.ToString(); VarList argList = VarList.GetVarList(); argList.AddString(view_ident); argList.AddString(rec.GetName()); argList.AddInt(row); argList.AddInt(col); if (!Excute_CallBack("on_view_record_single_grid", argList)) { LogSystem.Log("does not RegistCallBack on_view_record_single_grid"); } argList.Collect(); }//end if (isViewObj == 3) else if (isViewObj == 1) { string view_ident = nIdent.ToString(); string item_ident = nSerial.ToString(); VarList argList = VarList.GetVarList(); argList.AddString(view_ident); argList.AddString(item_ident); argList.AddString(rec.GetName()); argList.AddInt(row); argList.AddInt(col); if (!Excute_CallBack("on_viewobj_record_single_grid", argList)) { LogSystem.Log("does not RegistCallBack on_viewobj_record_single_grid"); } argList.Collect(); }//end if (isViewObj == 1) else if (isViewObj == 2) { VarList argList = VarList.GetVarList(); argList.AddString(rec.GetName()); argList.AddInt(row); argList.AddInt(col); if (!Excute_CallBack("on_scene_record_single_grid", argList)) { LogSystem.Log("does not RegistCallBack on_scene_record_single_grid"); } argList.Collect(); } //end if (isViewObj == 2) } // end for (int i = 0; i < count; i ++ ) } catch (System.Exception ex) { LogSystem.LogError(ex); return(false); } return(true); }