@almadar/ui 5.68.0 → 5.70.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.
@@ -1,19 +1,36 @@
1
1
  import React from 'react';
2
- import type { AssetUrl } from '@almadar/core';
2
+ import type { AssetUrl, EventEmit } from '@almadar/core';
3
+ import type { IsometricTile, IsometricUnit, IsometricFeature } from './types/isometric';
3
4
  import type { DisplayStateProps } from '../../core/organisms/types';
5
+ import type { IsometricCanvasProps } from '../molecules/IsometricCanvas';
4
6
  export interface SpaceShmupBoardProps extends DisplayStateProps {
5
- /** Background image URL (starfield / space scene) */
6
- backgroundImage?: AssetUrl;
7
- /** Base URL prefix for asset URLs */
7
+ /** Space terrain tiles filling the grid */
8
+ tiles?: IsometricTile[];
9
+ /** Player ship and enemy ships on the board */
10
+ units?: IsometricUnit[];
11
+ /** Features (asteroids, power-ups, etc.) on the board */
12
+ features?: IsometricFeature[];
13
+ /** Asset sprite manifest (same shape as IsometricCanvas.assetManifest) */
14
+ assetManifest?: IsometricCanvasProps['assetManifest'];
15
+ /** Base URL prepended to manifest sprite paths */
8
16
  assetBaseUrl?: AssetUrl;
9
- /** Canvas width in pixels */
10
- width?: number;
11
- /** Canvas height in pixels */
12
- height?: number;
13
- /** Target frames per second */
14
- fps?: number;
17
+ /** Render scale */
18
+ scale?: number;
19
+ /** Show minimap overlay */
20
+ showMinimap?: boolean;
21
+ /** Enable camera pan/zoom controls */
22
+ enableCamera?: boolean;
23
+ /** Declarative event: emits UI:{tileClickEvent} with { x, y } on tile click */
24
+ tileClickEvent?: EventEmit<{
25
+ x: number;
26
+ y: number;
27
+ }>;
28
+ /** Declarative event: emits UI:{unitClickEvent} with { unitId } on unit click */
29
+ unitClickEvent?: EventEmit<{
30
+ unitId: string;
31
+ }>;
15
32
  }
16
- export declare function SpaceShmupBoard({ backgroundImage, assetBaseUrl, width, height, fps, isLoading, error, className, }: SpaceShmupBoardProps): React.ReactElement;
33
+ export declare function SpaceShmupBoard({ tiles, units, features, assetManifest, assetBaseUrl, scale, showMinimap, enableCamera, tileClickEvent, unitClickEvent, isLoading, error, className, }: SpaceShmupBoardProps): React.ReactElement;
17
34
  export declare namespace SpaceShmupBoard {
18
35
  var displayName: string;
19
36
  }
@@ -10419,7 +10419,13 @@ function IsometricCanvas({
10419
10419
  const img = unitSpriteUrl ? getImage(unitSpriteUrl) : null;
10420
10420
  const unitDrawH = scaledFloorHeight * spriteHeightRatio * unitScale;
10421
10421
  const maxUnitW = scaledTileWidth * spriteMaxWidthRatio * unitScale;
10422
- const ar = img ? img.naturalWidth / img.naturalHeight : 0.5;
10422
+ const SHEET_ROWS = 5;
10423
+ const sheetFrameW = img ? img.naturalWidth / exports.SHEET_COLUMNS : 0;
10424
+ const sheetFrameH = img ? img.naturalHeight / SHEET_ROWS : 0;
10425
+ const imgIsSheet = img ? img.naturalWidth % exports.SHEET_COLUMNS === 0 && img.naturalHeight % SHEET_ROWS === 0 && Math.abs(sheetFrameW - sheetFrameH) < 2 : false;
10426
+ const frameW = imgIsSheet ? sheetFrameW : img?.naturalWidth ?? 1;
10427
+ const frameH = imgIsSheet ? sheetFrameH : img?.naturalHeight ?? 1;
10428
+ const ar = frameW / (frameH || 1);
10423
10429
  let drawH = unitDrawH;
10424
10430
  let drawW = unitDrawH * ar;
10425
10431
  if (drawW > maxUnitW) {
@@ -10433,7 +10439,11 @@ function IsometricCanvas({
10433
10439
  ctx.save();
10434
10440
  ctx.globalAlpha = 0.25;
10435
10441
  if (img) {
10436
- ctx.drawImage(img, ghostCenterX - drawW / 2, ghostGroundY - drawH, drawW, drawH);
10442
+ if (imgIsSheet) {
10443
+ ctx.drawImage(img, 0, 0, sheetFrameW, sheetFrameH, ghostCenterX - drawW / 2, ghostGroundY - drawH, drawW, drawH);
10444
+ } else {
10445
+ ctx.drawImage(img, ghostCenterX - drawW / 2, ghostGroundY - drawH, drawW, drawH);
10446
+ }
10437
10447
  } else {
10438
10448
  const color = unit.team === "player" ? "#3b82f6" : unit.team === "enemy" ? "#ef4444" : "#6b7280";
10439
10449
  ctx.beginPath();
@@ -10477,14 +10487,21 @@ function IsometricCanvas({
10477
10487
  ctx.restore();
10478
10488
  } else if (img) {
10479
10489
  const spriteY = groundY - drawH - breatheOffset;
10490
+ const drawUnit = (x) => {
10491
+ if (imgIsSheet) {
10492
+ ctx.drawImage(img, 0, 0, sheetFrameW, sheetFrameH, x, spriteY, drawW, drawH);
10493
+ } else {
10494
+ ctx.drawImage(img, x, spriteY, drawW, drawH);
10495
+ }
10496
+ };
10480
10497
  if (unit.team) {
10481
10498
  ctx.save();
10482
10499
  ctx.shadowColor = unit.team === "player" ? "rgba(0, 150, 255, 0.6)" : "rgba(255, 50, 50, 0.6)";
10483
10500
  ctx.shadowBlur = 12 * scale;
10484
- ctx.drawImage(img, centerX - drawW / 2, spriteY, drawW, drawH);
10501
+ drawUnit(centerX - drawW / 2);
10485
10502
  ctx.restore();
10486
10503
  } else {
10487
- ctx.drawImage(img, centerX - drawW / 2, spriteY, drawW, drawH);
10504
+ drawUnit(centerX - drawW / 2);
10488
10505
  }
10489
10506
  } else {
10490
10507
  const color = unit.team === "player" ? "#3b82f6" : unit.team === "enemy" ? "#ef4444" : "#6b7280";
@@ -10777,6 +10794,7 @@ var init_IsometricCanvas = __esm({
10777
10794
  init_useUnitSpriteAtlas();
10778
10795
  init_verificationRegistry();
10779
10796
  init_isometric();
10797
+ init_spriteSheetConstants();
10780
10798
  IsometricCanvas.displayName = "IsometricCanvas";
10781
10799
  IsometricCanvas_default = IsometricCanvas;
10782
10800
  }
@@ -45772,35 +45790,44 @@ var init_HexStrategyBoard = __esm({
45772
45790
  }
45773
45791
  });
45774
45792
  function HolidayRunnerBoard({
45775
- backgroundImage,
45793
+ tiles,
45794
+ units,
45795
+ features,
45796
+ assetManifest,
45776
45797
  assetBaseUrl,
45777
- width = 800,
45778
- height = 400,
45779
- fps = 60,
45798
+ scale = 0.45,
45799
+ showMinimap = false,
45800
+ enableCamera = true,
45801
+ tileClickEvent,
45802
+ unitClickEvent,
45780
45803
  isLoading,
45781
45804
  error,
45782
45805
  className
45783
45806
  }) {
45784
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("holiday-runner-board relative w-full h-full", className), children: [
45785
- isLoading && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-black/40 z-10", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-white text-sm", children: "Loading\u2026" }) }),
45786
- error && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-black/60 z-10", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-red-400 text-sm", children: error.message }) }),
45787
- /* @__PURE__ */ jsxRuntime.jsx(
45788
- GameCanvas2D,
45789
- {
45790
- width,
45791
- height,
45792
- fps,
45793
- backgroundImage: backgroundImage ?? "",
45794
- assetBaseUrl
45795
- }
45796
- )
45797
- ] });
45807
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("holiday-runner-board relative w-full h-full", className), children: /* @__PURE__ */ jsxRuntime.jsx(
45808
+ IsometricCanvas_default,
45809
+ {
45810
+ tileLayout: "flat",
45811
+ tiles,
45812
+ units,
45813
+ features,
45814
+ assetManifest,
45815
+ assetBaseUrl,
45816
+ scale,
45817
+ showMinimap,
45818
+ enableCamera,
45819
+ tileClickEvent,
45820
+ unitClickEvent,
45821
+ isLoading,
45822
+ error
45823
+ }
45824
+ ) });
45798
45825
  }
45799
45826
  var init_HolidayRunnerBoard = __esm({
45800
45827
  "components/game/organisms/HolidayRunnerBoard.tsx"() {
45801
45828
  "use client";
45802
45829
  init_cn();
45803
- init_GameCanvas2D();
45830
+ init_IsometricCanvas();
45804
45831
  HolidayRunnerBoard.displayName = "HolidayRunnerBoard";
45805
45832
  }
45806
45833
  });
@@ -47626,25 +47653,36 @@ var init_PricingPageTemplate = __esm({
47626
47653
  }
47627
47654
  });
47628
47655
  function RacingBoard({
47629
- backgroundImage,
47656
+ tiles,
47657
+ units,
47658
+ features,
47659
+ assetManifest,
47630
47660
  assetBaseUrl,
47631
- width = 800,
47632
- height = 600,
47633
- fps = 60,
47634
- tickEvent,
47635
- drawEvent,
47661
+ scale = 0.45,
47662
+ showMinimap = true,
47663
+ enableCamera = true,
47664
+ tileClickEvent,
47665
+ unitClickEvent,
47666
+ isLoading,
47667
+ error,
47636
47668
  className
47637
47669
  }) {
47638
47670
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("racing-board relative w-full h-full", className), children: /* @__PURE__ */ jsxRuntime.jsx(
47639
- GameCanvas2D,
47671
+ IsometricCanvas_default,
47640
47672
  {
47641
- backgroundImage,
47673
+ tileLayout: "flat",
47674
+ tiles,
47675
+ units,
47676
+ features,
47677
+ assetManifest,
47642
47678
  assetBaseUrl,
47643
- width,
47644
- height,
47645
- fps,
47646
- tickEvent: typeof tickEvent === "string" ? tickEvent : void 0,
47647
- drawEvent: typeof drawEvent === "string" ? drawEvent : void 0
47679
+ scale,
47680
+ showMinimap,
47681
+ enableCamera,
47682
+ tileClickEvent,
47683
+ unitClickEvent,
47684
+ isLoading,
47685
+ error
47648
47686
  }
47649
47687
  ) });
47650
47688
  }
@@ -47652,7 +47690,7 @@ var init_RacingBoard = __esm({
47652
47690
  "components/game/organisms/RacingBoard.tsx"() {
47653
47691
  "use client";
47654
47692
  init_cn();
47655
- init_GameCanvas2D();
47693
+ init_IsometricCanvas();
47656
47694
  RacingBoard.displayName = "RacingBoard";
47657
47695
  }
47658
47696
  });
@@ -50951,35 +50989,44 @@ var init_SokobanBoard = __esm({
50951
50989
  }
50952
50990
  });
50953
50991
  function SpaceShmupBoard({
50954
- backgroundImage,
50992
+ tiles,
50993
+ units,
50994
+ features,
50995
+ assetManifest,
50955
50996
  assetBaseUrl,
50956
- width = 800,
50957
- height = 600,
50958
- fps = 60,
50997
+ scale = 0.45,
50998
+ showMinimap = false,
50999
+ enableCamera = true,
51000
+ tileClickEvent,
51001
+ unitClickEvent,
50959
51002
  isLoading,
50960
51003
  error,
50961
51004
  className
50962
51005
  }) {
50963
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("space-shmup-board relative w-full h-full", className), children: [
50964
- isLoading && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-black/60 z-10", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-white text-sm", children: "Loading\u2026" }) }),
50965
- error && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-red-900/60 z-10", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-white text-sm", children: error.message }) }),
50966
- /* @__PURE__ */ jsxRuntime.jsx(
50967
- GameCanvas2D,
50968
- {
50969
- backgroundImage,
50970
- assetBaseUrl,
50971
- width,
50972
- height,
50973
- fps
50974
- }
50975
- )
50976
- ] });
51006
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("space-shmup-board relative w-full h-full", className), children: /* @__PURE__ */ jsxRuntime.jsx(
51007
+ IsometricCanvas_default,
51008
+ {
51009
+ tileLayout: "flat",
51010
+ tiles,
51011
+ units,
51012
+ features,
51013
+ assetManifest,
51014
+ assetBaseUrl,
51015
+ scale,
51016
+ showMinimap,
51017
+ enableCamera,
51018
+ tileClickEvent,
51019
+ unitClickEvent,
51020
+ isLoading,
51021
+ error
51022
+ }
51023
+ ) });
50977
51024
  }
50978
51025
  var init_SpaceShmupBoard = __esm({
50979
51026
  "components/game/organisms/SpaceShmupBoard.tsx"() {
50980
51027
  "use client";
50981
51028
  init_cn();
50982
- init_GameCanvas2D();
51029
+ init_IsometricCanvas();
50983
51030
  SpaceShmupBoard.displayName = "SpaceShmupBoard";
50984
51031
  }
50985
51032
  });
@@ -10373,7 +10373,13 @@ function IsometricCanvas({
10373
10373
  const img = unitSpriteUrl ? getImage(unitSpriteUrl) : null;
10374
10374
  const unitDrawH = scaledFloorHeight * spriteHeightRatio * unitScale;
10375
10375
  const maxUnitW = scaledTileWidth * spriteMaxWidthRatio * unitScale;
10376
- const ar = img ? img.naturalWidth / img.naturalHeight : 0.5;
10376
+ const SHEET_ROWS = 5;
10377
+ const sheetFrameW = img ? img.naturalWidth / SHEET_COLUMNS : 0;
10378
+ const sheetFrameH = img ? img.naturalHeight / SHEET_ROWS : 0;
10379
+ const imgIsSheet = img ? img.naturalWidth % SHEET_COLUMNS === 0 && img.naturalHeight % SHEET_ROWS === 0 && Math.abs(sheetFrameW - sheetFrameH) < 2 : false;
10380
+ const frameW = imgIsSheet ? sheetFrameW : img?.naturalWidth ?? 1;
10381
+ const frameH = imgIsSheet ? sheetFrameH : img?.naturalHeight ?? 1;
10382
+ const ar = frameW / (frameH || 1);
10377
10383
  let drawH = unitDrawH;
10378
10384
  let drawW = unitDrawH * ar;
10379
10385
  if (drawW > maxUnitW) {
@@ -10387,7 +10393,11 @@ function IsometricCanvas({
10387
10393
  ctx.save();
10388
10394
  ctx.globalAlpha = 0.25;
10389
10395
  if (img) {
10390
- ctx.drawImage(img, ghostCenterX - drawW / 2, ghostGroundY - drawH, drawW, drawH);
10396
+ if (imgIsSheet) {
10397
+ ctx.drawImage(img, 0, 0, sheetFrameW, sheetFrameH, ghostCenterX - drawW / 2, ghostGroundY - drawH, drawW, drawH);
10398
+ } else {
10399
+ ctx.drawImage(img, ghostCenterX - drawW / 2, ghostGroundY - drawH, drawW, drawH);
10400
+ }
10391
10401
  } else {
10392
10402
  const color = unit.team === "player" ? "#3b82f6" : unit.team === "enemy" ? "#ef4444" : "#6b7280";
10393
10403
  ctx.beginPath();
@@ -10431,14 +10441,21 @@ function IsometricCanvas({
10431
10441
  ctx.restore();
10432
10442
  } else if (img) {
10433
10443
  const spriteY = groundY - drawH - breatheOffset;
10444
+ const drawUnit = (x) => {
10445
+ if (imgIsSheet) {
10446
+ ctx.drawImage(img, 0, 0, sheetFrameW, sheetFrameH, x, spriteY, drawW, drawH);
10447
+ } else {
10448
+ ctx.drawImage(img, x, spriteY, drawW, drawH);
10449
+ }
10450
+ };
10434
10451
  if (unit.team) {
10435
10452
  ctx.save();
10436
10453
  ctx.shadowColor = unit.team === "player" ? "rgba(0, 150, 255, 0.6)" : "rgba(255, 50, 50, 0.6)";
10437
10454
  ctx.shadowBlur = 12 * scale;
10438
- ctx.drawImage(img, centerX - drawW / 2, spriteY, drawW, drawH);
10455
+ drawUnit(centerX - drawW / 2);
10439
10456
  ctx.restore();
10440
10457
  } else {
10441
- ctx.drawImage(img, centerX - drawW / 2, spriteY, drawW, drawH);
10458
+ drawUnit(centerX - drawW / 2);
10442
10459
  }
10443
10460
  } else {
10444
10461
  const color = unit.team === "player" ? "#3b82f6" : unit.team === "enemy" ? "#ef4444" : "#6b7280";
@@ -10731,6 +10748,7 @@ var init_IsometricCanvas = __esm({
10731
10748
  init_useUnitSpriteAtlas();
10732
10749
  init_verificationRegistry();
10733
10750
  init_isometric();
10751
+ init_spriteSheetConstants();
10734
10752
  IsometricCanvas.displayName = "IsometricCanvas";
10735
10753
  IsometricCanvas_default = IsometricCanvas;
10736
10754
  }
@@ -45726,35 +45744,44 @@ var init_HexStrategyBoard = __esm({
45726
45744
  }
45727
45745
  });
45728
45746
  function HolidayRunnerBoard({
45729
- backgroundImage,
45747
+ tiles,
45748
+ units,
45749
+ features,
45750
+ assetManifest,
45730
45751
  assetBaseUrl,
45731
- width = 800,
45732
- height = 400,
45733
- fps = 60,
45752
+ scale = 0.45,
45753
+ showMinimap = false,
45754
+ enableCamera = true,
45755
+ tileClickEvent,
45756
+ unitClickEvent,
45734
45757
  isLoading,
45735
45758
  error,
45736
45759
  className
45737
45760
  }) {
45738
- return /* @__PURE__ */ jsxs("div", { className: cn("holiday-runner-board relative w-full h-full", className), children: [
45739
- isLoading && /* @__PURE__ */ jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-black/40 z-10", children: /* @__PURE__ */ jsx("span", { className: "text-white text-sm", children: "Loading\u2026" }) }),
45740
- error && /* @__PURE__ */ jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-black/60 z-10", children: /* @__PURE__ */ jsx("span", { className: "text-red-400 text-sm", children: error.message }) }),
45741
- /* @__PURE__ */ jsx(
45742
- GameCanvas2D,
45743
- {
45744
- width,
45745
- height,
45746
- fps,
45747
- backgroundImage: backgroundImage ?? "",
45748
- assetBaseUrl
45749
- }
45750
- )
45751
- ] });
45761
+ return /* @__PURE__ */ jsx("div", { className: cn("holiday-runner-board relative w-full h-full", className), children: /* @__PURE__ */ jsx(
45762
+ IsometricCanvas_default,
45763
+ {
45764
+ tileLayout: "flat",
45765
+ tiles,
45766
+ units,
45767
+ features,
45768
+ assetManifest,
45769
+ assetBaseUrl,
45770
+ scale,
45771
+ showMinimap,
45772
+ enableCamera,
45773
+ tileClickEvent,
45774
+ unitClickEvent,
45775
+ isLoading,
45776
+ error
45777
+ }
45778
+ ) });
45752
45779
  }
45753
45780
  var init_HolidayRunnerBoard = __esm({
45754
45781
  "components/game/organisms/HolidayRunnerBoard.tsx"() {
45755
45782
  "use client";
45756
45783
  init_cn();
45757
- init_GameCanvas2D();
45784
+ init_IsometricCanvas();
45758
45785
  HolidayRunnerBoard.displayName = "HolidayRunnerBoard";
45759
45786
  }
45760
45787
  });
@@ -47580,25 +47607,36 @@ var init_PricingPageTemplate = __esm({
47580
47607
  }
47581
47608
  });
47582
47609
  function RacingBoard({
47583
- backgroundImage,
47610
+ tiles,
47611
+ units,
47612
+ features,
47613
+ assetManifest,
47584
47614
  assetBaseUrl,
47585
- width = 800,
47586
- height = 600,
47587
- fps = 60,
47588
- tickEvent,
47589
- drawEvent,
47615
+ scale = 0.45,
47616
+ showMinimap = true,
47617
+ enableCamera = true,
47618
+ tileClickEvent,
47619
+ unitClickEvent,
47620
+ isLoading,
47621
+ error,
47590
47622
  className
47591
47623
  }) {
47592
47624
  return /* @__PURE__ */ jsx("div", { className: cn("racing-board relative w-full h-full", className), children: /* @__PURE__ */ jsx(
47593
- GameCanvas2D,
47625
+ IsometricCanvas_default,
47594
47626
  {
47595
- backgroundImage,
47627
+ tileLayout: "flat",
47628
+ tiles,
47629
+ units,
47630
+ features,
47631
+ assetManifest,
47596
47632
  assetBaseUrl,
47597
- width,
47598
- height,
47599
- fps,
47600
- tickEvent: typeof tickEvent === "string" ? tickEvent : void 0,
47601
- drawEvent: typeof drawEvent === "string" ? drawEvent : void 0
47633
+ scale,
47634
+ showMinimap,
47635
+ enableCamera,
47636
+ tileClickEvent,
47637
+ unitClickEvent,
47638
+ isLoading,
47639
+ error
47602
47640
  }
47603
47641
  ) });
47604
47642
  }
@@ -47606,7 +47644,7 @@ var init_RacingBoard = __esm({
47606
47644
  "components/game/organisms/RacingBoard.tsx"() {
47607
47645
  "use client";
47608
47646
  init_cn();
47609
- init_GameCanvas2D();
47647
+ init_IsometricCanvas();
47610
47648
  RacingBoard.displayName = "RacingBoard";
47611
47649
  }
47612
47650
  });
@@ -50905,35 +50943,44 @@ var init_SokobanBoard = __esm({
50905
50943
  }
50906
50944
  });
50907
50945
  function SpaceShmupBoard({
50908
- backgroundImage,
50946
+ tiles,
50947
+ units,
50948
+ features,
50949
+ assetManifest,
50909
50950
  assetBaseUrl,
50910
- width = 800,
50911
- height = 600,
50912
- fps = 60,
50951
+ scale = 0.45,
50952
+ showMinimap = false,
50953
+ enableCamera = true,
50954
+ tileClickEvent,
50955
+ unitClickEvent,
50913
50956
  isLoading,
50914
50957
  error,
50915
50958
  className
50916
50959
  }) {
50917
- return /* @__PURE__ */ jsxs("div", { className: cn("space-shmup-board relative w-full h-full", className), children: [
50918
- isLoading && /* @__PURE__ */ jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-black/60 z-10", children: /* @__PURE__ */ jsx("span", { className: "text-white text-sm", children: "Loading\u2026" }) }),
50919
- error && /* @__PURE__ */ jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-red-900/60 z-10", children: /* @__PURE__ */ jsx("span", { className: "text-white text-sm", children: error.message }) }),
50920
- /* @__PURE__ */ jsx(
50921
- GameCanvas2D,
50922
- {
50923
- backgroundImage,
50924
- assetBaseUrl,
50925
- width,
50926
- height,
50927
- fps
50928
- }
50929
- )
50930
- ] });
50960
+ return /* @__PURE__ */ jsx("div", { className: cn("space-shmup-board relative w-full h-full", className), children: /* @__PURE__ */ jsx(
50961
+ IsometricCanvas_default,
50962
+ {
50963
+ tileLayout: "flat",
50964
+ tiles,
50965
+ units,
50966
+ features,
50967
+ assetManifest,
50968
+ assetBaseUrl,
50969
+ scale,
50970
+ showMinimap,
50971
+ enableCamera,
50972
+ tileClickEvent,
50973
+ unitClickEvent,
50974
+ isLoading,
50975
+ error
50976
+ }
50977
+ ) });
50931
50978
  }
50932
50979
  var init_SpaceShmupBoard = __esm({
50933
50980
  "components/game/organisms/SpaceShmupBoard.tsx"() {
50934
50981
  "use client";
50935
50982
  init_cn();
50936
- init_GameCanvas2D();
50983
+ init_IsometricCanvas();
50937
50984
  SpaceShmupBoard.displayName = "SpaceShmupBoard";
50938
50985
  }
50939
50986
  });