35 lines
633 B
Dart
35 lines
633 B
Dart
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;
|
|
}
|
|
}
|