Exemplo n.º 1
0
    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);
 }