1
0
Fork 0

Merge branch 'master' of ssh://git.pabloader.ru:222/pabloid/tsgames

This commit is contained in:
Pabloader 2025-05-08 22:14:57 +00:00
commit 9cb6516209
6 changed files with 6 additions and 38 deletions

2
.gitignore vendored
View File

@ -173,3 +173,5 @@ dist
# Finder (MacOS) folder config
.DS_Store
error.log
package-lock.json

View File

@ -1,6 +1,5 @@
import { plugin, $, type BunPlugin } from "bun";
import path from 'path';
import asc from 'assemblyscript/asc';
interface WasmLoaderConfig {
production?: boolean;
@ -11,7 +10,7 @@ const wasmPlugin = ({ production, portable }: WasmLoaderConfig = {}): BunPlugin
const p: BunPlugin = {
name: "WASM loader",
async setup(build) {
build.onLoad({ filter: /\.(c(pp)?|wasm(\.ts)?)$/ }, async (args) => {
build.onLoad({ filter: /\.(c(pp)?|wasm)$/ }, async (args) => {
let wasmPath = path.resolve(import.meta.dir, '..', 'dist', 'tmp.wasm');
let jsContent: string = `
async function instantiate(url) {
@ -45,29 +44,7 @@ const wasmPlugin = ({ production, portable }: WasmLoaderConfig = {}): BunPlugin
export default module;
`;
if (args.path.endsWith('.ts')) {
if (portable) {
const contents = await Bun.file(args.path).text();
return {
contents: `import "assemblyscript/std/portable/index.js";\n${contents}`,
loader: 'tsx',
}
}
const jsPath = wasmPath.replace(/\.wasm$/, '.js');
const ascArgs = [
args.path,
'--outFile', wasmPath,
'--bindings', 'esm',
'-Ospeed'
];
const { error, stderr } = await asc.main(ascArgs);
if (error) {
console.error(stderr.toString(), error.message);
throw error;
}
jsContent = await Bun.file(jsPath).text();
} else if (args.path.endsWith('.wasm')) {
if (args.path.endsWith('.wasm')) {
wasmPath = args.path;
} else {
const buildAssets = path.resolve(import.meta.dir, 'assets');

View File

@ -22,7 +22,6 @@
"@types/bun": "latest",
"@types/html-minifier": "4.0.5",
"@types/inquirer": "9.0.7",
"assemblyscript": "0.27.29",
"browser-detect": "0.2.28",
"eruda": "3.2.3",
"html-minifier": "4.0.0",

View File

@ -1,7 +0,0 @@
export function awoo(a: i32, b: i32): void {
console.log((a * b).toString());
}
export function testTemplate(a: i32, f: f64): string {
return `${a} + ${f} = ${a + f}`;
}

View File

@ -1,10 +1,7 @@
import { awoo, testTemplate } from "./awoo.wasm";
import { render } from "preact";
import attack from './assets/attack.wav';
export default function main() {
awoo(42, 69);
console.log(testTemplate(420, 69));
render(
<button onClick={() => attack.play()}>

View File

@ -1,4 +1,4 @@
import { delay, nextFrame } from "@common/utils";
import { nextFrame } from "@common/utils";
import { Color, GAME_HEIGHT, GAME_WIDTH } from "./const";
import type { IChar, IColorLike, IRegion } from "./types";
import { generateColors, randChar } from "./utils";
@ -222,7 +222,7 @@ export async function tick(desiredFPS = 60) {
const totalDelay = 1000 / desiredFPS;
const remainingDelay = totalDelay - dt;
if (remainingDelay > 4) {
await delay(remainingDelay);
await Bun.sleep(remainingDelay);
}
}