part of 'generator.dart'; class Vault { final Bitmap tiles; final DirectionSet smooth; geo.Size get size => tiles.size; int get vx => size.dx; int get vy => size.dy; Vault(this.tiles, this.smooth); static Vault blank(int vx, int vy, VaultTile lt, DirectionSet smooth) { return Vault(Bitmap.blank(vx, vy, lt), smooth); } static Vault blankWith( int vx, int vy, VaultTile Function(int, int) lt, DirectionSet smooth) { return Vault(Bitmap.blankWith(vx, vy, lt), smooth); } void clear(VaultTile lt) { tiles.clear(lt); } void blitFrom(Vault other, int dx, int dy) { tiles.blitFromWith(other.tiles, dx, dy, mergeVaultTile); } Vault flip() { return Vault(tiles.flip(), smooth.flip()); } Vault rotateRight() { return Vault(tiles.rotateRight(), smooth.rotateRight()); } Vault rotateLeft() { return Vault(tiles.rotateLeft(), smooth.rotateLeft()); } } VaultTile mergeVaultTile(VaultTile bottom, VaultTile top) { if (bottom == VaultTile.wall && top == VaultTile.archpronewall) { return VaultTile.wall; } if (bottom == VaultTile.wall && top == VaultTile.archwall) { return VaultTile.wall; } if (bottom == VaultTile.archwall && top == VaultTile.archpronewall) { return VaultTile.archwall; } return top; }