Пример #1
0
    public override void parseJson(object jd)
    {
        Dictionary <string, object> item = (Dictionary <string, object>)jd;

        skill_id   = long.Parse(item["skill_id"].ToString());
        name       = item["name"].ToString();
        hero_id    = long.Parse(item["hero_id"].ToString());
        skill_name = item["skill_name"].ToString();
        if (item["des"] != null)
        {
            des = item["des"].ToString();
        }
        skill_icon     = item["skill_icon"].ToString();
        spell_motion   = item["skill_motion"].ToString();
        sound          = item["sound"].ToString();
        hit_sound      = item["hit_sound"].ToString();
        target_ceiling = byte.Parse(item["target_ceiling"].ToString());
        types          = byte.Parse(item["types"].ToString());
        dist           = float.Parse(item["dist"].ToString());
        castBefore     = float.Parse(item["end_motion"].ToString());
        isSingle       = item["singular_aoe"] == null ? true : byte.Parse(item["singular_aoe"].ToString()) == 0;
        ignoreTerrain  = item["pierce through"] == null ? false : byte.Parse(item["ignore_terrain"].ToString()) == 0;
        isPierce       = item["pierce through"] == null ? false : byte.Parse(item["pierce through"].ToString()) == 0;
        flight_speed   = float.Parse(item["flight_speed"].ToString());
        max_fly        = item["max_fly"] == null ? 0 : float.Parse(item["max_fly"].ToString());
        skill_type     = item.ContainsKey("skill_type") && item["skill_type"] != null ? (SkillCastType)byte.Parse(item["skill_type"].ToString()) : (SkillCastType)0;
        range_type     = (rangeType)byte.Parse(item["range_type"].ToString());
        aoe_long       = float.Parse(item["aoe_long"].ToString());
        aoe_wide       = float.Parse(item["aoe_wide"].ToString());
        angle          = float.Parse(item["angle"].ToString());
        site           = int.Parse(item["site"].ToString());
        seat           = int.Parse(item["seat"].ToString());
        alertedType    = int.Parse(item["alerted_type"].ToString());
        length_base    = float.Parse(item["length_base"].ToString());
        energy         = int.Parse(item["energy"].ToString());
        target         = (TargetState)(int.Parse(item["target"].ToString()));
        choseTarget    = (ChoseTarget)(int.Parse(item["choose_target"].ToString()));

        interval_time = FSDataNodeTable <SkillNode> .GetSingleton().ParseToFloatArray(item["interval_time"]);

        damage_ratio = FSDataNodeTable <SkillNode> .GetSingleton().ParseToFloatArray(item["damage_ratio"]);

        int[] nodelist = item["nullity_type"] as int[];
        if (nodelist != null)
        {
            nullity_type = new int[nodelist.Length];

            for (int m = 0; m < nodelist.Length; m++)
            {
                nullity_type[m] = nodelist[m];
            }
        }
        int[] influenceList = item["influence_type"] as int[];
        if (influenceList != null)
        {
            influence_type = influenceList;
        }
        // nullity_type = byte.Parse(item["nullity_type"].ToString());
        missable        = byte.Parse(item["missable"].ToString());
        efficiency_time = float.Parse(item["efficiency_time"].ToString());
        effect_time     = float.Parse(item["effect_time"].ToString());
        isFiringPoint   = item["firing"] == null ? false : float.Parse(item["firing"].ToString()) == 1;
        cooling         = float.Parse(item["cooling"].ToString());
        //cooling = 1;

        base_num1 = FSDataNodeTable <SkillNode> .GetSingleton().ParseToFloatArray(item["base_num1"]);

        growth_ratio1 = FSDataNodeTable <SkillNode> .GetSingleton().ParseToFloatArray(item["growth_ratio1"]);

        skill_ratio = FSDataNodeTable <SkillNode> .GetSingleton().ParseToFloatArray(item["skill_ratio"]);

        if (skill_ratio == null)
        {
            Debug.LogError("skill_ratio null");
        }
        stats        = (int[])item["stats"];
        buffs_target = item["buffs_target"] as int[];
        specialBuffs = (object[])item["special_buffs"];

        skill_parts = FSDataNodeTable <SkillNode> .GetSingleton().ParseToLongArray(item["skill_parts"]);

        add_state   = (object[])item["add_state"];
        range       = float.Parse((item["dist"]).ToString());
        battleRange = new SectorRange(range);
    }
Пример #2
0
    public int[] combo_time;                                         //普攻连击限制
    //--------------------------------------------------------------------------------------

    public override void ParseJson(object jd)
    {
        Dictionary <string, object> item = (Dictionary <string, object>)jd;

        skill_id       = item.TryGetLong("skillid");
        name           = item.TryGetString("name");
        hero_id        = item.TryGetLong("hero_id");
        skill_name     = item.TryGetString("skill_name");
        des            = item.TryGetString("des");
        skill_atlas    = item.TryGetString("icon_atlas");
        skill_icon     = item.TryGetString("skill_icon");
        spell_motion   = item.TryGetString("skill_motion");
        sound          = item.TryGetString("sound");
        hit_sound      = item.TryGetString("hit_sound");
        target_ceiling = item.TryGetByte("target_ceiling");
        attack_type    = item.TryGetByte("attack_type");
        types          = item.TryGetByte("types");
        dist           = item.TryGetFloat("dist");
        castBefore     = item.TryGetFloat("end_motion");
        if (item.ContainsKey("singular_aoe"))
        {
            isSingle = item["singular_aoe"] == null ? true : byte.Parse(item["singular_aoe"].ToString()) == 0;
        }
        if (item.ContainsKey("ignore_terrain"))
        {
            ignoreTerrain = item["ignore_terrain"] == null ? false : byte.Parse(item["ignore_terrain"].ToString()) == 0;
        }
        if (item.ContainsKey("pierce through"))
        {
            isPierce = item["pierce through"] == null ? false : byte.Parse(item["pierce through"].ToString()) == 0;
        }
        flight_speed = item.TryGetFloat("flight_speed");
        if (item.ContainsKey("max_fly"))
        {
            max_fly = item["max_fly"] == null ? 0 : float.Parse(item["max_fly"].ToString());
        }
        skill_type = item.ContainsKey("skill_type") && item["skill_type"] != null ? (SkillCastType)byte.Parse(item["skill_type"].ToString()) : (SkillCastType)0;
        if (item.ContainsKey("range_type"))
        {
            range_type = (rangeType)byte.Parse(item["range_type"].ToString());
        }
        aoe_long    = item.TryGetFloat("aoe_long");
        aoe_wide    = item.TryGetFloat("aoe_wide");
        angle       = item.TryGetFloat("angle");
        site        = item.TryGetInt("site");
        seat        = item.TryGetInt("seat");
        alertedType = item.TryGetInt("alerted_type");
        length_base = item.TryGetFloat("length_base");
        energy      = item.TryGetInt("energy");
        if (item.ContainsKey("choose_target"))
        {
            choseTarget = (ChoseTarget)(int.Parse(item["choose_target"].ToString()));
        }
        if (item.ContainsKey("rangen_type"))
        {
            object[] rangens = item["rangen_type"] as object[];
            if (rangens != null)
            {
                rangenValue.type = rangens.Length > 0 ? (RangenType)(int.Parse(rangens[0].ToString())) : RangenType.OuterCircle;
                switch (rangenValue.type)
                {
                case RangenType.OuterCircle:
                    rangenValue.outerRadius = rangens.Length > 1 ? float.Parse(rangens[1].ToString()) : 0;
                    break;

                case RangenType.OuterCircle_InnerCube:
                    rangenValue.outerRadius = rangens.Length > 1 ? float.Parse(rangens[1].ToString()) : 0;
                    rangenValue.length      = rangens.Length > 2 ? float.Parse(rangens[2].ToString()) : 0;
                    rangenValue.width       = rangens.Length > 3 ? float.Parse(rangens[3].ToString()) : 0;
                    break;

                case RangenType.OuterCircle_InnerSector:
                    rangenValue.outerRadius = rangens.Length > 1 ? float.Parse(rangens[1].ToString()) : 0;
                    rangenValue.angle       = rangens.Length > 2 ? float.Parse(rangens[2].ToString()) : 0;
                    break;

                case RangenType.OuterCircle_InnerCircle:
                    rangenValue.outerRadius = rangens.Length > 1 ? float.Parse(rangens[1].ToString()) : 0;
                    rangenValue.innerRadius = rangens.Length > 2 ? float.Parse(rangens[2].ToString()) : 0;
                    break;

                case RangenType.InnerCube:
                    rangenValue.length = rangens.Length > 1 ? float.Parse(rangens[1].ToString()) : 0;
                    rangenValue.width  = rangens.Length > 2 ? float.Parse(rangens[2].ToString()) : 0;
                    break;

                default:
                    break;
                }
            }
        }
        if (item.ContainsKey("interval_time"))
        {
            interval_time = FSDataNodeTable <SkillNode> .GetSingleton().ParseToFloatArray(item["interval_time"]);
        }
        if (item.ContainsKey("damage_ratio"))
        {
            damage_ratio = FSDataNodeTable <SkillNode> .GetSingleton().ParseToFloatArray(item["damage_ratio"]);
        }
        if (item.ContainsKey("nullity_type"))
        {
            int[] nodelist = item["nullity_type"] as int[];
            if (nodelist != null)
            {
                nullity_type = new int[nodelist.Length];

                for (int m = 0; m < nodelist.Length; m++)
                {
                    nullity_type[m] = nodelist[m];
                }
            }
        }
        if (item.ContainsKey("influence_type"))
        {
            int[] influenceList = item["influence_type"] as int[];
            if (influenceList != null)
            {
                influence_type = influenceList;
            }
        }
        missable        = item.TryGetByte("missable");
        efficiency_time = item.TryGetFloat("efficiency_time");
        effect_time     = item.TryGetFloat("effect_time");
        cooling         = item.TryGetFloat("cooling");
        if (item.ContainsKey("base_num1"))
        {
            base_num1 = FSDataNodeTable <SkillNode> .GetSingleton().ParseToFloatArray(item["base_num1"]);
        }
        if (item.ContainsKey("growth_ratio1"))
        {
            growth_ratio1 = FSDataNodeTable <SkillNode> .GetSingleton().ParseToFloatArray(item["growth_ratio1"]);
        }
        if (item.ContainsKey("skill_ratio"))
        {
            skill_ratio = FSDataNodeTable <SkillNode> .GetSingleton().ParseToFloatArray(item["skill_ratio"]);

            if (skill_ratio == null)
            {
                GameDebug.LogError("skill_ratio null");
            }
        }
        if (item.ContainsKey("stats"))
        {
            stats = item["stats"] as int[];
        }
        if (item.ContainsKey("buffs_target"))
        {
            buffs_target = item["buffs_target"] as int[];
        }
        if (item.ContainsKey("special_buffs"))
        {
            specialBuffs = (object[])item["special_buffs"];
        }
        if (item.ContainsKey("skill_parts"))
        {
            skill_parts = FSDataNodeTable <SkillNode> .GetSingleton().ParseToLongArray(item["skill_parts"]);
        }
        if (item.ContainsKey("add_state"))
        {
            add_state = item["add_state"] as object[];
        }
        range     = item.TryGetFloat("dist");
        warn_time = item.TryGetFloat("warn_time");
        // nullity_type = byte.Parse(item["nullity_type"].ToString());
        animatorTime = item.TryGetFloat("actuation time");
        if (item.ContainsKey("life_drain"))
        {
            life_drain = item["life_drain"] as object[];
        }
        if (item.ContainsKey("alerted_position"))
        {
            alerted_position = item.TryGetInt("alerted_position");
        }

        //--------------------------------------------------------------------------------------
        //新加数据
        energyvalue     = item.TryGetInt("energy_value");
        can_move        = item.TryGetInt("can_move") == 2;
        is_turnround    = item.TryGetInt("is_turnround") == 1;
        face_type       = (FaceType)item.TryGetInt("face_type");
        effect          = item.TryGetStringIntArr("effect");
        effect_position = item.TryGetIntArr("effect_position");
        if (item.ContainsKey("effect_positionxyz") && item["effect_positionxyz"] != null)
        {
            object[] effect_positionxyz_temp = item["effect_positionxyz"] as object[];
            GetVector3List(effect_positionxyz, effect_positionxyz_temp);
        }
        effect_start    = item.TryGetDoubleArr("effect_start");
        effect_end      = item.TryGetDoubleArr("effect_end");
        skill_usetype   = (SkillUseType)item.TryGetInt("skill_usetype");
        bullet_time     = item.TryGetDoubleArr("bullet_time");
        bullet_id       = item.TryGetIntArr("bullet_id");
        bul_target_type = item.TryGetIntArr("bul_target_type");
        if (item.ContainsKey("bul_target_value") && item["bul_target_value"] != null)
        {
            bul_target_value = new List <int[]>();
            object[] bul_target_value_temp = item["bul_target_value"] as object[];
            for (int i = 0; i < bul_target_value_temp.Length; i++)
            {
                int[] objs = bul_target_value_temp[i] as int[];
                bul_target_value.Add(objs);
            }
        }
        bul_target_size = item.TryGetIntArr("bul_target_size");
        max_bul         = item.TryGetIntArr("max_bul");
        if (item.ContainsKey("bul_num_single") && item["bul_num_single"] != null)
        {
            bul_num_single = new List <int[]>();
            object[] bul_num_single_temp = item["bul_num_single"] as object[];
            for (int i = 0; i < bul_num_single_temp.Length; i++)
            {
                int[] objs = bul_num_single_temp[i] as int[];
                bul_num_single.Add(objs);
            }
        }
        bul_start     = item.TryGetIntArr("bul_start");
        isFiringPoint = item.TryGetInt("firing");
        if (item.ContainsKey("firing_xyz") && item["firing_xyz"] != null)
        {
            object[] firing_xyz_temp = item["firing_xyz"] as object[];
            GetVector3List(firing_xyz, firing_xyz_temp);
        }
        bul_end = item.TryGetInt("bul_end");
        if (item.ContainsKey("bul_end_xyz") && item["bul_end_xyz"] != null)
        {
            object[] bul_end_xyz_temp = item["bul_end_xyz"] as object[];
            GetVector3List(bul_end_xyz, bul_end_xyz_temp);
        }

        bul_end_angle = item.TryGetIntArr("bul_end_angle");
        bul_son_max   = item.TryGetIntArr("bul_son_max");
        combo_time    = item.TryGetIntArr("combo_time");

        //--------------------------------------------------------------------------------------
    }