Exemple #1
0
    private void ShowSkillUseAvailability(Skill skill, Vector2 space)
    {
//		Debug.Log ("ShowSkillUseAvailability - 1");

        if (trackedSpaces.Contains(space))
        {
            return;
        }

        Vector2  currentSpace = new Vector2(activeToken.posX, activeToken.posY);
        Vector2  checkSpace   = new Vector2(space.x, space.y);
        BodToken checkToken   = battleBoard.tokenPositions[(int)space.x, (int)space.y];

        trackedSpaces.Add(checkSpace);

//		Debug.Log ("MaxRange: " + skill.rangeMax);

        if (Vector2.Distance(currentSpace, checkSpace) > skill.rangeMax)
        {
            return;
        }

        Debug.Log("Checking: " + skill.name + " at pos: " + space.x + ", " + space.y);

        // Check usability of Skill
        if (skill.usable(activeToken.bodRef, (checkToken == null) ? null : checkToken.bodRef, currentSpace, checkSpace))
        {
            battleBoard.ShowSpaceAvailable(checkSpace, skill);
        }

        // Recursive Case: Check adjacent spaces
        // Up
        if (space.y > 0)
        {
            ShowSkillUseAvailability(skill, new Vector2(space.x, (space.y - 1)));
        }
        // Left
        if (space.x > 0)
        {
            ShowSkillUseAvailability(skill, new Vector2((space.x - 1), space.y));
        }
        // Down
        if (space.y < (battleBoard.dimensionY - 1))
        {
            ShowSkillUseAvailability(skill, new Vector2(space.x, (space.y + 1)));
        }
        // Right
        if (space.x < (battleBoard.dimensionX - 1))
        {
            ShowSkillUseAvailability(skill, new Vector2((space.x + 1), space.y));
        }
    }