Example #1
0
        public bool RecvRecordGrid(ref GameRecord rec, int isViewObj,
                                   int nIdent, int nSerial, int index, ref LoadArchive loadAr,
                                   int count)
        {
            try
            {
                Var key = new Var();
                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)
                    {
                        //Log.Trace("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 = "";
                        if (!loadAr.ReadString(ref value))
                        {
                            return(false);
                        }
                        key.SetString(value);
                    }
                    break;

                    case OuterDataType.OUTER_TYPE_WIDESTR:
                    {
                        string value = "";
                        if (!loadAr.ReadWideStr(ref value))
                        {
                            return(false);
                        }
                        key.SetWideStr(value);
                    }
                    break;

                    case OuterDataType.OUTER_TYPE_OBJECT:
                    {
                        ObjectID value = new ObjectID();
                        if (!loadAr.ReadObject(ref value))
                        {
                            return(false);
                        }
                        key.SetObject(value);
                    }
                    break;

                    default:
                        //Log.Trace("unknown type record name " + rec.GetName());
                        return(false);
                    }//end switch

                    if (!rec.SetValue(row, col, key))
                    {
                        //Log.Trace("set value error recname " + rec.GetName());
                        return(false);
                    }

                    if (isViewObj == 0)
                    {
                        string  ident   = nIdent.ToString() + "-" + nSerial.ToString();
                        VarList argList = new VarList();
                        argList.AddString(ident);
                        argList.AddString(rec.GetName());
                        argList.AddInt(row);
                        argList.AddInt(col);
                        if (!Excute_CallBack("on_record_single_grid", argList))
                        {
                            //Log.Trace("does not RegistCallBack on_record_single_grid");
                        }
                    }//end if (isViewObj == 0)
                    else if (isViewObj == 3)
                    {
                        string  view_ident = nIdent.ToString();
                        VarList argList    = new VarList();
                        argList.AddString(view_ident);
                        argList.AddString(rec.GetName());
                        argList.AddInt(row);
                        argList.AddInt(col);
                        if (!Excute_CallBack("on_view_record_single_grid", argList))
                        {
                            //Log.Trace("does not RegistCallBack on_view_record_single_grid");
                        }
                    }//end if (isViewObj == 3)
                    else if (isViewObj == 1)
                    {
                        string  view_ident = nIdent.ToString();
                        string  item_ident = nSerial.ToString();
                        VarList argList    = new VarList();
                        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))
                        {
                            //Log.Trace("does not RegistCallBack on_viewobj_record_single_grid");
                        }
                    }//end if (isViewObj == 1)
                    else if (isViewObj == 2)
                    {
                        VarList argList = new VarList();
                        argList.AddString(rec.GetName());
                        argList.AddInt(row);
                        argList.AddInt(col);
                        if (!Excute_CallBack("on_scene_record_single_grid", argList))
                        {
                            //Log.Trace("does not RegistCallBack on_scene_record_single_grid");
                        }
                    } //end if (isViewObj == 2)
                }     // end for (int i = 0; i < count; i ++ )
            }
            catch (System.Exception ex)
            {
                Log.TraceExcep(ref ex);
                return(false);
            }

            return(true);
        }
Example #2
0
        public bool RecvRecordRow(ref GameRecord rec, int index,
                                  ref LoadArchive ar, int row, int count)
        {
            try
            {
                if (rec == null || ar == null)
                {
                    LogSystem.Log("rec or ar is null");
                    return(false);
                }

                if (row < 0 || count < 0)
                {
                    LogSystem.Log("row or count < 0");
                    return(false);
                }

                if (!mRecordTable.ContainsKey(index))
                {
                    LogSystem.Log("record table doesn't contain index:", index.ToString());
                    return(false);
                }

                int col_count = mRecordTable[index].nCols;
                Var key       = Var.zero;

                for (int i = row; i < (row + count); i++)
                {
                    if (!rec.InsertRow(i))
                    {
                        LogSystem.Log("InsertRow failed row =", i.ToString());
                        return(false);
                    }

                    for (int c = 0; c < col_count; c++)
                    {
                        int nColType = mRecordTable[index].ColTypes[c];
                        switch (nColType)
                        {
                        case OuterDataType.OUTER_TYPE_BYTE:
                        {
                            int value = 0;
                            if (!ar.ReadInt8(ref value))
                            {
                                return(false);
                            }
                            key.SetInt(value);
                        }
                        break;

                        case OuterDataType.OUTER_TYPE_WORD:
                        {
                            int value = 0;
                            if (!ar.ReadInt16(ref value))
                            {
                                return(false);
                            }
                            key.SetInt(value);
                        }
                        break;

                        case OuterDataType.OUTER_TYPE_DWORD:
                        {
                            int value = 0;
                            if (!ar.ReadInt32(ref value))
                            {
                                return(false);
                            }
                            key.SetInt(value);
                        }
                        break;

                        case OuterDataType.OUTER_TYPE_QWORD:
                        {
                            long value = 0;
                            if (!ar.ReadInt64(ref value))
                            {
                                return(false);
                            }
                            key.SetInt64(value);
                        }
                        break;

                        case OuterDataType.OUTER_TYPE_FLOAT:
                        {
                            float value = 0.0f;
                            if (!ar.ReadFloat(ref value))
                            {
                                return(false);
                            }
                            key.SetFloat(value);
                        }
                        break;

                        case OuterDataType.OUTER_TYPE_DOUBLE:
                        {
                            double value = 0.0;
                            if (!ar.ReadDouble(ref value))
                            {
                                return(false);
                            }
                            key.SetDouble(value);
                        }
                        break;

                        case OuterDataType.OUTER_TYPE_STRING:
                        {
                            string value = string.Empty;
                            if (!ar.ReadString(ref value))
                            {
                                return(false);
                            }
                            key.SetString(value);
                        }
                        break;

                        case OuterDataType.OUTER_TYPE_WIDESTR:
                        {
                            string value = string.Empty;
                            if (!ar.ReadWideStr(ref value))
                            {
                                return(false);
                            }
                            key.SetWideStr(value);
                        }
                        break;

                        case OuterDataType.OUTER_TYPE_OBJECT:
                        {
                            ObjectID value = ObjectID.zero;

                            if (!ar.ReadObject(ref value))
                            {
                                return(false);
                            }
                            key.SetObject(value);
                        }
                        break;

                        default:
                            LogSystem.Log("type error=", rec.GetName(), "_", nColType);
                            return(false);
                        }//end switch

                        if (!rec.SetValue(i, c, key))
                        {
                            LogSystem.Log("set value failed record name :", rec.GetName());
                            return(false);
                        }
                    } //end(int c = 0;
                }     //end for(int i = row
            }
            catch (Exception ex)
            {
                LogSystem.LogError(ex);
                return(false);
            }
            return(true);
        }