dartterm/lib/gen/vault.dart

76 lines
1.7 KiB
Dart
Raw Normal View History

part of 'generator.dart';
class Vault {
final Bitmap<VaultTile> 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);
}
2023-09-21 03:56:30 +00:00
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;
}
2023-09-23 00:55:29 +00:00
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;
}
}