part of 'generator.dart'; class Requirement { final int vx, vy; final DirectionSet smooth; Requirement(this.vx, this.vy, this.smooth); Requirement flip() { return Requirement(vx, vy, smooth.flip()); } Requirement rotateLeft() { return Requirement(vy, vx, smooth.rotateLeft()); } Requirement rotateRight() { return Requirement(vy, vx, smooth.rotateRight()); } Requirement unReorient(int r) { assert(r >= 0 && r < 8); Requirement o = this; if (r % 2 == 1) { o = o.flip(); r -= 1; } while (r >= 2) { o = o.rotateLeft(); r -= 2; } return o; } }