private void MakeFrontMove(IEdgeFacelet otherEdgeFacelet) { RotateLayer(Front, otherEdgeFacelet.Normal, Down); RotateLayer(Down, Clockwise); RotateLayer(Right, Clockwise); RotateLayer(Front, CounterClockwise); }
private int GetOrderBasedOnSide(IEdgeFacelet faceletToSolve, IEdgeFacelet otherEdgeFacelet) { if (faceletToSolve.IsSameNormal(Front)) return 0; if (faceletToSolve.IsSameNormal(Back)) return 1; if (faceletToSolve.IsSameNormal(Right)) return 5; if (faceletToSolve.IsSameNormal(Left)) return 4; if (faceletToSolve.IsSameNormal(Up)) return 3; if (faceletToSolve.IsSameNormal(Down)) return 2; return 0; }
public override void Build(Cube cube) { CenterFacelet = cube.CenterFacelets.First(f => Normal.IsSame(f.Normal)); OtherEdgeFacelet = cube.EdgeFacelets.Single(f => !ReferenceEquals(this, f) && f.CubieCenter.IsSame(CubieCenter)); }
private void SolveBasedOnSide(IEdgeFacelet faceletToSolve, IEdgeFacelet otherEdgeFacelet) { if (faceletToSolve.IsSameNormal(Front)) MakeFrontMove(otherEdgeFacelet); else if (faceletToSolve.IsSameNormal(Back)) MakeBackMove(otherEdgeFacelet); else if (faceletToSolve.IsSameNormal(Right)) MakeRightMove(otherEdgeFacelet); else if (faceletToSolve.IsSameNormal(Left)) MakeLeftMove(otherEdgeFacelet); else if (faceletToSolve.IsSameNormal(Up)) MakeUpMove(otherEdgeFacelet); else if (faceletToSolve.IsSameNormal(Down)) MakeDownMove(otherEdgeFacelet); }
private void MakeUpMove(IEdgeFacelet otherEdgeFacelet) { RotateLayer(otherEdgeFacelet.Normal, Twice); RotateLayer(Down, Twice); RotateLayer(Front, Twice); }
private void MakeLeftMove(IEdgeFacelet otherEdgeFacelet) { RotateLayer(Left, otherEdgeFacelet.Normal, Front); RotateLayer(Front, Clockwise); }
private void SolveFacelet(IEdgeFacelet faceletToSolve) { var otherEdgeFacelet = faceletToSolve.OtherEdgeFacelet; SetFrontDirection(otherEdgeFacelet.CenterFacelet, _topCenterFacelet); SolveBasedOnSide(faceletToSolve, otherEdgeFacelet); }
private int GetFaceletOrder(IEdgeFacelet faceletToSolve) { var otherEdgeFacelet = faceletToSolve.OtherEdgeFacelet; SetFrontDirection(otherEdgeFacelet.CenterFacelet, _topCenterFacelet); return GetOrderBasedOnSide(faceletToSolve, otherEdgeFacelet); }
private void MakeUpMove(IEdgeFacelet otherEdgeFacelet) { RotateLayer(otherEdgeFacelet.Normal, Twice); MakeDownMove(otherEdgeFacelet); }