Esempio n. 1
0
 public WabeLayout(Wabe wabe, WabeDirection direction)
 {
     if (wabe == null)
         throw new ArgumentNullException(nameof(wabe));
     _wabe = wabe;
     Direction = direction;
     GenerateFieldArray();
 }
Esempio n. 2
0
 public WabeLayout(Wabe wabe, WabeDirection direction)
 {
     if (wabe == null)
     {
         throw new ArgumentNullException(nameof(wabe));
     }
     _wabe     = wabe;
     Direction = direction;
     GenerateFieldArray();
 }
Esempio n. 3
0
 public WabeLayout(Wabe wabe, Vector2 position)
 {
     if (wabe == null)
     {
         throw new ArgumentNullException(nameof(wabe));
     }
     _wabe     = wabe;
     Direction = CalculateDirection(position);
     GenerateFieldArray();
 }
Esempio n. 4
0
        private WabeFieldType CalculateFieldType(WabeType type, WabeDirection direction, int index)
        {
            if (index == 4)
            {
                return(WabeFieldType.Center);
            }
            if (0 != ((index + 1) & 1))
            {
                return(WabeFieldType.Unused);
            }
            switch (type)
            {
            case WabeType.TwoWabe:
                switch (direction)
                {
                case WabeDirection.Up | WabeDirection.Left:
                    return((0 == (index & 4)) ? WabeFieldType.Unused : WabeFieldType.Unpowered);

                case WabeDirection.Down | WabeDirection.Right:
                    return((0 != (index & 4)) ? WabeFieldType.Unused : WabeFieldType.Unpowered);

                case WabeDirection.Down | WabeDirection.Left:
                    return((0 != (index & 2)) ? WabeFieldType.Unused : WabeFieldType.Unpowered);

                case WabeDirection.Up | WabeDirection.Right:
                    return((0 == (index & 2)) ? WabeFieldType.Unused : WabeFieldType.Unpowered);
                }
                break;

            case WabeType.ThreeWabe:
                switch (direction)
                {
                case WabeDirection.Left:
                    return(index == 3 ? WabeFieldType.Unused : WabeFieldType.Unpowered);

                case WabeDirection.Right:
                    return(index == 5 ? WabeFieldType.Unused : WabeFieldType.Unpowered);

                case WabeDirection.Up:
                    return(index == 1 ? WabeFieldType.Unused : WabeFieldType.Unpowered);

                case WabeDirection.Down:
                    return(index == 7 ? WabeFieldType.Unused : WabeFieldType.Unpowered);
                }
                break;

            case WabeType.FourWabe:
                if (direction == WabeDirection.Mid)
                {
                    return(WabeFieldType.Unpowered);
                }
                break;
            }
            throw new ArgumentException("The given index or direction does not match any field type.", nameof(index));
        }
Esempio n. 5
0
 private WabeFieldType CalculateFieldType(WabeType type, WabeDirection direction, int index)
 {
     if (index == 4) return WabeFieldType.Center;
     if (0 != ((index + 1) & 1)) return WabeFieldType.Unused;
     switch (type)
     {
         case WabeType.TwoWabe:
             switch (direction)
             {
                 case WabeDirection.Up | WabeDirection.Left:
                     return (0 == (index & 4)) ? WabeFieldType.Unused : WabeFieldType.Unpowered;
                 case WabeDirection.Down | WabeDirection.Right:
                     return (0 != (index & 4)) ? WabeFieldType.Unused : WabeFieldType.Unpowered;
                 case WabeDirection.Down | WabeDirection.Left:
                     return (0 != (index & 2)) ? WabeFieldType.Unused : WabeFieldType.Unpowered;
                 case WabeDirection.Up | WabeDirection.Right:
                     return (0 == (index & 2)) ? WabeFieldType.Unused : WabeFieldType.Unpowered;
             }
             break;
         case WabeType.ThreeWabe:
             switch (direction)
             {
                 case WabeDirection.Left:
                     return index == 3 ? WabeFieldType.Unused : WabeFieldType.Unpowered;
                 case WabeDirection.Right:
                     return index == 5 ? WabeFieldType.Unused : WabeFieldType.Unpowered;
                 case WabeDirection.Up:
                     return index == 1 ? WabeFieldType.Unused : WabeFieldType.Unpowered;
                 case WabeDirection.Down:
                     return index == 7 ? WabeFieldType.Unused : WabeFieldType.Unpowered;
             }
             break;
         case WabeType.FourWabe:
             if (direction == WabeDirection.Mid) return WabeFieldType.Unpowered;
             break;
     }
     throw new ArgumentException("The given index or direction does not match any field type.", nameof(index));
 }