Merge branch 'master' of ssh://git.pabloader.ru:222/pabloid/tsgames
This commit is contained in:
commit
9cb6516209
|
|
@ -173,3 +173,5 @@ dist
|
|||
|
||||
# Finder (MacOS) folder config
|
||||
.DS_Store
|
||||
error.log
|
||||
package-lock.json
|
||||
|
|
|
|||
|
|
@ -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');
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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}`;
|
||||
}
|
||||
|
|
@ -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()}>
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue