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); }
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"); //-------------------------------------------------------------------------------------- }