Exemple #1
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);
                }
            }
Exemple #2
0
            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);
                }
            }
Exemple #3
0
    /// <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);
    }
Exemple #4
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);
        }
Exemple #5
0
    /* @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);
    }
Exemple #6
0
    //2秒断线重连
    private void OnRestNet()
    {
        //断线重连需要 一直显示转圈 不显示提示
        //SystemWaitPanel.Start(99999999);
        VarList varlist = VarList.GetVarList();

        //ConnectStage.on_connect_block(varlist);
        varlist.Collect();
    }
Exemple #7
0
 public RoleData()
 {
     nRoleIndex  = 0;
     nSysFlags   = 0;
     name        = string.Empty;
     para        = string.Empty;
     nDeleted    = 0;
     dDeleteTime = 0.0f;
     parameters  = VarList.GetVarList();
 }
Exemple #8
0
        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);
        }
Exemple #9
0
        public bool InsertRow(int row)
        {
            try
            {
                int     col_num = colTypes.Count;
                VarList newRow  = VarList.GetVarList();

                if (row > col_num)
                {
                    rowSet.Add(newRow);
                }
                else
                {
                    rowSet.Insert(row, newRow);
                }
            }
            catch (Exception ex)
            {
                LogSystem.LogError(ex);
                return(false);
            }
            return(true);
        }
Exemple #10
0
    //发送客户端自定义消息
    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);
    }
Exemple #11
0
 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);
     }
 }
Exemple #12
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();
     }
 }
Exemple #13
0
    //发送客户端自定义消息,请保留此功能,谢谢!
    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);
    }
Exemple #14
0
        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);
        }
Exemple #15
0
        public bool RecieveData(byte[] data, int iSize)
        {
            if (iSize > maxBufLength - miIndex)
            {
                return(false);
            }

            Array.Copy(data, 0, mBuffer, miIndex, iSize);
            if (miIndex >= 4)
            {
                //消息头已经收到,解析出消息头/
                messageLength = BitConverter.ToInt32(mBuffer, 0);
            }
            else
            {
                //头还没有接接收完/
                messageLength = -1;
            }

            miIndex += iSize;
            if (miIndex >= messageLength)
            {
                int    compressFlag = BitConverter.ToInt32(mBuffer, 4);
                byte[] bufferBody   = new byte[mBuffer.Length - 8];
                Array.Copy(mBuffer, 8, bufferBody, 0, bufferBody.Length);
                byte[] bodys = null;
                if (compressFlag > 0)
                {
                    bodys = ServerStateQuickLZ.decompress(bufferBody);
                }
                else
                {
                    bodys = new byte[mBuffer.Length - 8];
                    try
                    {
                        Array.Copy(mBuffer, 8, bodys, 0, bodys.Length);
                    }
                    catch (Exception e)
                    {
                        UnityEngine.Debug.LogError(e.ToString());
                    }
                }

                if (bodys.Length > 0)
                {
                    //解析消息
                    int m_nCurPosi = 0;
                    int Head1_0    = 0;
                    int Head1_1    = 0;

                    int Head2_0 = 0;
                    int Head2_1 = 0;

                    m_nCurPosi = 0;

                    Head1_0     = BitConverter.ToInt32(bodys, m_nCurPosi);
                    m_nCurPosi += 4;

                    Head1_1     = BitConverter.ToInt32(bodys, m_nCurPosi);
                    m_nCurPosi += 4;

                    Head2_0     = BitConverter.ToInt32(bodys, m_nCurPosi);
                    m_nCurPosi += 4;

                    Head2_1     = BitConverter.ToInt32(bodys, m_nCurPosi);
                    m_nCurPosi += 4;

                    int count = BitConverter.ToInt32(bodys, m_nCurPosi);
                    m_nCurPosi += 4;

                    VarList args = VarList.GetVarList();
                    args.AddInt(count);
                    int byteSize = bodys.Length;
                    for (int i = 0; i < count; i++)
                    {
                        int len = 0;
                        for (int c = 0; c < byteSize - m_nCurPosi - 1; c++)
                        {
                            try
                            {
                                char v = '\0';
                                if (m_nCurPosi + c < bodys.Length)
                                {
                                    v = BitConverter.ToChar(bodys, m_nCurPosi + c);
                                }

                                if (v == '\0' || bodys[m_nCurPosi + c] == 0)
                                {
                                    break;
                                }
                            }
                            catch (Exception e)
                            {
                                UnityEngine.Debug.LogError(e.ToString());
                            }

                            len++;
                        }

                        if (len > 0)
                        {
                            byte[] dddd = new byte[len];
                            Array.Copy(bodys, m_nCurPosi, dddd, 0, len);

                            //byte[] des = Encoding.Convert(Encoding.UTF8, System.Text.Encoding.Default, dddd);
                            string str = System.Text.Encoding.UTF8.GetString(dddd);
                            args.AddString(str);
                        }

                        m_nCurPosi += len + 1;//1表示'\0'
                    }

                    if (monRecieve != null)
                    {
                        monRecieve(this, ref args);
                    }
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            return(false);
        }