WIP
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
import $ from "#/engine/Scene.ts";
|
||||
import {
|
||||
animateSprite,
|
||||
type Sprite,
|
||||
type SpritePlayback,
|
||||
} from "#/engine/Sprite.ts";
|
||||
|
||||
export function animateSprites(delta: number) {
|
||||
for (const [id, playback] of $<SpritePlayback>("playback").entries()) {
|
||||
const sprite = $<Sprite>("sprite").get(id)!;
|
||||
animateSprite(sprite.value, playback.value, delta);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
import type { Box } from "#/engine/Box.ts";
|
||||
import { sceneChangeSet, sceneComponentsMap } from "#/engine/Scene.ts";
|
||||
import { drawSprite, type Sprite, spriteSheetMap } from "#/engine/Sprite.ts";
|
||||
import type { Vector } from "#/engine/Vector.ts";
|
||||
|
||||
const drawables: Array<{ position: Box<Vector>; sprite: Box<Sprite> }> = [];
|
||||
sceneChangeSet.add((sceneData) => {
|
||||
drawables.length = 0;
|
||||
|
||||
const sprites = [
|
||||
...sceneComponentsMap.get(sceneData.name)!.get("sprite")!.values(),
|
||||
] as Array<Box<Sprite>>;
|
||||
|
||||
sceneComponentsMap
|
||||
.get(sceneData.name)!
|
||||
.get("position")!
|
||||
.values()
|
||||
.forEach((box, index) => {
|
||||
drawables.push({
|
||||
position: box as Box<Vector>,
|
||||
sprite: sprites[index],
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
export function drawSprites(ctx: CanvasRenderingContext2D) {
|
||||
for (const drawable of drawables.sort(
|
||||
(a, b) => a.position.value.y - b.position.value.y,
|
||||
)) {
|
||||
drawSprite(
|
||||
ctx,
|
||||
spriteSheetMap.get(drawable.sprite.value.src)!,
|
||||
drawable.sprite.value.xStart,
|
||||
drawable.sprite.value.yStart,
|
||||
drawable.position.value.x,
|
||||
drawable.position.value.y,
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user