@waica/cli 0.7.0 → 0.8.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/README.md +1 -1
- package/dist/editor/assets/{cssMode-eS4pAOyh.js → cssMode-DwPoqXFO.js} +1 -1
- package/dist/editor/assets/{freemarker2-FMQjZKQk.js → freemarker2-gl5y25bH.js} +1 -1
- package/dist/editor/assets/{handlebars-dDYOnqat.js → handlebars-DHUb8mb3.js} +1 -1
- package/dist/editor/assets/{html-Ba6xZh4T.js → html-C8W-psr4.js} +1 -1
- package/dist/editor/assets/{htmlMode-DC9qJr2p.js → htmlMode-BiF5TH2_.js} +1 -1
- package/dist/editor/assets/{index-Cy5pmBhN.css → index-CzarIYLW.css} +1 -1
- package/dist/editor/assets/{index-CoyeInOT.js → index-DtMwWp8R.js} +2732 -608
- package/dist/editor/assets/{javascript-DOwFvmvM.js → javascript-D_t2jyWi.js} +1 -1
- package/dist/editor/assets/{jsonMode-CcG7zlSf.js → jsonMode-CZ0SltDj.js} +1 -1
- package/dist/editor/assets/{liquid-Dfp71r7J.js → liquid-DUxURZui.js} +1 -1
- package/dist/editor/assets/{mdx-Ci7vVeht.js → mdx-CDIQ7hmo.js} +1 -1
- package/dist/editor/assets/{python-Bluv3Y9Q.js → python-Cra2N916.js} +1 -1
- package/dist/editor/assets/{razor-BtwTXMaK.js → razor-B3qV-mNp.js} +1 -1
- package/dist/editor/assets/{tsMode-D3_D-H85.js → tsMode-Ci457z4v.js} +1 -1
- package/dist/editor/assets/{typescript-Ch_PS5f7.js → typescript-BXjh3GLT.js} +1 -1
- package/dist/editor/assets/{xml-CI_bH_MX.js → xml-DQuEpqk5.js} +1 -1
- package/dist/editor/assets/{yaml-LD9GTZyy.js → yaml-CQA7WIT-.js} +1 -1
- package/dist/editor/index.html +2 -2
- package/dist/mcp/known-archetypes.js +5 -0
- package/dist/mcp/node_modules/@waica/archetype-isometric/assets/ATTRIBUTION.md +72 -0
- package/dist/mcp/node_modules/@waica/archetype-isometric/assets/waica-iso-crate.png +0 -0
- package/dist/mcp/node_modules/@waica/archetype-isometric/assets/waica-iso-ground.png +0 -0
- package/dist/mcp/node_modules/@waica/archetype-isometric/assets/waica-iso-hero.png +0 -0
- package/dist/mcp/node_modules/@waica/archetype-isometric/assets/waica-iso-orc.png +0 -0
- package/dist/mcp/node_modules/@waica/archetype-isometric/assets/waica-iso-rock.png +0 -0
- package/dist/mcp/node_modules/@waica/archetype-isometric/assets/waica-iso-tree.png +0 -0
- package/dist/mcp/node_modules/@waica/archetype-isometric/assets/waica-iso-villager.png +0 -0
- package/dist/mcp/node_modules/@waica/archetype-isometric/dist/animation.d.ts +3 -0
- package/dist/mcp/node_modules/@waica/archetype-isometric/dist/animation.js +10 -0
- package/dist/mcp/node_modules/@waica/archetype-isometric/dist/art.d.ts +3 -0
- package/dist/mcp/node_modules/@waica/archetype-isometric/dist/art.js +10 -0
- package/dist/mcp/node_modules/@waica/archetype-isometric/dist/bundle.d.ts +2 -0
- package/dist/mcp/node_modules/@waica/archetype-isometric/dist/bundle.js +9 -0
- package/dist/mcp/node_modules/@waica/archetype-isometric/dist/controls.d.ts +3 -0
- package/dist/mcp/node_modules/@waica/archetype-isometric/dist/controls.js +14 -0
- package/dist/mcp/node_modules/@waica/archetype-isometric/dist/index.d.ts +24 -0
- package/dist/mcp/node_modules/@waica/archetype-isometric/dist/index.js +15 -0
- package/dist/mcp/node_modules/@waica/archetype-isometric/dist/manifest.d.ts +16 -0
- package/dist/mcp/node_modules/@waica/archetype-isometric/dist/manifest.js +29 -0
- package/dist/mcp/node_modules/@waica/archetype-isometric/dist/prefabs.d.ts +18 -0
- package/dist/mcp/node_modules/@waica/archetype-isometric/dist/prefabs.js +196 -0
- package/dist/mcp/node_modules/@waica/archetype-isometric/dist/registry-data.d.ts +3 -0
- package/dist/mcp/node_modules/@waica/archetype-isometric/dist/registry-data.js +46 -0
- package/dist/mcp/node_modules/@waica/archetype-isometric/dist/registry.d.ts +4 -0
- package/dist/mcp/node_modules/@waica/archetype-isometric/dist/registry.js +17 -0
- package/dist/mcp/node_modules/@waica/archetype-isometric/dist/scene-default.d.ts +5 -0
- package/dist/mcp/node_modules/@waica/archetype-isometric/dist/scene-default.js +49 -0
- package/dist/mcp/node_modules/@waica/archetype-isometric/dist/ui.d.ts +1 -0
- package/dist/mcp/node_modules/@waica/archetype-isometric/dist/ui.js +17 -0
- package/dist/mcp/node_modules/@waica/archetype-isometric/package.json +30 -0
- package/dist/mcp/node_modules/@waica/archetype-platformer/package.json +3 -3
- package/dist/mcp/node_modules/@waica/archetype-topdown/dist/registry-data.js +2 -1
- package/dist/mcp/node_modules/@waica/archetype-topdown/dist/ui.js +2 -19
- package/dist/mcp/node_modules/@waica/archetype-topdown/package.json +3 -3
- package/dist/mcp/node_modules/@waica/behaviors/dist/grid-motor.d.ts +56 -0
- package/dist/mcp/node_modules/@waica/behaviors/dist/grid-motor.js +74 -0
- package/dist/mcp/node_modules/@waica/behaviors/dist/grid-player-role.d.ts +15 -0
- package/dist/mcp/node_modules/@waica/behaviors/dist/grid-player-role.js +71 -0
- package/dist/mcp/node_modules/@waica/behaviors/dist/index.d.ts +3 -1
- package/dist/mcp/node_modules/@waica/behaviors/dist/index.js +3 -1
- package/dist/mcp/node_modules/@waica/behaviors/dist/interactable.d.ts +3 -0
- package/dist/mcp/node_modules/@waica/behaviors/dist/interactable.js +25 -2
- package/dist/mcp/node_modules/@waica/behaviors/dist/iso-motor.d.ts +14 -0
- package/dist/mcp/node_modules/@waica/behaviors/dist/iso-motor.js +36 -0
- package/dist/mcp/node_modules/@waica/behaviors/dist/iso-player-states.d.ts +5 -0
- package/dist/mcp/node_modules/@waica/behaviors/dist/iso-player-states.js +9 -0
- package/dist/mcp/node_modules/@waica/behaviors/dist/topdown-motor.d.ts +7 -61
- package/dist/mcp/node_modules/@waica/behaviors/dist/topdown-motor.js +8 -79
- package/dist/mcp/node_modules/@waica/behaviors/dist/topdown-player-states.d.ts +4 -17
- package/dist/mcp/node_modules/@waica/behaviors/dist/topdown-player-states.js +10 -82
- package/dist/mcp/node_modules/@waica/behaviors/package.json +2 -2
- package/dist/mcp/node_modules/@waica/engine/dist/component.d.ts +2 -0
- package/dist/mcp/node_modules/@waica/engine/dist/components/animated-sprite.d.ts +19 -1
- package/dist/mcp/node_modules/@waica/engine/dist/components/animated-sprite.js +35 -7
- package/dist/mcp/node_modules/@waica/engine/dist/components/dynamic-body.js +2 -4
- package/dist/mcp/node_modules/@waica/engine/dist/components/sprite.d.ts +19 -0
- package/dist/mcp/node_modules/@waica/engine/dist/components/sprite.js +44 -8
- package/dist/mcp/node_modules/@waica/engine/dist/components/tilemap.d.ts +113 -0
- package/dist/mcp/node_modules/@waica/engine/dist/components/tilemap.js +316 -0
- package/dist/mcp/node_modules/@waica/engine/dist/entity.d.ts +3 -0
- package/dist/mcp/node_modules/@waica/engine/dist/entity.js +13 -1
- package/dist/mcp/node_modules/@waica/engine/dist/game.d.ts +4 -0
- package/dist/mcp/node_modules/@waica/engine/dist/game.js +41 -9
- package/dist/mcp/node_modules/@waica/engine/dist/index.d.ts +9 -0
- package/dist/mcp/node_modules/@waica/engine/dist/index.js +5 -0
- package/dist/mcp/node_modules/@waica/engine/dist/projection.d.ts +14 -0
- package/dist/mcp/node_modules/@waica/engine/dist/projection.js +30 -0
- package/dist/mcp/node_modules/@waica/engine/dist/scene-solids.d.ts +16 -0
- package/dist/mcp/node_modules/@waica/engine/dist/scene-solids.js +28 -0
- package/dist/mcp/node_modules/@waica/engine/dist/scene.d.ts +3 -1
- package/dist/mcp/node_modules/@waica/engine/dist/solid-axis.js +2 -4
- package/dist/mcp/node_modules/@waica/engine/dist/sprite-placement.d.ts +22 -0
- package/dist/mcp/node_modules/@waica/engine/dist/sprite-placement.js +14 -0
- package/dist/mcp/node_modules/@waica/engine/dist/tilemap-grid.d.ts +26 -0
- package/dist/mcp/node_modules/@waica/engine/dist/tilemap-grid.js +41 -0
- package/dist/mcp/node_modules/@waica/engine/package.json +1 -1
- package/dist/mcp/package-resolver.js +4 -0
- package/dist/mcp/project-component-runner.js +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface SpritePlacementInput {
|
|
2
|
+
width: number;
|
|
3
|
+
height: number;
|
|
4
|
+
offsetX: number;
|
|
5
|
+
offsetY: number;
|
|
6
|
+
anchorX: number;
|
|
7
|
+
anchorY: number;
|
|
8
|
+
flipX: boolean;
|
|
9
|
+
frameScaleX: number;
|
|
10
|
+
frameScaleY: number;
|
|
11
|
+
}
|
|
12
|
+
export interface SpritePlacement {
|
|
13
|
+
x: number;
|
|
14
|
+
y: number;
|
|
15
|
+
scaleX: number;
|
|
16
|
+
scaleY: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Places a displayed frame inside its full-size sprite box. The declared
|
|
20
|
+
* anchor belongs to that box; smaller animation frames retain its floor.
|
|
21
|
+
*/
|
|
22
|
+
export declare function spritePlacement(input: SpritePlacementInput): SpritePlacement;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Places a displayed frame inside its full-size sprite box. The declared
|
|
3
|
+
* anchor belongs to that box; smaller animation frames retain its floor.
|
|
4
|
+
*/
|
|
5
|
+
export function spritePlacement(input) {
|
|
6
|
+
const boxX = input.offsetX + (0.5 - input.anchorX) * input.width;
|
|
7
|
+
const floorY = input.offsetY - input.anchorY * input.height;
|
|
8
|
+
return {
|
|
9
|
+
x: input.flipX ? -boxX : boxX,
|
|
10
|
+
y: floorY + (input.height * input.frameScaleY) / 2,
|
|
11
|
+
scaleX: input.width * input.frameScaleX * (input.flipX ? -1 : 1),
|
|
12
|
+
scaleY: input.height * input.frameScaleY,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export interface TilemapGridSpec {
|
|
2
|
+
mapWidth: number;
|
|
3
|
+
mapHeight: number;
|
|
4
|
+
cellSize: number;
|
|
5
|
+
originX?: number;
|
|
6
|
+
originY?: number;
|
|
7
|
+
}
|
|
8
|
+
export interface TilemapCell {
|
|
9
|
+
column: number;
|
|
10
|
+
row: number;
|
|
11
|
+
index: number;
|
|
12
|
+
}
|
|
13
|
+
export interface TilemapCellBounds {
|
|
14
|
+
left: number;
|
|
15
|
+
right: number;
|
|
16
|
+
bottom: number;
|
|
17
|
+
top: number;
|
|
18
|
+
centerX: number;
|
|
19
|
+
centerY: number;
|
|
20
|
+
}
|
|
21
|
+
/** Row-major index for a map cell, or null outside a valid map. */
|
|
22
|
+
export declare function cellIndex(mapWidth: number, mapHeight: number, column: number, row: number): number | null;
|
|
23
|
+
/** Cell containing a logical point, relative to the Tilemap entity origin. */
|
|
24
|
+
export declare function cellAt(spec: TilemapGridSpec, logicalX: number, logicalY: number): TilemapCell | null;
|
|
25
|
+
/** Logical bounds and center of one map cell. */
|
|
26
|
+
export declare function cellBounds(spec: TilemapGridSpec, column: number, row: number): TilemapCellBounds | null;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
function dimension(value) {
|
|
2
|
+
return Number.isFinite(value) && value > 0 ? Math.floor(value) : 0;
|
|
3
|
+
}
|
|
4
|
+
/** Row-major index for a map cell, or null outside a valid map. */
|
|
5
|
+
export function cellIndex(mapWidth, mapHeight, column, row) {
|
|
6
|
+
const width = dimension(mapWidth);
|
|
7
|
+
const height = dimension(mapHeight);
|
|
8
|
+
if (!Number.isInteger(column) || !Number.isInteger(row))
|
|
9
|
+
return null;
|
|
10
|
+
if (column < 0 || row < 0 || column >= width || row >= height)
|
|
11
|
+
return null;
|
|
12
|
+
return row * width + column;
|
|
13
|
+
}
|
|
14
|
+
/** Cell containing a logical point, relative to the Tilemap entity origin. */
|
|
15
|
+
export function cellAt(spec, logicalX, logicalY) {
|
|
16
|
+
const size = spec.cellSize;
|
|
17
|
+
if (!Number.isFinite(size) || size <= 0)
|
|
18
|
+
return null;
|
|
19
|
+
const column = Math.floor((logicalX - (spec.originX ?? 0)) / size);
|
|
20
|
+
const row = Math.floor((logicalY - (spec.originY ?? 0)) / size);
|
|
21
|
+
const index = cellIndex(spec.mapWidth, spec.mapHeight, column, row);
|
|
22
|
+
return index === null ? null : { column, row, index };
|
|
23
|
+
}
|
|
24
|
+
/** Logical bounds and center of one map cell. */
|
|
25
|
+
export function cellBounds(spec, column, row) {
|
|
26
|
+
if (cellIndex(spec.mapWidth, spec.mapHeight, column, row) === null)
|
|
27
|
+
return null;
|
|
28
|
+
const size = spec.cellSize;
|
|
29
|
+
if (!Number.isFinite(size) || size <= 0)
|
|
30
|
+
return null;
|
|
31
|
+
const left = (spec.originX ?? 0) + column * size;
|
|
32
|
+
const bottom = (spec.originY ?? 0) + row * size;
|
|
33
|
+
return {
|
|
34
|
+
left,
|
|
35
|
+
right: left + size,
|
|
36
|
+
bottom,
|
|
37
|
+
top: bottom + size,
|
|
38
|
+
centerX: left + size / 2,
|
|
39
|
+
centerY: bottom + size / 2,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
@@ -133,6 +133,10 @@ async function loadBundledModule(specifier, packageRoot) {
|
|
|
133
133
|
return import('@waica/archetype-topdown');
|
|
134
134
|
case '@waica/archetype-topdown/manifest':
|
|
135
135
|
return import('@waica/archetype-topdown/manifest');
|
|
136
|
+
case '@waica/archetype-isometric':
|
|
137
|
+
return import('@waica/archetype-isometric');
|
|
138
|
+
case '@waica/archetype-isometric/manifest':
|
|
139
|
+
return import('@waica/archetype-isometric/manifest');
|
|
136
140
|
default:
|
|
137
141
|
throw new PackageUnavailableError(specifier);
|
|
138
142
|
}
|
|
@@ -13,6 +13,7 @@ const FALLBACK_PACKAGES = new Set([
|
|
|
13
13
|
'@waica/behaviors',
|
|
14
14
|
'@waica/archetype-platformer',
|
|
15
15
|
'@waica/archetype-topdown',
|
|
16
|
+
'@waica/archetype-isometric',
|
|
16
17
|
]);
|
|
17
18
|
const FALLBACK_SPECIFIERS = new Set([...FALLBACK_PACKAGES, 'three']);
|
|
18
19
|
const REF_KINDS = new Set(['prefab', 'clip', 'action', 'stat']);
|