Compare commits
No commits in common. "sprite" and "master" have entirely different histories.
1 changed files with 22 additions and 81 deletions
103
src/main.ts
103
src/main.ts
|
@ -1,8 +1,6 @@
|
||||||
#!/usr/bin/env -S deno run -A
|
#!/usr/bin/env -S deno run -A
|
||||||
|
|
||||||
import { writeAll } from "https://deno.land/std@0.224.0/io/mod.ts"
|
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"
|
import { mkSimplexNoise, SimplexNoise } from "npm:@spissvinkel/simplex-noise@1.0.1"
|
||||||
|
|
||||||
async function main() {
|
async function main() {
|
||||||
|
@ -10,7 +8,7 @@ async function main() {
|
||||||
const fishes = await Fishes.load("./assets/fishes")
|
const fishes = await Fishes.load("./assets/fishes")
|
||||||
for await (const moved of fishes.movements()) {
|
for await (const moved of fishes.movements()) {
|
||||||
console.log(moved.name, "at", moved.position)
|
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)
|
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[0] > bounds[1][0]) this.position[0] = bounds[1][0]
|
||||||
if (this.position[1] > bounds[1][1]) this.position[1] = bounds[1][1]
|
if (this.position[1] > bounds[1][1]) this.position[1] = bounds[1][1]
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* ```
|
|
||||||
* _ <name>
|
|
||||||
* /
|
|
||||||
* #####
|
|
||||||
* #####
|
|
||||||
* #####
|
|
||||||
* ```
|
|
||||||
*/
|
|
||||||
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,
|
* _ <name>
|
||||||
public y: number,
|
* /
|
||||||
) {}
|
* #####
|
||||||
|
* #####
|
||||||
static of(ord: number) {
|
* #####
|
||||||
return new Vec2(ord, ord)
|
* ```
|
||||||
}
|
*
|
||||||
|
* @param fish Fish to display.
|
||||||
add(rhs: Vec2) {
|
*/
|
||||||
return new Vec2(
|
function display(fish: Fish) {
|
||||||
this.x + rhs.x,
|
const tick_pad = " ".repeat(fish.size[0])
|
||||||
this.y + rhs.y,
|
// TODO : add position and color
|
||||||
)
|
return [
|
||||||
}
|
tick_pad + " _ " + fish.name,
|
||||||
|
tick_pad + "/",
|
||||||
sub(rhs: Vec2) {
|
...fish.shape,
|
||||||
return new Vec2(
|
]
|
||||||
this.x - rhs.x,
|
.map((l, i) => esc_goto([fish.position[0], fish.position[1] + i]) + l)
|
||||||
this.y - rhs.y,
|
.join("") + "\n"
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
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
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function pick<T>(arr: T[], random = Math.random) {
|
function pick<T>(arr: T[], random = Math.random) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue