@fi4f/hg 0.0.17 → 0.0.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/frames.d.ts +9 -1
- package/dist/frames.d.ts.map +1 -1
- package/dist/frames.js +32 -1
- package/dist/frames.js.map +1 -1
- package/dist/sprite.d.ts +15 -2
- package/dist/sprite.d.ts.map +1 -1
- package/dist/sprite.js +48 -1
- package/dist/sprite.js.map +1 -1
- package/package.json +1 -1
package/dist/frames.d.ts
CHANGED
|
@@ -1,15 +1,23 @@
|
|
|
1
|
+
import type { Scene } from "./scene.js";
|
|
1
2
|
export type Frame = {
|
|
3
|
+
atlas: HTMLImageElement;
|
|
2
4
|
sx: number;
|
|
3
5
|
sy: number;
|
|
4
6
|
sw: number;
|
|
5
7
|
sh: number;
|
|
6
8
|
};
|
|
7
9
|
export declare const Frame: {
|
|
8
|
-
"new"(
|
|
10
|
+
"new"(atlas: HTMLImageElement, sx?: number, sy?: number, sw?: number, sh?: number): {
|
|
11
|
+
atlas: HTMLImageElement;
|
|
9
12
|
sx: number;
|
|
10
13
|
sy: number;
|
|
11
14
|
sw: number;
|
|
12
15
|
sh: number;
|
|
13
16
|
};
|
|
17
|
+
draw({ g }: Scene.RenderContext, frame: Frame, dx?: number, dy?: number, dw?: number, dh?: number): void;
|
|
18
|
+
};
|
|
19
|
+
export declare const Frames: {
|
|
20
|
+
from(atlas: HTMLImageElement, w: number, h: number, n?: number): Frame[];
|
|
21
|
+
draw(context: Scene.RenderContext, frames: Array<Frame>, i?: number, dx?: number, dy?: number, dw?: number, dh?: number): void;
|
|
14
22
|
};
|
|
15
23
|
//# sourceMappingURL=frames.d.ts.map
|
package/dist/frames.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frames.d.ts","sourceRoot":"","sources":["../src/frames.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,KAAK,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IACvB,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;CACxB,CAAA;AAED,eAAO,MAAM,KAAK;
|
|
1
|
+
{"version":3,"file":"frames.d.ts","sourceRoot":"","sources":["../src/frames.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAEvC,MAAM,MAAM,KAAK,GAAG;IAClB,KAAK,EAAE,gBAAgB,CAAA;IACvB,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IACvB,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;CACxB,CAAA;AAED,eAAO,MAAM,KAAK;iBAEP,gBAAgB;;;;;;;gBAahB,KAAK,CAAC,aAAa,SACnB,KAAK;CAYf,CAAA;AAED,eAAO,MAAM,MAAM;gBACL,gBAAgB,KAAK,MAAM,KAAK,MAAM,MAAO,MAAM;kBA0BpD,KAAK,CAAC,aAAa,UACnB,KAAK,CAAC,KAAK,CAAC;CAaxB,CAAA"}
|
package/dist/frames.js
CHANGED
|
@@ -1,9 +1,40 @@
|
|
|
1
1
|
export const Frame = {
|
|
2
|
-
new(sx, sy, sw, sh) {
|
|
2
|
+
new(atlas, sx = 0, sy = 0, sw = atlas.width, sh = atlas.height) {
|
|
3
3
|
return {
|
|
4
|
+
atlas,
|
|
4
5
|
sx, sy,
|
|
5
6
|
sw, sh
|
|
6
7
|
};
|
|
8
|
+
},
|
|
9
|
+
draw({ g }, frame, dx = 0, dy = 0, dw = frame.sw, dh = frame.sh) {
|
|
10
|
+
g.drawImage(frame.atlas, frame.sx, frame.sy, frame.sw, frame.sh, dx, dy, dw, dh);
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
export const Frames = {
|
|
14
|
+
from(atlas, w, h, n) {
|
|
15
|
+
const frames = new Array();
|
|
16
|
+
const rows = Math.floor(atlas.height / h);
|
|
17
|
+
const cols = Math.floor(atlas.width / w);
|
|
18
|
+
n ??= rows * cols;
|
|
19
|
+
for (let i = 0; i < n; i++) {
|
|
20
|
+
const row = Math.floor(i / cols);
|
|
21
|
+
const col = Math.floor(i % cols);
|
|
22
|
+
if (row < 0 || row >= rows ||
|
|
23
|
+
col < 0 || col >= cols)
|
|
24
|
+
break;
|
|
25
|
+
frames.push({
|
|
26
|
+
atlas: atlas,
|
|
27
|
+
sx: col * w,
|
|
28
|
+
sy: row * h,
|
|
29
|
+
sw: w, sh: h
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
return frames;
|
|
33
|
+
},
|
|
34
|
+
draw(context, frames, i = 0, dx = 0, dy = 0, dw = frames[i]?.sw ?? 0, dh = frames[i]?.sh ?? 0) {
|
|
35
|
+
if (!frames[i])
|
|
36
|
+
return;
|
|
37
|
+
Frame.draw(context, frames[i], dx, dy, dw, dh);
|
|
7
38
|
}
|
|
8
39
|
};
|
|
9
40
|
//# sourceMappingURL=frames.js.map
|
package/dist/frames.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frames.js","sourceRoot":"","sources":["../src/frames.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"frames.js","sourceRoot":"","sources":["../src/frames.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,GAAG,CACD,KAAuB,EACvB,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EACd,EAAE,GAAG,KAAK,CAAC,KAAK,EAChB,EAAE,GAAG,KAAK,CAAC,MAAM;QAEjB,OAAO;YACL,KAAK;YACL,EAAE,EAAE,EAAE;YACN,EAAE,EAAE,EAAE;SACS,CAAA;IACnB,CAAC;IAED,IAAI,CACF,EAAE,CAAC,EAAuB,EAC1B,KAAY,EACZ,EAAE,GAAC,CAAC,EACJ,EAAE,GAAC,CAAC,EACJ,EAAE,GAAC,KAAK,CAAC,EAAE,EACX,EAAE,GAAC,KAAK,CAAC,EAAE;QAEX,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EACrB,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAClB,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAClB,EAAE,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE,CAClB,CAAA;IACH,CAAC;CACF,CAAA;AAED,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI,CAAC,KAAuB,EAAE,CAAS,EAAE,CAAS,EAAE,CAAW;QAC7D,MAAM,MAAM,GAAG,IAAI,KAAK,EAAS,CAAA;QACjC,MAAM,IAAI,GAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QAC3C,MAAM,IAAI,GAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAI,CAAC,CAAC,CAAA;QAE3C,CAAC,KAAK,IAAI,GAAG,IAAI,CAAA;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAG,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;YAChC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;YAEhC,IACE,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,IAAI;gBACtB,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,IAAI;gBACtB,MAAM;YAER,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,KAAK;gBACZ,EAAE,EAAE,GAAG,GAAG,CAAC;gBACX,EAAE,EAAE,GAAG,GAAG,CAAC;gBACX,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;aACb,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,IAAI,CACF,OAA4B,EAC5B,MAAqB,EACrB,CAAC,GAAE,CAAC,EACJ,EAAE,GAAC,CAAC,EACJ,EAAE,GAAC,CAAC,EACJ,EAAE,GAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EACrB,EAAE,GAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC;QAErB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YAAE,OAAO;QACvB,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAC3B,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,EAAE,CACP,CAAA;IACH,CAAC;CACF,CAAA"}
|
package/dist/sprite.d.ts
CHANGED
|
@@ -1,13 +1,26 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Frame } from "./frames.js";
|
|
2
2
|
import type { Scene } from "./scene.js";
|
|
3
3
|
export type Sprite = {
|
|
4
4
|
frames: Array<Frame>;
|
|
5
|
-
atlas: HTMLImageElement;
|
|
6
5
|
state: "playing" | "stopped" | "looping";
|
|
7
6
|
frame: number;
|
|
8
7
|
speed: number;
|
|
8
|
+
x: number;
|
|
9
|
+
y: number;
|
|
10
|
+
w: number;
|
|
11
|
+
h: number;
|
|
9
12
|
};
|
|
10
13
|
export declare const Sprite: {
|
|
14
|
+
"new"(frames: Array<Frame>, w?: number, h?: number): {
|
|
15
|
+
frames: Frame[];
|
|
16
|
+
state: "stopped";
|
|
17
|
+
frame: number;
|
|
18
|
+
speed: number;
|
|
19
|
+
x: number;
|
|
20
|
+
y: number;
|
|
21
|
+
w: number;
|
|
22
|
+
h: number;
|
|
23
|
+
};
|
|
11
24
|
/** Check if a sprite is playing. Returns `true` if the sprite is *not* stopped. */
|
|
12
25
|
isPlaying(sprite: Sprite): boolean;
|
|
13
26
|
/** Check if a sprite is stopped. Returns `true` if the sprite is stopped. */
|
package/dist/sprite.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sprite.d.ts","sourceRoot":"","sources":["../src/sprite.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"sprite.d.ts","sourceRoot":"","sources":["../src/sprite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAU,MAAM,aAAa,CAAA;AAC3C,OAAO,KAAK,EAAE,KAAK,EAAG,MAAM,YAAY,CAAA;AAExC,MAAM,MAAM,MAAM,GAAG;IACnB,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;IACpB,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAA;IACxC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IAEb,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV,CAAA;AAED,eAAO,MAAM,MAAM;kBACL,KAAK,CAAC,KAAK,CAAC,MAAO,MAAM,MAAO,MAAM;;;;;;;;;;IAclD,mFAAmF;sBACjE,MAAM;IAIxB,6EAA6E;sBAC3D,MAAM;IAIxB,6EAA6E;sBAC3D,MAAM;iBAIX,MAAM,MAAO;QAAE,KAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAM,CAAC,EAAE,MAAM,CAAA;KAAE;iBAUjD,MAAM,MAAO;QAAE,KAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAM,CAAC,EAAE,MAAM,CAAA;KAAE;iBAUjD,MAAM,MAAO;QAAE,KAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAM,CAAC,EAAE,MAAM,CAAA;KAAE;kBAUhD,KAAK,CAAC,aAAa,UAAU,MAAM;CAoBlD,CAAA"}
|
package/dist/sprite.js
CHANGED
|
@@ -1,4 +1,18 @@
|
|
|
1
|
+
import { Frame, Frames } from "./frames.js";
|
|
1
2
|
export const Sprite = {
|
|
3
|
+
new(frames, w, h) {
|
|
4
|
+
w ??= frames[0]?.sw ?? 0;
|
|
5
|
+
h ??= frames[0]?.sh ?? 0;
|
|
6
|
+
return {
|
|
7
|
+
frames,
|
|
8
|
+
state: "stopped",
|
|
9
|
+
frame: 0,
|
|
10
|
+
speed: 1,
|
|
11
|
+
x: 0,
|
|
12
|
+
y: 0,
|
|
13
|
+
w, h,
|
|
14
|
+
};
|
|
15
|
+
},
|
|
2
16
|
/** Check if a sprite is playing. Returns `true` if the sprite is *not* stopped. */
|
|
3
17
|
isPlaying(sprite) {
|
|
4
18
|
return sprite.state !== "stopped";
|
|
@@ -12,11 +26,44 @@ export const Sprite = {
|
|
|
12
26
|
return sprite.state === "looping";
|
|
13
27
|
},
|
|
14
28
|
stop(sprite, o) {
|
|
29
|
+
if (o?.frame !== undefined)
|
|
30
|
+
sprite.frame = wrap(o.frame, sprite.frames.length);
|
|
31
|
+
if (o?.speed !== undefined)
|
|
32
|
+
sprite.speed = o.speed;
|
|
33
|
+
sprite.state = "stopped";
|
|
15
34
|
},
|
|
16
35
|
play(sprite, o) {
|
|
36
|
+
if (o?.frame !== undefined)
|
|
37
|
+
sprite.frame = wrap(o.frame, sprite.frames.length);
|
|
38
|
+
if (o?.speed !== undefined)
|
|
39
|
+
sprite.speed = o.speed;
|
|
40
|
+
sprite.state = "playing";
|
|
17
41
|
},
|
|
18
42
|
loop(sprite, o) {
|
|
43
|
+
if (o?.frame !== undefined)
|
|
44
|
+
sprite.frame = wrap(o.frame, sprite.frames.length);
|
|
45
|
+
if (o?.speed !== undefined)
|
|
46
|
+
sprite.speed = o.speed;
|
|
47
|
+
sprite.state = "looping";
|
|
19
48
|
},
|
|
20
|
-
draw(context, sprite) {
|
|
49
|
+
draw(context, sprite) {
|
|
50
|
+
if (sprite.state !== "stopped")
|
|
51
|
+
sprite.frame += sprite.speed * context.dt;
|
|
52
|
+
if (sprite.state === "playing") {
|
|
53
|
+
sprite.frame = clamp(sprite.frame, sprite.frames.length);
|
|
54
|
+
if (sprite.frame <= 0 ||
|
|
55
|
+
sprite.frame >= sprite.frames.length)
|
|
56
|
+
sprite.state = "stopped";
|
|
57
|
+
}
|
|
58
|
+
if (sprite.state === "looping")
|
|
59
|
+
sprite.frame = wrap(sprite.frame, sprite.frames.length);
|
|
60
|
+
Frames.draw(context, sprite.frames, Math.floor(sprite.frame), sprite.x, sprite.y, sprite.w, sprite.h);
|
|
61
|
+
}
|
|
21
62
|
};
|
|
63
|
+
function wrap(n, m) {
|
|
64
|
+
return (n % m + m) % m;
|
|
65
|
+
}
|
|
66
|
+
function clamp(n, m) {
|
|
67
|
+
return Math.max(0, Math.min(n, m));
|
|
68
|
+
}
|
|
22
69
|
//# sourceMappingURL=sprite.js.map
|
package/dist/sprite.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sprite.js","sourceRoot":"","sources":["../src/sprite.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sprite.js","sourceRoot":"","sources":["../src/sprite.ts"],"names":[],"mappings":"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"}
|