@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.
Files changed (100) hide show
  1. package/README.md +1 -1
  2. package/dist/editor/assets/{cssMode-eS4pAOyh.js → cssMode-DwPoqXFO.js} +1 -1
  3. package/dist/editor/assets/{freemarker2-FMQjZKQk.js → freemarker2-gl5y25bH.js} +1 -1
  4. package/dist/editor/assets/{handlebars-dDYOnqat.js → handlebars-DHUb8mb3.js} +1 -1
  5. package/dist/editor/assets/{html-Ba6xZh4T.js → html-C8W-psr4.js} +1 -1
  6. package/dist/editor/assets/{htmlMode-DC9qJr2p.js → htmlMode-BiF5TH2_.js} +1 -1
  7. package/dist/editor/assets/{index-Cy5pmBhN.css → index-CzarIYLW.css} +1 -1
  8. package/dist/editor/assets/{index-CoyeInOT.js → index-DtMwWp8R.js} +2732 -608
  9. package/dist/editor/assets/{javascript-DOwFvmvM.js → javascript-D_t2jyWi.js} +1 -1
  10. package/dist/editor/assets/{jsonMode-CcG7zlSf.js → jsonMode-CZ0SltDj.js} +1 -1
  11. package/dist/editor/assets/{liquid-Dfp71r7J.js → liquid-DUxURZui.js} +1 -1
  12. package/dist/editor/assets/{mdx-Ci7vVeht.js → mdx-CDIQ7hmo.js} +1 -1
  13. package/dist/editor/assets/{python-Bluv3Y9Q.js → python-Cra2N916.js} +1 -1
  14. package/dist/editor/assets/{razor-BtwTXMaK.js → razor-B3qV-mNp.js} +1 -1
  15. package/dist/editor/assets/{tsMode-D3_D-H85.js → tsMode-Ci457z4v.js} +1 -1
  16. package/dist/editor/assets/{typescript-Ch_PS5f7.js → typescript-BXjh3GLT.js} +1 -1
  17. package/dist/editor/assets/{xml-CI_bH_MX.js → xml-DQuEpqk5.js} +1 -1
  18. package/dist/editor/assets/{yaml-LD9GTZyy.js → yaml-CQA7WIT-.js} +1 -1
  19. package/dist/editor/index.html +2 -2
  20. package/dist/mcp/known-archetypes.js +5 -0
  21. package/dist/mcp/node_modules/@waica/archetype-isometric/assets/ATTRIBUTION.md +72 -0
  22. package/dist/mcp/node_modules/@waica/archetype-isometric/assets/waica-iso-crate.png +0 -0
  23. package/dist/mcp/node_modules/@waica/archetype-isometric/assets/waica-iso-ground.png +0 -0
  24. package/dist/mcp/node_modules/@waica/archetype-isometric/assets/waica-iso-hero.png +0 -0
  25. package/dist/mcp/node_modules/@waica/archetype-isometric/assets/waica-iso-orc.png +0 -0
  26. package/dist/mcp/node_modules/@waica/archetype-isometric/assets/waica-iso-rock.png +0 -0
  27. package/dist/mcp/node_modules/@waica/archetype-isometric/assets/waica-iso-tree.png +0 -0
  28. package/dist/mcp/node_modules/@waica/archetype-isometric/assets/waica-iso-villager.png +0 -0
  29. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/animation.d.ts +3 -0
  30. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/animation.js +10 -0
  31. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/art.d.ts +3 -0
  32. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/art.js +10 -0
  33. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/bundle.d.ts +2 -0
  34. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/bundle.js +9 -0
  35. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/controls.d.ts +3 -0
  36. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/controls.js +14 -0
  37. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/index.d.ts +24 -0
  38. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/index.js +15 -0
  39. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/manifest.d.ts +16 -0
  40. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/manifest.js +29 -0
  41. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/prefabs.d.ts +18 -0
  42. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/prefabs.js +196 -0
  43. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/registry-data.d.ts +3 -0
  44. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/registry-data.js +46 -0
  45. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/registry.d.ts +4 -0
  46. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/registry.js +17 -0
  47. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/scene-default.d.ts +5 -0
  48. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/scene-default.js +49 -0
  49. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/ui.d.ts +1 -0
  50. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/ui.js +17 -0
  51. package/dist/mcp/node_modules/@waica/archetype-isometric/package.json +30 -0
  52. package/dist/mcp/node_modules/@waica/archetype-platformer/package.json +3 -3
  53. package/dist/mcp/node_modules/@waica/archetype-topdown/dist/registry-data.js +2 -1
  54. package/dist/mcp/node_modules/@waica/archetype-topdown/dist/ui.js +2 -19
  55. package/dist/mcp/node_modules/@waica/archetype-topdown/package.json +3 -3
  56. package/dist/mcp/node_modules/@waica/behaviors/dist/grid-motor.d.ts +56 -0
  57. package/dist/mcp/node_modules/@waica/behaviors/dist/grid-motor.js +74 -0
  58. package/dist/mcp/node_modules/@waica/behaviors/dist/grid-player-role.d.ts +15 -0
  59. package/dist/mcp/node_modules/@waica/behaviors/dist/grid-player-role.js +71 -0
  60. package/dist/mcp/node_modules/@waica/behaviors/dist/index.d.ts +3 -1
  61. package/dist/mcp/node_modules/@waica/behaviors/dist/index.js +3 -1
  62. package/dist/mcp/node_modules/@waica/behaviors/dist/interactable.d.ts +3 -0
  63. package/dist/mcp/node_modules/@waica/behaviors/dist/interactable.js +25 -2
  64. package/dist/mcp/node_modules/@waica/behaviors/dist/iso-motor.d.ts +14 -0
  65. package/dist/mcp/node_modules/@waica/behaviors/dist/iso-motor.js +36 -0
  66. package/dist/mcp/node_modules/@waica/behaviors/dist/iso-player-states.d.ts +5 -0
  67. package/dist/mcp/node_modules/@waica/behaviors/dist/iso-player-states.js +9 -0
  68. package/dist/mcp/node_modules/@waica/behaviors/dist/topdown-motor.d.ts +7 -61
  69. package/dist/mcp/node_modules/@waica/behaviors/dist/topdown-motor.js +8 -79
  70. package/dist/mcp/node_modules/@waica/behaviors/dist/topdown-player-states.d.ts +4 -17
  71. package/dist/mcp/node_modules/@waica/behaviors/dist/topdown-player-states.js +10 -82
  72. package/dist/mcp/node_modules/@waica/behaviors/package.json +2 -2
  73. package/dist/mcp/node_modules/@waica/engine/dist/component.d.ts +2 -0
  74. package/dist/mcp/node_modules/@waica/engine/dist/components/animated-sprite.d.ts +19 -1
  75. package/dist/mcp/node_modules/@waica/engine/dist/components/animated-sprite.js +35 -7
  76. package/dist/mcp/node_modules/@waica/engine/dist/components/dynamic-body.js +2 -4
  77. package/dist/mcp/node_modules/@waica/engine/dist/components/sprite.d.ts +19 -0
  78. package/dist/mcp/node_modules/@waica/engine/dist/components/sprite.js +44 -8
  79. package/dist/mcp/node_modules/@waica/engine/dist/components/tilemap.d.ts +113 -0
  80. package/dist/mcp/node_modules/@waica/engine/dist/components/tilemap.js +316 -0
  81. package/dist/mcp/node_modules/@waica/engine/dist/entity.d.ts +3 -0
  82. package/dist/mcp/node_modules/@waica/engine/dist/entity.js +13 -1
  83. package/dist/mcp/node_modules/@waica/engine/dist/game.d.ts +4 -0
  84. package/dist/mcp/node_modules/@waica/engine/dist/game.js +41 -9
  85. package/dist/mcp/node_modules/@waica/engine/dist/index.d.ts +9 -0
  86. package/dist/mcp/node_modules/@waica/engine/dist/index.js +5 -0
  87. package/dist/mcp/node_modules/@waica/engine/dist/projection.d.ts +14 -0
  88. package/dist/mcp/node_modules/@waica/engine/dist/projection.js +30 -0
  89. package/dist/mcp/node_modules/@waica/engine/dist/scene-solids.d.ts +16 -0
  90. package/dist/mcp/node_modules/@waica/engine/dist/scene-solids.js +28 -0
  91. package/dist/mcp/node_modules/@waica/engine/dist/scene.d.ts +3 -1
  92. package/dist/mcp/node_modules/@waica/engine/dist/solid-axis.js +2 -4
  93. package/dist/mcp/node_modules/@waica/engine/dist/sprite-placement.d.ts +22 -0
  94. package/dist/mcp/node_modules/@waica/engine/dist/sprite-placement.js +14 -0
  95. package/dist/mcp/node_modules/@waica/engine/dist/tilemap-grid.d.ts +26 -0
  96. package/dist/mcp/node_modules/@waica/engine/dist/tilemap-grid.js +41 -0
  97. package/dist/mcp/node_modules/@waica/engine/package.json +1 -1
  98. package/dist/mcp/package-resolver.js +4 -0
  99. package/dist/mcp/project-component-runner.js +1 -0
  100. 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
+ }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@waica/engine",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
4
4
  "description": "Waica game engine core — archetype-driven, web-first, 2D & 3D",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -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']);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@waica/cli",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
4
4
  "description": "Waica in one command — `npx @waica/cli` opens the editor, `waica mcp` serves the MCP server",
5
5
  "license": "MIT",
6
6
  "type": "module",