public KakuBoxMovingStep(KakuBoxState state, int movingBoxIndex, BoxMovingDirection boxMovingDirection) : base(state, movingBoxIndex, boxMovingDirection) { var movingBox = state[movingBoxIndex]; switch (boxMovingDirection) { case BoxMovingDirection.Up: kakuPushingPoint = new Point(movingBox.X, movingBox.Y - 1); break; case BoxMovingDirection.Down: kakuPushingPoint = new Point(movingBox.X, movingBox.Y + 1); break; case BoxMovingDirection.Left: kakuPushingPoint = new Point(movingBox.X + 1, movingBox.Y); break; case BoxMovingDirection.Right: kakuPushingPoint = new Point(movingBox.X - 1, movingBox.Y); break; default: break; } }
public BoxMovingStep(BoxState state, int movingBoxIndex, BoxMovingDirection boxMovingDirection) { if (state == null) { throw new ArgumentNullException("state"); } if (movingBoxIndex < 0 || movingBoxIndex >= state.BoxCount) { throw new ArgumentOutOfRangeException("movingBoxIndex"); } Orignal = state; MovingBoxIndex = movingBoxIndex; MovingDirection = boxMovingDirection; }
protected override BoxMovingStep MakeStep(int boxIdx, BoxMovingDirection direction) { return(new KakuBoxMovingStep(this, boxIdx, direction)); }
protected virtual BoxMovingStep MakeStep(int boxIdx, BoxMovingDirection direction) { return(new BoxMovingStep(this, boxIdx, direction)); }