Пример #1
0
    public static GameDiagonal RotateCCW(GameDiagonal input)
    {
        if (input == Nil)
        {
            return(Nil);
        }
        if (input == All)
        {
            return(All);
        }

        GameDiagonal output = Nil;

        if (input.Test(GameDiagonal.NorthWest))
        {
            output |= GameDiagonal.SouthWest;
        }
        if (input.Test(GameDiagonal.NorthEast))
        {
            output |= GameDiagonal.SouthEast;
        }
        if (input.Test(GameDiagonal.SouthEast))
        {
            output |= GameDiagonal.NorthEast;
        }
        if (input.Test(GameDiagonal.SouthWest))
        {
            output |= GameDiagonal.NorthWest;
        }
        return(output);
    }
Пример #2
0
    public static GameDiagonal RandomSingle(this GameDiagonal input)
    {
        List <GameDiagonal> options = new List <GameDiagonal>();

        if (input.Test(GameDiagonal.NorthWest))
        {
            options.Add(GameDiagonal.NorthWest);
        }
        if (input.Test(GameDiagonal.NorthEast))
        {
            options.Add(GameDiagonal.NorthEast);
        }
        if (input.Test(GameDiagonal.SouthEast))
        {
            options.Add(GameDiagonal.SouthEast);
        }
        if (input.Test(GameDiagonal.SouthWest))
        {
            options.Add(GameDiagonal.SouthWest);
        }
        if (options.Count == 0)
        {
            return(GameDiagonalHelper.Nil);
        }
        return(options[Random.Range(0, options.Count)]);
    }
Пример #3
0
    /**
     * Return in degrees
     */
    public static float AngleFrom(GameDiagonal from, GameDiagonal to)
    {
        switch (from)
        {
        case GameDiagonal.NorthWest:
            switch (to)
            {
            case GameDiagonal.NorthWest: return(0f);

            case GameDiagonal.NorthEast: return(90f);

            case GameDiagonal.SouthEast: return(180f);

            case GameDiagonal.SouthWest: return(270f);
            }
            break;

        case GameDiagonal.NorthEast:
            switch (to)
            {
            case GameDiagonal.NorthWest: return(270f);

            case GameDiagonal.NorthEast: return(0f);

            case GameDiagonal.SouthEast: return(90f);

            case GameDiagonal.SouthWest: return(180f);
            }
            break;

        case GameDiagonal.SouthEast:
            switch (to)
            {
            case GameDiagonal.NorthWest: return(180f);

            case GameDiagonal.NorthEast: return(270f);

            case GameDiagonal.SouthEast: return(0f);

            case GameDiagonal.SouthWest: return(90f);
            }
            break;

        case GameDiagonal.SouthWest:
            switch (to)
            {
            case GameDiagonal.NorthWest: return(90f);

            case GameDiagonal.NorthEast: return(180f);

            case GameDiagonal.SouthEast: return(270f);

            case GameDiagonal.SouthWest: return(0f);
            }
            break;
        }

        return(0f);
    }
Пример #4
0
    public static int CountContains(this GameDiagonal input, params GameDiagonal[] tests)
    {
        int count = 0;

        foreach (GameDiagonal test in tests)
        {
            if (input.Test(test))
            {
                count++;
            }
        }
        return(count);
    }
Пример #5
0
    public static List <GameDiagonal> ToList(this GameDiagonal input)
    {
        List <GameDiagonal> results = new List <GameDiagonal>();

        if (input.Test(GameDiagonal.NorthWest))
        {
            results.Add(GameDiagonal.NorthWest);
        }
        if (input.Test(GameDiagonal.NorthEast))
        {
            results.Add(GameDiagonal.NorthEast);
        }
        if (input.Test(GameDiagonal.SouthEast))
        {
            results.Add(GameDiagonal.SouthEast);
        }
        if (input.Test(GameDiagonal.SouthWest))
        {
            results.Add(GameDiagonal.SouthWest);
        }
        return(results);
    }
Пример #6
0
    public static int Count(this GameDiagonal input)
    {
        int total = 0;

        if (input.Test(GameDiagonal.NorthWest))
        {
            total++;
        }
        if (input.Test(GameDiagonal.NorthEast))
        {
            total++;
        }
        if (input.Test(GameDiagonal.SouthEast))
        {
            total++;
        }
        if (input.Test(GameDiagonal.SouthWest))
        {
            total++;
        }
        return(total);
    }
Пример #7
0
 public static GameDiagonal RotateCCW(this GameDiagonal input)
 {
     return(GameDiagonalHelper.RotateCCW(input));
 }
Пример #8
0
 public static GameDiagonal Opposite(this GameDiagonal input)
 {
     return(GameDiagonalHelper.Opposite(input));
 }
Пример #9
0
 public static GameDiagonal Invert(this GameDiagonal input)
 {
     return(GameDiagonalHelper.Invert(input));
 }
Пример #10
0
 public static bool Within(this GameDiagonal input, GameDiagonal test)
 {
     return((input & test) == input);
 }
Пример #11
0
 public static bool Test(this GameDiagonal input, GameDiagonal test)
 {
     return((input & test) == test);
 }