示例#1
0
        public static List <Piece> PiecesBySlice(List <Piece> pieces, CubeSlice slice)
        {
            switch (slice)
            {
            case CubeSlice.Up:
                return(pieces.Where(p => p.Position.Y == 2).ToList());

            case CubeSlice.Front:
                return(pieces.Where(p => p.Position.Z == 0).ToList());

            case CubeSlice.Down:
                return(pieces.Where(p => p.Position.Y == 0).ToList());

            case CubeSlice.Back:
                return(pieces.Where(p => p.Position.Z == 2).ToList());

            case CubeSlice.Right:
                return(pieces.Where(p => p.Position.X == 2).ToList());

            case CubeSlice.Left:
                return(pieces.Where(p => p.Position.X == 0).ToList());

            case CubeSlice.Middle:
                return(pieces.Where(p => p.Position.X == 1).ToList());

            case CubeSlice.Equator:
                return(pieces.Where(p => p.Position.Y == 1).ToList());

            case CubeSlice.Standing:
                return(pieces.Where(p => p.Position.Z == 1).ToList());

            default:
                throw new ArgumentOutOfRangeException(nameof(slice), slice, null);
            }
        }
示例#2
0
        public void Rotate(CubeSlice slice, MoveDirection direction = MoveDirection.Single)
        {
            var movement = MovementRepository.Get(slice, direction) ?? throw new Exception($"Unknown rotation: {slice} {direction}");

            DoRotation(movement);
        }
示例#3
0
 private List <Piece> GetPieces(CubeSlice cubeSlice)
 {
     return(PiecesSelector.PiecesBySlice(_pieces, cubeSlice));
 }
示例#4
0
 /// <summary>
 /// Get a movement by side and direction.
 /// </summary>
 /// <param name="side"></param>
 /// <param name="direction"></param>
 /// <returns>Liefert <see cref="Movement"/> oder NULL wenn kein passender Eintrag gefunden wurde.</returns>
 public static Movement Get(CubeSlice slice, MoveDirection direction)
 {
     return(Instance._movements.SingleOrDefault(m => m.Slice == slice && m.Direction == direction));
 }
示例#5
0
 private void DoRotation(CubeSlice slice, MoveDirection moveDirection)
 {
     _cube.Rotate(slice, moveDirection);
     UpdateCubeView();
 }