public static bool cb(CSVReader csv_reader, DamageDistanceData data, ref uint key)
    {
        data.id = key;
        float num = 0f;
        List <DamagePoint> list        = new List <DamagePoint>();
        DamagePoint        damagePoint = new DamagePoint();

        damagePoint.distance = 0f;
        csv_reader.Pop(ref damagePoint.rate);
        list.Add(damagePoint);
        for (int i = 0; i < 10; i++)
        {
            DamagePoint         damagePoint2 = new DamagePoint();
            CSVReader.PopResult result       = csv_reader.Pop(ref damagePoint2.distance);
            CSVReader.PopResult result2      = csv_reader.Pop(ref damagePoint2.rate);
            if (!(bool)result || !(bool)result2 || (float)damagePoint2.distance <= 0f || num >= (float)damagePoint2.distance)
            {
                break;
            }
            num = damagePoint2.distance;
            list.Add(damagePoint2);
        }
        data.points = list.ToArray();
        data.CalcMaxRate();
        return(true);
    }
        public static bool cb(CSVReader csv_reader, GrowEquipItemNeedItemData data, ref uint key1, ref uint key2)
        {
            data.id = key1;
            data.lv = key2;
            List <NeedMaterial> list = new List <NeedMaterial>();

            for (int i = 0; i < NEED_MATERIAL_LENGTH_MAX; i++)
            {
                uint value  = 0u;
                int  value2 = 0;
                CSVReader.PopResult popResult  = csv_reader.Pop(ref value);
                CSVReader.PopResult popResult2 = csv_reader.Pop(ref value2);
                if (value != 0 && value2 != 0)
                {
                    list.Add(new NeedMaterial(value, value2));
                }
            }
            data.needMaterial = list.ToArray();
            CSVReader.PopResult popResult3 = csv_reader.Pop(ref data.needMoney);
            return(true);
        }
 public static bool cb(CSVReader csv_reader, AbilityData data, ref uint key1, ref uint key2)
 {
     data.id   = key1;
     data.key2 = key2;
     csv_reader.Pop(ref data.needAP);
     csv_reader.PopEnum(ref data.enableEquipType, ENABLE_EQUIP_TYPE.ALL);
     csv_reader.Pop(ref data.name);
     csv_reader.Pop(ref data.description);
     data.m_info = new AbilityInfo[3];
     for (int i = 0; i < 3; i++)
     {
         ABILITY_ENABLE_TYPE value = ABILITY_ENABLE_TYPE.NONE;
         data.m_info[i] = new AbilityInfo();
         CSVReader.PopResult result = csv_reader.PopEnum(ref data.m_info[i].type, ABILITY_TYPE.NONE);
         CSVReader.PopResult result2;
         if ((CSVReader.PopResult.Result)result == CSVReader.PopResult.Result.DONT_DEFINE_ERROR || (CSVReader.PopResult.Result)result == CSVReader.PopResult.Result.UNKNOWN)
         {
             csv_reader.Pop(ref data.m_info[i].target);
             result2 = csv_reader.PopEnum(ref value, ABILITY_ENABLE_TYPE.NONE);
             csv_reader.Pop(ref data.m_info[i].value);
             data.m_info[i].type   = ABILITY_TYPE.NEED_UPDATE;
             data.m_info[i].target = string.Empty;
         }
         else
         {
             csv_reader.Pop(ref data.m_info[i].target);
             result2 = csv_reader.PopEnum(ref value, ABILITY_ENABLE_TYPE.NONE);
             csv_reader.Pop(ref data.m_info[i].value);
         }
         if ((CSVReader.PopResult.Result)result2 != CSVReader.PopResult.Result.DONT_DEFINE_ERROR && (CSVReader.PopResult.Result)result2 != CSVReader.PopResult.Result.UNKNOWN && value != 0)
         {
             AbilityInfo.Enable enable = new AbilityInfo.Enable();
             enable.type = value;
             data.m_info[i].enables.Add(enable);
         }
         value = ABILITY_ENABLE_TYPE.NONE;
         int value2 = 0;
         int value3 = 0;
         result2 = csv_reader.PopEnum(ref value, ABILITY_ENABLE_TYPE.NONE);
         csv_reader.Pop(ref value2);
         csv_reader.Pop(ref value3);
         if ((CSVReader.PopResult.Result)result2 != CSVReader.PopResult.Result.DONT_DEFINE_ERROR && (CSVReader.PopResult.Result)result2 != CSVReader.PopResult.Result.UNKNOWN && value != 0)
         {
             AbilityInfo.Enable enable2 = new AbilityInfo.Enable();
             enable2.type      = value;
             enable2.values[0] = value2;
             enable2.values[1] = value3;
             data.m_info[i].enables.Add(enable2);
         }
     }
     csv_reader.Pop(ref data.descriptionPreGrant);
     csv_reader.Pop(ref data.minNeedAP);
     if (data.enableEquipType != 0)
     {
         for (int j = 0; j < 3; j++)
         {
             if (data.m_info[j].type != 0 && data.m_info[j].type != ABILITY_TYPE.TIME_LIMIT)
             {
                 AbilityInfo.Enable enable3 = new AbilityInfo.Enable();
                 enable3.type      = Utility.GetAbilityEnableType(data.enableEquipType);
                 enable3.values[0] = 0;
                 enable3.values[1] = 0;
                 data.m_info[j].enables.Add(enable3);
             }
         }
     }
     for (int k = 0; k < 3; k++)
     {
         if (Utility.IsConditionsAbilityType(data.m_info[k].type))
         {
             ABILITY_TYPE type = data.m_info[k].type;
             for (int l = 0; l < 3; l++)
             {
                 if (data.m_info[l].type != 0 && data.m_info[l].type != ABILITY_TYPE.TIME_LIMIT)
                 {
                     AbilityInfo.Enable enable4 = new AbilityInfo.Enable();
                     enable4.type      = Utility.GetAbilityEnableType(type);
                     enable4.values[0] = data.m_info[k].value;
                     enable4.values[1] = 0;
                     data.m_info[l].enables.Add(enable4);
                 }
             }
         }
     }
     return(true);
 }