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;
|
||
|
}
|
||
|
}
|