Initial site mode stuff
This commit is contained in:
73
lib/game/game.dart
Normal file
73
lib/game/game.dart
Normal file
@ -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<Level> 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,
|
||||
})));
|
||||
}
|
84
lib/game/generator_test_program.dart
Normal file
84
lib/game/generator_test_program.dart
Normal file
@ -0,0 +1,84 @@
|
||||
import 'dart:math' as math;
|
||||
import 'package:dartterm/assets.dart';
|
||||
import 'package:dartterm/algorithms/geometry.dart' as geo;
|
||||
import 'package:dartterm/colors.dart';
|
||||
import 'package:dartterm/gen/generator.dart';
|
||||
import 'package:dartterm/input.dart';
|
||||
import 'package:dartterm/skreek.dart';
|
||||
import 'package:dartterm/terminal.dart';
|
||||
import 'package:dartterm/world/level.dart';
|
||||
|
||||
void generator_test_program() async {
|
||||
Vaults vaults;
|
||||
while (true) {
|
||||
skreek("about to load template");
|
||||
at(0, 0).clear();
|
||||
at(0, 0).puts("Loading template!");
|
||||
Vaults? maybeVaults =
|
||||
getVaultsIfAvailable("assets/images/vaults/house1.png");
|
||||
|
||||
if (maybeVaults != null) {
|
||||
skreek("wasn't null!");
|
||||
vaults = maybeVaults;
|
||||
break;
|
||||
}
|
||||
await zzz(0.1);
|
||||
}
|
||||
|
||||
at(0, 0).clear();
|
||||
at(0, 0).puts("Loaded! $vaults");
|
||||
|
||||
int seed = 0;
|
||||
|
||||
while (true) {
|
||||
clear();
|
||||
Level output =
|
||||
Generator(math.Random(seed), vaults).generateLevel(Requirement(
|
||||
16,
|
||||
32,
|
||||
16,
|
||||
18,
|
||||
DirectionSet({
|
||||
Direction.up,
|
||||
Direction.down,
|
||||
Direction.left,
|
||||
Direction.right,
|
||||
})));
|
||||
var geo.Size(dx: w, dy: h) = output.size;
|
||||
for (var y = 0; y < h; y++) {
|
||||
for (var x = 0; x < w; x++) {
|
||||
var cursor = at(x * 2, y * 2).big();
|
||||
switch (output.tiles.get(x, y)) {
|
||||
case LevelTile.floor:
|
||||
case LevelTile.openDoor:
|
||||
cursor.puts(" ");
|
||||
case LevelTile.closedDoor:
|
||||
cursor.fg(Palette.demoDoor).puts("+");
|
||||
case LevelTile.exit:
|
||||
cursor.fg(Palette.demoExit).puts("X");
|
||||
case LevelTile.wall:
|
||||
cursor.puts("#");
|
||||
case null:
|
||||
cursor.puts("?");
|
||||
}
|
||||
}
|
||||
}
|
||||
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");
|
||||
switch (inp) {
|
||||
case Keystroke(text: "a"):
|
||||
seed -= 1;
|
||||
break inpLoop;
|
||||
case Keystroke(text: "d"):
|
||||
seed += 1;
|
||||
break inpLoop;
|
||||
default:
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
23
lib/game/sitemode/sitemode.dart
Normal file
23
lib/game/sitemode/sitemode.dart
Normal file
@ -0,0 +1,23 @@
|
||||
import 'package:dartterm/algorithms/geometry.dart' as geo;
|
||||
import 'package:dartterm/terminal.dart';
|
||||
import 'package:dartterm/world/level.dart';
|
||||
|
||||
Future<void> sitemode(Level level) async {
|
||||
await _SiteMode(level).start();
|
||||
}
|
||||
|
||||
class _SiteMode {
|
||||
Level level;
|
||||
late geo.Offset position;
|
||||
|
||||
_SiteMode(this.level) {
|
||||
position = level.spawn;
|
||||
}
|
||||
|
||||
Future<void> start() async {
|
||||
while (true) {
|
||||
at(0, 0).puts("Site mode!");
|
||||
await zzz(0.1);
|
||||
}
|
||||
}
|
||||
}
|
34
lib/game/ui_test_program.dart
Normal file
34
lib/game/ui_test_program.dart
Normal file
@ -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();
|
||||
}
|
||||
}
|
||||
*/
|
Reference in New Issue
Block a user