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; } LevelTile flattenVaultTile(VaultTile vt) { switch (vt) { case VaultTile.meta0: case VaultTile.defaultwall: case VaultTile.archpronewall: case VaultTile.archwall: case VaultTile.wall: return LevelTile.wall; case VaultTile.exit: return LevelTile.exit; case VaultTile.door: return LevelTile.closedDoor; case VaultTile.doorpronefloor: case VaultTile.bspfloor: case VaultTile.floor: return LevelTile.floor; } }