public static SkillDamageRange ParseSkillRange(string val) { // [[-1,-1],[1,-1],[-1,1],[1,1]] SkillDamageRange range = new SkillDamageRange(); range._damageRectList.Clear(); // Add the primary damage rect[0, 0] { SkillDamageRange.Rect rect = new SkillDamageRange.Rect(); rect.x = 0; rect.z = 0; Vector3 gridPos = GetGridPosition(rect.x, rect.z); rect.left = gridPos.x - 0.5f * GameDefines.BATTLE_GRID_WIDTH; rect.right = gridPos.x + 0.5f * GameDefines.BATTLE_GRID_WIDTH; rect.top = gridPos.z + 0.5f * GameDefines.BATTLE_GRID_HEIGHT; rect.bottom = gridPos.z - 0.5f * GameDefines.BATTLE_GRID_HEIGHT; range._damageRectList.Add(rect); } val = val.Replace("[", ""); val = val.Replace("]", ""); // Parse others char [] splitter = { ',' }; string[] vecs = val.Split(splitter); if (vecs.Length == 0) { return(range); } if (vecs.Length == 1 // Equal with "0" && (vecs[0].CompareTo("0") == 0)) { return(range); } if (vecs.Length % 2 != 0) { return(range); } for (int i = 0; i < vecs.Length; i += 2) { SkillDamageRange.Rect rect = new SkillDamageRange.Rect(); rect.x = StrParser.ParseDecInt(vecs[i], -10000); rect.z = StrParser.ParseDecInt(vecs[i + 1], -10000); Vector3 gridPos = GetGridPosition(rect.x, rect.z); rect.left = gridPos.x - 0.5f * GameDefines.BATTLE_GRID_WIDTH; rect.right = gridPos.x + 0.5f * GameDefines.BATTLE_GRID_WIDTH; rect.top = gridPos.z + 0.5f * GameDefines.BATTLE_GRID_HEIGHT; rect.bottom = gridPos.z - 0.5f * GameDefines.BATTLE_GRID_HEIGHT; range._damageRectList.Add(rect); } return(range); }
void CalculateDamageLegendRange() { // Parse skill damage legend range _skillDamageRange = HelpUtil.ParseSkillRange(MSkillData.BasicData.SkillDamageRange); }