Vault/BSP based level generator, part 1

This commit is contained in:
2023-09-19 21:02:04 -07:00
parent ed57ba18ed
commit dd92246402
6 changed files with 348 additions and 796 deletions

View File

@ -1,5 +1,3 @@
import 'package:dartterm/wfc/template.dart';
enum LevelTile {
exit,
door,
@ -11,23 +9,21 @@ class Level {
Set<(int, int)> openCells = {};
}
Future<WfcTemplate<LevelTile>> loadLevelWfcAsync(String name) async {
return WfcTemplate.loadAsync(name, 3, (c) {
switch (c) {
// ABGR
case 0xFF000000:
case 0xFF707070:
return LevelTile.wall;
case 0xFFFFFFFF:
case 0xFF00FFFF:
case 0xFFFF00FF:
return LevelTile.floor;
case 0xFFFF8700:
return LevelTile.door;
case 0xFF0000FF:
return LevelTile.exit;
default:
throw Exception("unrecognized pixel: $c");
}
});
LevelTile colorToTile(int c) {
switch (c) {
// ABGR
case 0xFF000000:
case 0xFF707070:
return LevelTile.wall;
case 0xFFFFFFFF:
case 0xFF00FFFF:
case 0xFFFF00FF:
return LevelTile.floor;
case 0xFFFF8700:
return LevelTile.door;
case 0xFF0000FF:
return LevelTile.exit;
default:
throw Exception("unrecognized pixel: $c");
}
}