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); } }
public void Rotate(CubeSlice slice, MoveDirection direction = MoveDirection.Single) { var movement = MovementRepository.Get(slice, direction) ?? throw new Exception($"Unknown rotation: {slice} {direction}"); DoRotation(movement); }
private List <Piece> GetPieces(CubeSlice cubeSlice) { return(PiecesSelector.PiecesBySlice(_pieces, cubeSlice)); }
/// <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)); }
private void DoRotation(CubeSlice slice, MoveDirection moveDirection) { _cube.Rotate(slice, moveDirection); UpdateCubeView(); }