Пример #1
0
        public static Location South(Location from, Blue blue, Red red, UnmarkedEdges unmarked)
        {
            if (!IsValidLocation(from))
            {
                return(Location.Undefined);
            }
            switch (from)
            {
            case Location.A1:
                if (red == Red.CanWrap)
                {
                    return(Location.A5);
                }
                break;

            case Location.B1:
                if (red == Red.CanWrap)
                {
                    return(Location.B6);
                }
                break;

            case Location.C1:
                if (red == Red.CanWrap)
                {
                    return(Location.C7);
                }
                break;

            case Location.D1:
                if (red == Red.CanWrap)
                {
                    return(Location.D8);
                }
                break;

            case Location.E1:
                if (red == Red.CanWrap)
                {
                    return(Location.E9);
                }
                break;

            case Location.F1:
                if (red == Red.CanWrap)
                {
                    return(Location.F8);
                }
                break;

            case Location.G1:
                if (red == Red.CanWrap)
                {
                    return(Location.G7);
                }
                break;

            case Location.H1:
                if (red == Red.CanWrap)
                {
                    return(Location.H6);
                }
                break;

            case Location.I1:
                if (red == Red.CanWrap)
                {
                    return(Location.I5);
                }
                break;

            default: return(from + 0x20);
            }

            return(Location.Undefined);
        }
Пример #2
0
        public static Location SouthWest(Location from, Blue blue, Red red, UnmarkedEdges unmarked)
        {
            if (!IsValidLocation(from))
            {
                return(Location.Undefined);
            }
            switch (from)
            {
            case Location.A1:
                if (red == Red.CanWrap)
                {
                    return(Location.I5);
                }
                break;

            case Location.B1:
                if (red == Red.CanWrap)
                {
                    return(Location.I4);
                }
                break;

            case Location.C1:
                if (red == Red.CanWrap)
                {
                    return(Location.I3);
                }
                break;

            case Location.D1:
                if (red == Red.CanWrap)
                {
                    return(Location.I2);
                }
                break;

            case Location.E1:
                if (red == Red.CanWrap)
                {
                    return(Location.I1);
                }
                break;

            case Location.A2:
                if (unmarked == UnmarkedEdges.CanWrap)
                {
                    return(Location.H6);
                }
                break;

            case Location.A3:
                if (unmarked == UnmarkedEdges.CanWrap)
                {
                    return(Location.G7);
                }
                break;

            case Location.A4:
                if (unmarked == UnmarkedEdges.CanWrap)
                {
                    return(Location.F8);
                }
                break;

            case Location.A5:
                if (unmarked == UnmarkedEdges.CanWrap)
                {
                    return(Location.E9);
                }
                break;

            default: return(from + 0x0F);
            }

            return(Location.Undefined);
        }
Пример #3
0
        public static Location NorthWest(Location from, Blue blue, Red red, UnmarkedEdges unmarked)
        {
            if (!IsValidLocation(from))
            {
                return(Location.Undefined);
            }
            switch (from)
            {
            case Location.A5:
                if (blue == Blue.CanWrap)
                {
                    return(Location.I1);
                }
                break;

            case Location.B6:
                if (blue == Blue.CanWrap)
                {
                    return(Location.I2);
                }
                break;

            case Location.C7:
                if (blue == Blue.CanWrap)
                {
                    return(Location.I3);
                }
                break;

            case Location.D8:
                if (blue == Blue.CanWrap)
                {
                    return(Location.I4);
                }
                break;

            case Location.E9:
                if (blue == Blue.CanWrap)
                {
                    return(Location.I5);
                }
                break;

            case Location.A1:
                if (unmarked == UnmarkedEdges.CanWrap)
                {
                    return(Location.E1);
                }
                break;

            case Location.A2:
                if (unmarked == UnmarkedEdges.CanWrap)
                {
                    return(Location.F1);
                }
                break;

            case Location.A3:
                if (unmarked == UnmarkedEdges.CanWrap)
                {
                    return(Location.G1);
                }
                break;

            case Location.A4:
                if (unmarked == UnmarkedEdges.CanWrap)
                {
                    return(Location.H1);
                }
                break;

            default: return(from - 0x11);
            }

            return(Location.Undefined);
        }
Пример #4
0
        public static Location SouthEast(Location from, Blue blue, Red red, UnmarkedEdges unmarked)
        {
            if (!IsValidLocation(from))
            {
                return(Location.Undefined);
            }
            switch (from)
            {
            case Location.E1:
                if (red == Red.CanWrap)
                {
                    return(Location.A1);
                }
                break;

            case Location.F1:
                if (red == Red.CanWrap)
                {
                    return(Location.A2);
                }
                break;

            case Location.G1:
                if (red == Red.CanWrap)
                {
                    return(Location.A3);
                }
                break;

            case Location.H1:
                if (red == Red.CanWrap)
                {
                    return(Location.A4);
                }
                break;

            case Location.I1:
                if (red == Red.CanWrap)
                {
                    return(Location.A5);
                }
                break;

            case Location.I2:
                if (unmarked == UnmarkedEdges.CanWrap)
                {
                    return(Location.B6);
                }
                break;

            case Location.I3:
                if (unmarked == UnmarkedEdges.CanWrap)
                {
                    return(Location.C7);
                }
                break;

            case Location.I4:
                if (unmarked == UnmarkedEdges.CanWrap)
                {
                    return(Location.D8);
                }
                break;

            case Location.I5:
                if (unmarked == UnmarkedEdges.CanWrap)
                {
                    return(Location.E9);
                }
                break;

            default: return(from + 0x11);
            }

            return(Location.Undefined);
        }
Пример #5
0
        public static Location NorthEast(Location from, Blue blue, Red red, UnmarkedEdges unmarked)
        {
            if (!IsValidLocation(from))
            {
                return(Location.Undefined);
            }
            switch (from)
            {
            case Location.E9:
                if (blue == Blue.CanWrap)
                {
                    return(Location.A5);
                }
                break;

            case Location.F8:
                if (blue == Blue.CanWrap)
                {
                    return(Location.A4);
                }
                break;

            case Location.G7:
                if (blue == Blue.CanWrap)
                {
                    return(Location.A3);
                }
                break;

            case Location.H6:
                if (blue == Blue.CanWrap)
                {
                    return(Location.A2);
                }
                break;

            case Location.I5:
                if (blue == Blue.CanWrap)
                {
                    return(Location.A1);
                }
                break;

            case Location.I4:
                if (unmarked == UnmarkedEdges.CanWrap)
                {
                    return(Location.B1);
                }
                break;

            case Location.I3:
                if (unmarked == UnmarkedEdges.CanWrap)
                {
                    return(Location.C1);
                }
                break;

            case Location.I2:
                if (unmarked == UnmarkedEdges.CanWrap)
                {
                    return(Location.D1);
                }
                break;

            case Location.I1:
                if (unmarked == UnmarkedEdges.CanWrap)
                {
                    return(Location.E1);
                }
                break;

            default: return(from - 0xF);
            }

            return(Location.Undefined);
        }
Пример #6
0
        public static Location North(Location from, Blue blue, Red red, UnmarkedEdges unmarked)
        {
            if (!IsValidLocation(from))
            {
                return(Location.Undefined);
            }
            switch (from)
            {
            case Location.A5:
                if (blue == Blue.CanWrap)
                {
                    return(Location.A1);
                }
                break;

            case Location.B6:
                if (blue == Blue.CanWrap)
                {
                    return(Location.B1);
                }
                break;

            case Location.C7:
                if (blue == Blue.CanWrap)
                {
                    return(Location.C1);
                }
                break;

            case Location.D8:
                if (blue == Blue.CanWrap)
                {
                    return(Location.D1);
                }
                break;

            case Location.E9:
                if (blue == Blue.CanWrap)
                {
                    return(Location.E1);
                }
                break;

            case Location.F8:
                if (blue == Blue.CanWrap)
                {
                    return(Location.F1);
                }
                break;

            case Location.G7:
                if (blue == Blue.CanWrap)
                {
                    return(Location.G1);
                }
                break;

            case Location.H6:
                if (blue == Blue.CanWrap)
                {
                    return(Location.H1);
                }
                break;

            case Location.I5:
                if (blue == Blue.CanWrap)
                {
                    return(Location.I1);
                }
                break;

            default:
                return(from - 0x20);
            }

            return(Location.Undefined);
        }