Exemple #1
0
    public float GetCoverDefendBonusSquare(Vector3 posS)
    {
        if (cover.Count < 4)
        {
            Debug.Log("error getting cover, cover value not setup properly");
            return(0);
        }

        Vector2 dir       = new Vector2(posS.x - pos.x, posS.z - pos.z);
        float   angle     = Utility.VectorToAngle(dir);
        int     coverType = 0;

        if (angle == 45)
        {
            coverType = Mathf.Max((int)cover[0], (int)cover[1]);
        }
        else if (angle == 135)
        {
            coverType = Mathf.Max((int)cover[1], (int)cover[2]);
        }
        else if (angle == 225)
        {
            coverType = Mathf.Max((int)cover[2], (int)cover[3]);
        }
        else if (angle == 315)
        {
            coverType = Mathf.Max((int)cover[3], (int)cover[0]);
        }
        else if (angle > 45 && angle < 135)
        {
            coverType = (int)cover[1];
        }
        else if (angle > 135 && angle < 225)
        {
            coverType = (int)cover[2];
        }
        else if (angle > 225 && angle < 315)
        {
            coverType = (int)cover[3];
        }
        else if (angle >= 0 && angle < 45 || angle > 315 && angle < 360)
        {
            coverType = (int)cover[0];
        }
        else
        {
            Debug.Log("error getting cover, angle exceed 360");
        }

        if ((_CoverType)coverType == _CoverType.BlockHalf)
        {
            return(GameControlTB.GetCoverHalf());
        }
        else if ((_CoverType)coverType == _CoverType.BlockFull)
        {
            return(GameControlTB.GetCoverFull());
        }

        return(0);
    }
Exemple #2
0
    public float GetCoverDefendBonusHex(Vector3 posS)
    {
        if (cover.Count < 6)
        {
            Debug.Log("error getting cover, cover value not setup properly");
            return(0);
        }

        Vector2 dir       = new Vector2(posS.x - pos.x, posS.z - pos.z);
        float   angle     = Utility.VectorToAngle(dir);
        int     coverType = 0;

        if (angle == 0)
        {
            coverType = Mathf.Max((int)cover[0], (int)cover[5]);
        }
        else if (angle == 60)
        {
            coverType = Mathf.Max((int)cover[0], (int)cover[1]);
        }
        else if (angle == 120)
        {
            coverType = Mathf.Max((int)cover[1], (int)cover[2]);
        }
        else if (angle == 180)
        {
            coverType = Mathf.Max((int)cover[2], (int)cover[3]);
        }
        else if (angle == 240)
        {
            coverType = Mathf.Max((int)cover[3], (int)cover[4]);
        }
        else if (angle == 300)
        {
            coverType = Mathf.Max((int)cover[4], (int)cover[5]);
        }
        else if (angle > 0 && angle < 60)
        {
            coverType = (int)cover[0];
        }
        else if (angle > 60 && angle < 120)
        {
            coverType = (int)cover[1];
        }
        else if (angle > 120 && angle < 180)
        {
            coverType = (int)cover[2];
        }
        else if (angle > 180 && angle < 240)
        {
            coverType = (int)cover[3];
        }
        else if (angle > 240 && angle < 300)
        {
            coverType = (int)cover[4];
        }
        else if (angle > 300 && angle < 360)
        {
            coverType = (int)cover[5];
        }
        else
        {
            Debug.Log("error getting cover, angle exceed 360");
        }

        if ((_CoverType)coverType == _CoverType.BlockHalf)
        {
            return(GameControlTB.GetCoverHalf());
        }
        else if ((_CoverType)coverType == _CoverType.BlockFull)
        {
            return(GameControlTB.GetCoverFull());
        }

        return(0);
    }