nise/nise-replay-viewer/src/renderer.ts

50 lines
1.2 KiB
TypeScript
Raw Normal View History

2024-03-03 15:22:03 +00:00
import { Vector } from "p5";
import { p, state } from "./utils";
import { OsuRenderer, OsuRendererEvents } from "./osu/OsuRenderer";
import { Drawer } from "./osu/Drawer";
import { toast } from "sonner";
export class Renderer {
static mouse: Vector;
static OsuRenderer: OsuRenderer = OsuRenderer;
static async setup() {
Renderer.registerEvents();
Drawer.setP(p);
await Drawer.loadDefaultImages();
}
static draw() {
if (!OsuRenderer.beatmap) return;
OsuRenderer.render();
}
static registerEvents() {
// Sync UI with datapath classes
OsuRenderer.event.on(OsuRendererEvents.UPDATE, () => {
const options = OsuRenderer.getOptions();
state.setState({
beatmap: options.beatmap,
replay: options.replay,
mods: options.mods,
});
});
OsuRenderer.event.on(OsuRendererEvents.LOAD, () => {
toast(`Successfully loaded replay!`);
});
OsuRenderer.event.on(OsuRendererEvents.PLAY, () => {
state.setState({
playing: OsuRenderer.playing,
});
});
OsuRenderer.event.on(OsuRendererEvents.TIME, () => {
state.setState({
time: OsuRenderer.time,
});
});
}
}