From 76e92a2a50e82d891d450eea2db1807968d13520 Mon Sep 17 00:00:00 2001 From: Nyeogmi Date: Fri, 22 Sep 2023 18:35:47 -0700 Subject: [PATCH] Initial site mode stuff --- lib/colors.dart | 12 +-- lib/game/game.dart | 73 +++++++++++++++++++ .../generator_test_program.dart} | 40 ++-------- lib/game/sitemode/sitemode.dart | 23 ++++++ lib/game/ui_test_program.dart | 34 +++++++++ lib/gen/generator.dart | 1 + lib/gen/vault.dart | 34 --------- lib/main.dart | 2 +- 8 files changed, 143 insertions(+), 76 deletions(-) create mode 100644 lib/game/game.dart rename lib/{game.dart => game/generator_test_program.dart} (71%) create mode 100644 lib/game/sitemode/sitemode.dart create mode 100644 lib/game/ui_test_program.dart diff --git a/lib/colors.dart b/lib/colors.dart index 56fcb35..17610a1 100644 --- a/lib/colors.dart +++ b/lib/colors.dart @@ -1,11 +1,11 @@ import 'package:flutter/material.dart'; class Palette { - static const defaultBg = Colors.black; - static const defaultFg = Colors.white; + static const defaultBg = Color(0xFF272D1B); + static const uiBg = Color(0xFF847A4B); + static const defaultFg = Color(0xFFEEE9D1); + static const demoPlayer = Color(0xFFFEFEF2); - static const subtitle = Colors.red; - - static const demoDoor = Colors.red; - static const demoExit = Colors.red; + static const demoDoor = Color(0xFF847A4B); + static const demoExit = Color(0xFF847A4B); } diff --git a/lib/game/game.dart b/lib/game/game.dart new file mode 100644 index 0000000..bd8ed82 --- /dev/null +++ b/lib/game/game.dart @@ -0,0 +1,73 @@ +import 'dart:math' as math; +import 'package:dartterm/assets.dart'; +import 'package:dartterm/game/sitemode/sitemode.dart'; +import 'package:dartterm/gen/generator.dart'; +import 'package:dartterm/skreek.dart'; +import 'package:dartterm/terminal.dart'; +import 'package:dartterm/world/level.dart'; + +void main() async { + var level = await getLevel(); + + await sitemode(level); +} +/* +void main() async { + var descriptor = "generic"; + while (true) { + at(0, 0).clear(); + at(0, 0).puts("Hello, bats!"); + at(0, 2).fg(Palette.subtitle).small().puts("Beware of the bat!"); + at(4, 4) + .bg(Palette.subtitle) + .fg(Palette.defaultBg) + .big() + .highlight() + .act(Act( + isDefault: true, + label: "Strong!", + callback: () async { + log("strong!"); + descriptor = "strong"; + })) + .act(Act( + label: "Nocturnal!", + callback: () async { + log("nocturnal!"); + descriptor = "nocturnal"; + })) + .puts("ALTER BAT"); + + at(4, 8).normal().puts("A $descriptor bat!"); + + // await zzz(1.0); + await waitMenu(); + } +} +*/ + +Future getLevel() async { + Vaults vaults; + while (true) { + Vaults? maybeVaults = + getVaultsIfAvailable("assets/images/vaults/house1.png"); + + if (maybeVaults != null) { + skreek("wasn't null!"); + vaults = maybeVaults; + break; + } + await zzz(0.1); + } + return Generator(math.Random(0), vaults).generateLevel(Requirement( + 16, + 32, + 16, + 18, + DirectionSet({ + Direction.up, + Direction.down, + Direction.left, + Direction.right, + }))); +} diff --git a/lib/game.dart b/lib/game/generator_test_program.dart similarity index 71% rename from lib/game.dart rename to lib/game/generator_test_program.dart index ba64938..239ec42 100644 --- a/lib/game.dart +++ b/lib/game/generator_test_program.dart @@ -8,7 +8,7 @@ import 'package:dartterm/skreek.dart'; import 'package:dartterm/terminal.dart'; import 'package:dartterm/world/level.dart'; -void main() async { +void generator_test_program() async { Vaults vaults; while (true) { skreek("about to load template"); @@ -63,6 +63,10 @@ void main() async { } } } + at(output.spawn.x * 2, output.spawn.y * 2) + .fg(Palette.demoPlayer) + .big() + .puts("\u00ff"); inpLoop: await for (var inp in rawInput()) { skreek("$inp $seed"); @@ -78,37 +82,3 @@ void main() async { } } } -/* -void main() async { - var descriptor = "generic"; - while (true) { - at(0, 0).clear(); - at(0, 0).puts("Hello, bats!"); - at(0, 2).fg(Palette.subtitle).small().puts("Beware of the bat!"); - at(4, 4) - .bg(Palette.subtitle) - .fg(Palette.defaultBg) - .big() - .highlight() - .act(Act( - isDefault: true, - label: "Strong!", - callback: () async { - log("strong!"); - descriptor = "strong"; - })) - .act(Act( - label: "Nocturnal!", - callback: () async { - log("nocturnal!"); - descriptor = "nocturnal"; - })) - .puts("ALTER BAT"); - - at(4, 8).normal().puts("A $descriptor bat!"); - - // await zzz(1.0); - await waitMenu(); - } -} -*/ \ No newline at end of file diff --git a/lib/game/sitemode/sitemode.dart b/lib/game/sitemode/sitemode.dart new file mode 100644 index 0000000..06a5b35 --- /dev/null +++ b/lib/game/sitemode/sitemode.dart @@ -0,0 +1,23 @@ +import 'package:dartterm/algorithms/geometry.dart' as geo; +import 'package:dartterm/terminal.dart'; +import 'package:dartterm/world/level.dart'; + +Future sitemode(Level level) async { + await _SiteMode(level).start(); +} + +class _SiteMode { + Level level; + late geo.Offset position; + + _SiteMode(this.level) { + position = level.spawn; + } + + Future start() async { + while (true) { + at(0, 0).puts("Site mode!"); + await zzz(0.1); + } + } +} diff --git a/lib/game/ui_test_program.dart b/lib/game/ui_test_program.dart new file mode 100644 index 0000000..adc3e9e --- /dev/null +++ b/lib/game/ui_test_program.dart @@ -0,0 +1,34 @@ +/* +void main() async { + var descriptor = "generic"; + while (true) { + at(0, 0).clear(); + at(0, 0).puts("Hello, bats!"); + at(0, 2).fg(Palette.subtitle).small().puts("Beware of the bat!"); + at(4, 4) + .bg(Palette.subtitle) + .fg(Palette.defaultBg) + .big() + .highlight() + .act(Act( + isDefault: true, + label: "Strong!", + callback: () async { + log("strong!"); + descriptor = "strong"; + })) + .act(Act( + label: "Nocturnal!", + callback: () async { + log("nocturnal!"); + descriptor = "nocturnal"; + })) + .puts("ALTER BAT"); + + at(4, 8).normal().puts("A $descriptor bat!"); + + // await zzz(1.0); + await waitMenu(); + } +} +*/ \ No newline at end of file diff --git a/lib/gen/generator.dart b/lib/gen/generator.dart index 4ed9c33..22e76e1 100644 --- a/lib/gen/generator.dart +++ b/lib/gen/generator.dart @@ -12,6 +12,7 @@ part 'direction_set.dart'; part 'orientation.dart'; part 'requirement.dart'; part 'vault.dart'; +part 'vault_tile.dart'; part 'vaults.dart'; const vaultTries = 30; diff --git a/lib/gen/vault.dart b/lib/gen/vault.dart index 583828f..e20573f 100644 --- a/lib/gen/vault.dart +++ b/lib/gen/vault.dart @@ -39,37 +39,3 @@ class Vault { 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; - } -} diff --git a/lib/main.dart b/lib/main.dart index e62ed96..365147a 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,6 +1,6 @@ import 'package:dartterm/colors.dart'; import 'package:dartterm/input.dart' as input; -import 'package:dartterm/game.dart' as game; +import 'package:dartterm/game/game.dart' as game; import 'package:dartterm/terminal.dart' as terminal; import 'package:flutter/material.dart'; import 'package:flutter/scheduler.dart';