diff --git a/src/main.ts b/src/main.ts index be216d3..739d854 100755 --- a/src/main.ts +++ b/src/main.ts @@ -1,8 +1,6 @@ #!/usr/bin/env -S deno run -A import { writeAll } from "https://deno.land/std@0.224.0/io/mod.ts" - -import { Crayon, crayon } from "https://deno.land/x/crayon@3.3.3/mod.ts" import { mkSimplexNoise, SimplexNoise } from "npm:@spissvinkel/simplex-noise@1.0.1" async function main() { @@ -10,7 +8,7 @@ async function main() { const fishes = await Fishes.load("./assets/fishes") for await (const moved of fishes.movements()) { console.log(moved.name, "at", moved.position) - const displayed = esc_clear() + fishes.fishes.map((f) => f.display()).join("") + "\n" + const displayed = esc_clear() + fishes.fishes.map(display).join("") + "\n" connections.send(displayed) } } @@ -93,86 +91,29 @@ class Fish { if (this.position[0] > bounds[1][0]) this.position[0] = bounds[1][0] if (this.position[1] > bounds[1][1]) this.position[1] = bounds[1][1] } - - /** - * ``` - * _ - * / - * ##### - * ##### - * ##### - * ``` - */ - public display() { - const tick_pad = " ".repeat(this.size[0]) - // TODO : add position and color - return [ - tick_pad + " _ " + this.name, - tick_pad + "/", - ...this.shape, - ] - .map((l, i) => esc_goto([this.position[0], this.position[1] + i]) + l) - .join("") + "\n" - } } -class Vec2 { - public constructor( - public x: number, - public y: number, - ) {} - - static of(ord: number) { - return new Vec2(ord, ord) - } - - add(rhs: Vec2) { - return new Vec2( - this.x + rhs.x, - this.y + rhs.y, - ) - } - - sub(rhs: Vec2) { - return new Vec2( - this.x - rhs.x, - this.y - rhs.y, - ) - } - - mul(rhs: Vec2) { - return new Vec2( - this.x * rhs.x, - this.y * rhs.y, - ) - } - - div(rhs: Vec2) { - return new Vec2( - this.x / rhs.x, - this.y / rhs.y, - ) - } - - fac(rhs: number) { - return new Vec2( - this.x * rhs, - this.y * rhs, - ) - } -} - -class Sprite { - public constructor( - public size: Vec2, - public parts: [Vec2, Crayon, string][], - ) {} - - public static from(lines: string[]) { - const size = new Vec2(lines.map((l) => l.length).reduce((a, b) => Math.max(a, b)), lines.length) - const result = new Sprite(size, []) - return result - } +/** + * ``` + * _ + * / + * ##### + * ##### + * ##### + * ``` + * + * @param fish Fish to display. + */ +function display(fish: Fish) { + const tick_pad = " ".repeat(fish.size[0]) + // TODO : add position and color + return [ + tick_pad + " _ " + fish.name, + tick_pad + "/", + ...fish.shape, + ] + .map((l, i) => esc_goto([fish.position[0], fish.position[1] + i]) + l) + .join("") + "\n" } function pick(arr: T[], random = Math.random) {