66 lines
1.6 KiB
Dart
66 lines
1.6 KiB
Dart
part of "generator.dart";
|
|
|
|
// TODO: There are many more efficient ways to do this
|
|
class DirectionSet {
|
|
final Set<Direction> directions;
|
|
|
|
DirectionSet(this.directions);
|
|
|
|
DirectionSet flip() {
|
|
var ds2 = DirectionSet({});
|
|
for (var i in directions) {
|
|
switch (i) {
|
|
case Direction.up:
|
|
ds2.directions.add(Direction.up);
|
|
case Direction.left:
|
|
ds2.directions.add(Direction.right);
|
|
case Direction.down:
|
|
ds2.directions.add(Direction.down);
|
|
case Direction.right:
|
|
ds2.directions.add(Direction.left);
|
|
}
|
|
}
|
|
return ds2;
|
|
}
|
|
|
|
DirectionSet rotateLeft() {
|
|
var ds2 = DirectionSet({});
|
|
for (var i in directions) {
|
|
switch (i) {
|
|
case Direction.up:
|
|
ds2.directions.add(Direction.left);
|
|
case Direction.left:
|
|
ds2.directions.add(Direction.down);
|
|
case Direction.down:
|
|
ds2.directions.add(Direction.right);
|
|
case Direction.right:
|
|
ds2.directions.add(Direction.up);
|
|
}
|
|
}
|
|
return ds2;
|
|
}
|
|
|
|
DirectionSet rotateRight() {
|
|
var ds2 = DirectionSet({});
|
|
for (var i in directions) {
|
|
switch (i) {
|
|
case Direction.up:
|
|
ds2.directions.add(Direction.right);
|
|
case Direction.right:
|
|
ds2.directions.add(Direction.down);
|
|
case Direction.down:
|
|
ds2.directions.add(Direction.left);
|
|
case Direction.left:
|
|
ds2.directions.add(Direction.up);
|
|
}
|
|
}
|
|
return ds2;
|
|
}
|
|
|
|
DirectionSet clone() {
|
|
var ds2 = DirectionSet({});
|
|
ds2.directions.addAll(directions);
|
|
return ds2;
|
|
}
|
|
}
|