@hi-ashleyj/llama 0.10.2 → 0.11.0
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/Layer.svelte +2 -0
- package/dist/Layer.svelte.d.ts +1 -0
- package/dist/core-contexts.d.ts +4 -4
- package/dist/core-contexts.js +1 -1
- package/dist/drawables/Tiled.svelte +63 -0
- package/dist/drawables/Tiled.svelte.d.ts +22 -0
- package/dist/drawables/index.d.ts +1 -0
- package/dist/drawables/index.js +1 -0
- package/dist/extras/Empty.svelte +1 -0
- package/dist/extras/Empty.svelte.d.ts +3 -1
- package/dist/extras/SceneSwitcher.svelte +1 -1
- package/dist/extras/SceneTransition.svelte +2 -2
- package/dist/extras/SceneTransition.svelte.d.ts +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -0
- package/dist/resources/tileset.d.ts +12 -0
- package/dist/resources/tileset.js +23 -0
- package/package.json +11 -4
package/dist/Layer.svelte
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { onMount } from "svelte";
|
|
3
3
|
export let zIndex = 0;
|
|
4
4
|
export let staticMode = false;
|
|
5
|
+
export let scaleMode = "pixelated";
|
|
5
6
|
let shouldRenderNextFrame = true;
|
|
6
7
|
let canvas;
|
|
7
8
|
$:
|
|
@@ -12,6 +13,7 @@ const draw = () => {
|
|
|
12
13
|
if (ctx === null)
|
|
13
14
|
return;
|
|
14
15
|
ctx.clearRect(0, 0, $width, $height);
|
|
16
|
+
ctx.imageSmoothingEnabled = scaleMode === "smooth";
|
|
15
17
|
targets.forEach((f) => f.draw({ width: $width, height: $height, ctx }));
|
|
16
18
|
};
|
|
17
19
|
let register = setupLayer({
|
package/dist/Layer.svelte.d.ts
CHANGED
package/dist/core-contexts.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { Writable } from 'svelte/store';
|
|
2
|
-
import type { Timing } from "./controllers/motions";
|
|
3
|
-
import type { Keyboard } from "./controllers/keyboard";
|
|
4
|
-
import type { Mouse } from "./controllers/mouse";
|
|
5
|
-
import { type DrawableContext } from './drawable';
|
|
2
|
+
import type { Timing } from "./controllers/motions.js";
|
|
3
|
+
import type { Keyboard } from "./controllers/keyboard.js";
|
|
4
|
+
import type { Mouse } from "./controllers/mouse.js";
|
|
5
|
+
import { type DrawableContext } from './drawable.js';
|
|
6
6
|
export type DestroyFunction = () => any;
|
|
7
7
|
export type RegisterFunction<T> = (run: T) => DestroyFunction;
|
|
8
8
|
export type GameContext = {
|
package/dist/core-contexts.js
CHANGED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
<script>import { setupDrawable } from "../drawable.js";
|
|
2
|
+
import { onMount } from "svelte";
|
|
3
|
+
export let shiftX;
|
|
4
|
+
export let shiftY;
|
|
5
|
+
export let drawSize;
|
|
6
|
+
export let tileSet;
|
|
7
|
+
export let alias;
|
|
8
|
+
export let map;
|
|
9
|
+
$:
|
|
10
|
+
mapWidth = map[0]?.length ?? 0;
|
|
11
|
+
$:
|
|
12
|
+
mapHeight = map.length ?? 0;
|
|
13
|
+
const draw = ({ ctx, width, height }, { x, y, w, h }) => {
|
|
14
|
+
if (!map)
|
|
15
|
+
return;
|
|
16
|
+
if (!alias)
|
|
17
|
+
return;
|
|
18
|
+
if (shiftX < w * -1)
|
|
19
|
+
return;
|
|
20
|
+
if (shiftX > mapWidth * drawSize)
|
|
21
|
+
return;
|
|
22
|
+
if (shiftY < h * -1)
|
|
23
|
+
return;
|
|
24
|
+
if (shiftY > mapHeight * drawSize)
|
|
25
|
+
return;
|
|
26
|
+
const leftMostTile = Math.max(Math.floor(shiftX / drawSize), 0);
|
|
27
|
+
const leftOffset = shiftX > 0 ? shiftX % drawSize * -1 : shiftX * -1;
|
|
28
|
+
const tilesWide = Math.min(mapWidth - leftMostTile, Math.ceil((w - leftOffset) / drawSize), mapWidth - 1);
|
|
29
|
+
const topMostTile = Math.max(Math.floor(shiftY / drawSize), 0);
|
|
30
|
+
const topOffset = shiftY > 0 ? shiftY % drawSize * -1 : shiftY * -1;
|
|
31
|
+
const tilesHigh = Math.min(mapHeight - topMostTile, Math.ceil((h - topOffset) / drawSize), mapHeight - 1);
|
|
32
|
+
for (let i = 0; i < tilesWide; i++) {
|
|
33
|
+
for (let j = 0; j < tilesHigh; j++) {
|
|
34
|
+
try {
|
|
35
|
+
const key = map[j + topMostTile][i + leftMostTile];
|
|
36
|
+
if (key === " ")
|
|
37
|
+
continue;
|
|
38
|
+
const dealias = alias[key];
|
|
39
|
+
if (!dealias)
|
|
40
|
+
continue;
|
|
41
|
+
ctx.drawImage(
|
|
42
|
+
tileSet.image,
|
|
43
|
+
dealias[0] * tileSet.size,
|
|
44
|
+
dealias[1] * tileSet.size,
|
|
45
|
+
tileSet.size,
|
|
46
|
+
tileSet.size,
|
|
47
|
+
i * drawSize + leftOffset,
|
|
48
|
+
j * drawSize + topOffset,
|
|
49
|
+
drawSize,
|
|
50
|
+
drawSize
|
|
51
|
+
);
|
|
52
|
+
} catch (_err) {
|
|
53
|
+
console.log(i, j);
|
|
54
|
+
throw _err;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
const register = setupDrawable({});
|
|
60
|
+
onMount(() => {
|
|
61
|
+
return register({ draw });
|
|
62
|
+
});
|
|
63
|
+
</script>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { SvelteComponent } from "svelte";
|
|
2
|
+
import type { TileSet } from "../resources/tileset.js";
|
|
3
|
+
declare const __propDef: {
|
|
4
|
+
props: {
|
|
5
|
+
shiftX: number;
|
|
6
|
+
shiftY: number;
|
|
7
|
+
drawSize: number;
|
|
8
|
+
tileSet: TileSet;
|
|
9
|
+
alias: Record<string, [number, number]>;
|
|
10
|
+
map: string[];
|
|
11
|
+
};
|
|
12
|
+
events: {
|
|
13
|
+
[evt: string]: CustomEvent<any>;
|
|
14
|
+
};
|
|
15
|
+
slots: {};
|
|
16
|
+
};
|
|
17
|
+
export type TiledProps = typeof __propDef.props;
|
|
18
|
+
export type TiledEvents = typeof __propDef.events;
|
|
19
|
+
export type TiledSlots = typeof __propDef.slots;
|
|
20
|
+
export default class Tiled extends SvelteComponent<TiledProps, TiledEvents, TiledSlots> {
|
|
21
|
+
}
|
|
22
|
+
export {};
|
|
@@ -5,3 +5,4 @@ export { default as DisplayImage } from "./DisplayImage.svelte";
|
|
|
5
5
|
export { default as Text } from "./Text.svelte";
|
|
6
6
|
export { default as MultiLineText } from "./MultiLineText.svelte";
|
|
7
7
|
export { default as RoundedRectangle } from "./RoundedRectangle.svelte";
|
|
8
|
+
export { default as Tiled } from "./Tiled.svelte";
|
package/dist/drawables/index.js
CHANGED
|
@@ -5,3 +5,4 @@ export { default as DisplayImage } from "./DisplayImage.svelte";
|
|
|
5
5
|
export { default as Text } from "./Text.svelte";
|
|
6
6
|
export { default as MultiLineText } from "./MultiLineText.svelte";
|
|
7
7
|
export { default as RoundedRectangle } from "./RoundedRectangle.svelte";
|
|
8
|
+
export { default as Tiled } from "./Tiled.svelte";
|
package/dist/extras/Empty.svelte
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<slot />
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script>import { jumpSignal, effectiveScene } from "./scenes.js";
|
|
2
2
|
import { SvelteComponent, onMount } from "svelte";
|
|
3
|
-
import { getTriggerLayerRender } from "
|
|
3
|
+
import { getTriggerLayerRender } from "../core-contexts.js";
|
|
4
4
|
const triggerRender = getTriggerLayerRender();
|
|
5
5
|
let scene;
|
|
6
6
|
const changeScene = (_signal) => {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
<script>import { jumpSignal, sceneAnimating } from "./scenes";
|
|
2
|
-
import { getGame, getTriggerLayerRender } from "
|
|
1
|
+
<script>import { jumpSignal, sceneAnimating } from "./scenes.js";
|
|
2
|
+
import { getGame, getTriggerLayerRender } from "../core-contexts.js";
|
|
3
3
|
import { onDestroy } from "svelte";
|
|
4
4
|
const context = getGame();
|
|
5
5
|
export let duration = 1e3;
|
package/dist/index.d.ts
CHANGED
|
@@ -11,6 +11,8 @@ export { setupDrawable } from "./drawable.js";
|
|
|
11
11
|
export type { DrawableContext, DrawableObject, DrawFunction } from "./drawable.d.ts";
|
|
12
12
|
export * as Drawables from "./drawables/index.js";
|
|
13
13
|
export { resolve as resolveImage } from "./resources/images.js";
|
|
14
|
+
export { useTileSet, getTile } from "./resources/tileset.js";
|
|
15
|
+
export type { TileSet } from "./resources/tileset.d.ts";
|
|
14
16
|
export { default as SensibleDefaultStyles } from "./extras/SensibleDefaultStyles.svelte";
|
|
15
17
|
export { default as Empty } from "./extras/Empty.svelte";
|
|
16
18
|
export { default as LayerPortal } from "./extras/LayerPortal.svelte";
|
package/dist/index.js
CHANGED
|
@@ -13,6 +13,7 @@ export { setupDrawable } from "./drawable.js";
|
|
|
13
13
|
export * as Drawables from "./drawables/index.js";
|
|
14
14
|
// RESOURCES
|
|
15
15
|
export { resolve as resolveImage } from "./resources/images.js";
|
|
16
|
+
export { useTileSet, getTile } from "./resources/tileset.js";
|
|
16
17
|
// EXTRAS
|
|
17
18
|
export { default as SensibleDefaultStyles } from "./extras/SensibleDefaultStyles.svelte";
|
|
18
19
|
export { default as Empty } from "./extras/Empty.svelte";
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type DisplayImage from "../drawables/DisplayImage.svelte";
|
|
2
|
+
import type { ComponentProps } from "svelte";
|
|
3
|
+
export type TileSet = {
|
|
4
|
+
width: number;
|
|
5
|
+
height: number;
|
|
6
|
+
size: number;
|
|
7
|
+
image: HTMLImageElement;
|
|
8
|
+
};
|
|
9
|
+
type Pixels = number;
|
|
10
|
+
export declare const useTileSet: (image: HTMLImageElement, width: number, height: number, size: Pixels) => TileSet;
|
|
11
|
+
export declare const getTile: (tileset: TileSet, x: number, y: number) => ComponentProps<DisplayImage>;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export const useTileSet = (image, width, height, size) => {
|
|
2
|
+
return {
|
|
3
|
+
image,
|
|
4
|
+
width,
|
|
5
|
+
height,
|
|
6
|
+
size
|
|
7
|
+
};
|
|
8
|
+
};
|
|
9
|
+
export const getTile = (tileset, x, y) => {
|
|
10
|
+
if (x < 0 || y < 0)
|
|
11
|
+
throw new Error("Cannot pick tile with index < 0");
|
|
12
|
+
if (x > tileset.width || y > tileset.height)
|
|
13
|
+
throw new Error("Cannot pick tile with index > max");
|
|
14
|
+
return {
|
|
15
|
+
image: tileset.image,
|
|
16
|
+
crop: {
|
|
17
|
+
x: x * tileset.size,
|
|
18
|
+
y: y * tileset.size,
|
|
19
|
+
w: tileset.size,
|
|
20
|
+
h: tileset.size
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hi-ashleyj/llama",
|
|
3
3
|
"description": "A (Very Incomplete) 2D Canvas Game Engine powered by Svelte",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.11.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"dev": "vite dev",
|
|
@@ -38,7 +38,14 @@
|
|
|
38
38
|
"dist"
|
|
39
39
|
],
|
|
40
40
|
"exports": {
|
|
41
|
-
".":
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
".": {
|
|
42
|
+
"types": "./dist/index.d.ts",
|
|
43
|
+
"svelte": "./dist/index.js"
|
|
44
|
+
},
|
|
45
|
+
"./drawables": {
|
|
46
|
+
"types": "./dist/drawables/index.d.ts",
|
|
47
|
+
"svelte": "./dist/drawables/index.js"
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
"types": "./dist/index.d.ts"
|
|
44
51
|
}
|