@almadar/ui 5.39.0 → 5.41.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.
@@ -6954,8 +6954,8 @@ var init_TraitFrame = __esm({
6954
6954
  }
6955
6955
  });
6956
6956
  function HealthBar({
6957
- current,
6958
- max,
6957
+ current = 3,
6958
+ max = 5,
6959
6959
  format = "hearts",
6960
6960
  size = "md",
6961
6961
  className,
@@ -7204,11 +7204,11 @@ var init_ControlButton = __esm({
7204
7204
  });
7205
7205
  function Sprite({
7206
7206
  spritesheet = "https://almadar-kflow-assets.web.app/shared/isometric-blocks/Spritesheet/allTiles_sheet.png",
7207
- frameWidth,
7208
- frameHeight,
7209
- frame,
7210
- x,
7211
- y,
7207
+ frameWidth = 64,
7208
+ frameHeight = 64,
7209
+ frame = 0,
7210
+ x = 0,
7211
+ y = 0,
7212
7212
  scale = 1,
7213
7213
  flipX = false,
7214
7214
  flipY = false,
@@ -7278,7 +7278,7 @@ var init_Sprite = __esm({
7278
7278
  }
7279
7279
  });
7280
7280
  function StateIndicator({
7281
- state,
7281
+ state = "idle",
7282
7282
  label,
7283
7283
  size = "md",
7284
7284
  animated = true,
@@ -7349,8 +7349,8 @@ function formatTime(seconds, format) {
7349
7349
  return `${mins.toString().padStart(2, "0")}:${padded}`;
7350
7350
  }
7351
7351
  function TimerDisplay({
7352
- seconds,
7353
- running,
7352
+ seconds = 90,
7353
+ running = true,
7354
7354
  format = "mm:ss",
7355
7355
  size = "md",
7356
7356
  className,
@@ -7387,8 +7387,8 @@ var init_TimerDisplay = __esm({
7387
7387
  });
7388
7388
  function ResourceCounter({
7389
7389
  icon,
7390
- label,
7391
- value,
7390
+ label = "Gold",
7391
+ value = 250,
7392
7392
  max,
7393
7393
  color,
7394
7394
  size = "md",
@@ -7440,10 +7440,11 @@ var init_ResourceCounter = __esm({
7440
7440
  }
7441
7441
  });
7442
7442
  function ItemSlot({
7443
- icon,
7444
- label,
7443
+ assetUrl = DEFAULT_ASSET_URL,
7444
+ icon = "sword",
7445
+ label = "Iron Sword",
7445
7446
  quantity,
7446
- rarity = "common",
7447
+ rarity = "uncommon",
7447
7448
  empty,
7448
7449
  size = "md",
7449
7450
  selected,
@@ -7451,6 +7452,7 @@ function ItemSlot({
7451
7452
  className
7452
7453
  }) {
7453
7454
  const isClickable = onClick != null;
7455
+ const px = assetSizeMap[size];
7454
7456
  return /* @__PURE__ */ jsx(
7455
7457
  "button",
7456
7458
  {
@@ -7471,7 +7473,17 @@ function ItemSlot({
7471
7473
  className
7472
7474
  ),
7473
7475
  children: empty ? /* @__PURE__ */ jsx("span", { className: "text-muted-foreground text-base", children: "+" }) : /* @__PURE__ */ jsxs(Fragment, { children: [
7474
- icon && /* @__PURE__ */ jsx("span", { className: "flex-shrink-0", children: typeof icon === "string" ? /* @__PURE__ */ jsx(Icon, { name: icon }) : /* @__PURE__ */ jsx(Icon, { icon }) }),
7476
+ assetUrl ? /* @__PURE__ */ jsx(
7477
+ "img",
7478
+ {
7479
+ src: assetUrl,
7480
+ alt: label,
7481
+ width: px,
7482
+ height: px,
7483
+ style: { imageRendering: "pixelated", objectFit: "contain" },
7484
+ className: "flex-shrink-0"
7485
+ }
7486
+ ) : icon ? /* @__PURE__ */ jsx("span", { className: "flex-shrink-0", children: typeof icon === "string" ? /* @__PURE__ */ jsx(Icon, { name: icon }) : /* @__PURE__ */ jsx(Icon, { icon }) }) : null,
7475
7487
  quantity != null && quantity > 1 && /* @__PURE__ */ jsx(
7476
7488
  "span",
7477
7489
  {
@@ -7487,7 +7499,7 @@ function ItemSlot({
7487
7499
  }
7488
7500
  );
7489
7501
  }
7490
- var sizeMap6, rarityBorderMap, rarityGlowMap;
7502
+ var sizeMap6, rarityBorderMap, rarityGlowMap, DEFAULT_ASSET_URL, assetSizeMap;
7491
7503
  var init_ItemSlot = __esm({
7492
7504
  "components/game/atoms/ItemSlot.tsx"() {
7493
7505
  "use client";
@@ -7512,11 +7524,17 @@ var init_ItemSlot = __esm({
7512
7524
  epic: "shadow-lg",
7513
7525
  legendary: "shadow-lg"
7514
7526
  };
7527
+ DEFAULT_ASSET_URL = "https://almadar-kflow-assets.web.app/shared/isometric-dungeon/Isometric/chestClosed_E.png";
7528
+ assetSizeMap = {
7529
+ sm: 28,
7530
+ md: 40,
7531
+ lg: 56
7532
+ };
7515
7533
  ItemSlot.displayName = "ItemSlot";
7516
7534
  }
7517
7535
  });
7518
7536
  function TurnIndicator({
7519
- currentTurn,
7537
+ currentTurn = 1,
7520
7538
  maxTurns,
7521
7539
  activeTeam,
7522
7540
  phase,
@@ -7579,7 +7597,7 @@ function getComboScale(combo) {
7579
7597
  return "";
7580
7598
  }
7581
7599
  function ComboCounter({
7582
- combo,
7600
+ combo = 5,
7583
7601
  multiplier,
7584
7602
  streak,
7585
7603
  size = "md",
@@ -7625,10 +7643,10 @@ var init_ComboCounter = __esm({
7625
7643
  }
7626
7644
  });
7627
7645
  function XPBar({
7628
- current,
7629
- max,
7630
- level,
7631
- showLabel = false,
7646
+ current = 350,
7647
+ max = 1e3,
7648
+ level = 5,
7649
+ showLabel = true,
7632
7650
  size = "md",
7633
7651
  animated = true,
7634
7652
  className
@@ -7711,7 +7729,7 @@ var init_XPBar = __esm({
7711
7729
  function WaypointMarker({
7712
7730
  label,
7713
7731
  icon,
7714
- active = false,
7732
+ active = true,
7715
7733
  completed = false,
7716
7734
  size = "md",
7717
7735
  className
@@ -7785,11 +7803,11 @@ function formatDuration(seconds) {
7785
7803
  return `${Math.round(seconds)}s`;
7786
7804
  }
7787
7805
  function StatusEffect({
7788
- icon,
7789
- label,
7790
- duration,
7806
+ icon = "shield",
7807
+ label = "Shield",
7808
+ duration = 30,
7791
7809
  stacks,
7792
- variant = "neutral",
7810
+ variant = "buff",
7793
7811
  size = "md",
7794
7812
  className
7795
7813
  }) {
@@ -7851,7 +7869,7 @@ var init_StatusEffect = __esm({
7851
7869
  }
7852
7870
  });
7853
7871
  function DamageNumber({
7854
- value,
7872
+ value = 42,
7855
7873
  type = "damage",
7856
7874
  size = "md",
7857
7875
  className
@@ -7900,8 +7918,8 @@ var init_DamageNumber = __esm({
7900
7918
  }
7901
7919
  });
7902
7920
  function DialogueBubble({
7903
- speaker,
7904
- text,
7921
+ speaker = "Hero",
7922
+ text = "The dungeon awaits. Choose your path wisely.",
7905
7923
  portrait = "https://almadar-kflow-assets.web.app/shared/characters/archetypes/04_hero.png",
7906
7924
  position = "bottom",
7907
7925
  className
@@ -7938,7 +7956,7 @@ var init_DialogueBubble = __esm({
7938
7956
  }
7939
7957
  });
7940
7958
  function ChoiceButton({
7941
- text,
7959
+ text = "Charge forward into the fray",
7942
7960
  index,
7943
7961
  disabled = false,
7944
7962
  selected = false,
@@ -7984,7 +8002,7 @@ var init_ChoiceButton = __esm({
7984
8002
  }
7985
8003
  });
7986
8004
  function ActionButton({
7987
- label,
8005
+ label = "Attack",
7988
8006
  icon,
7989
8007
  cooldown = 0,
7990
8008
  disabled = false,
@@ -8064,13 +8082,13 @@ var init_ActionButton = __esm({
8064
8082
  }
8065
8083
  });
8066
8084
  function MiniMap({
8067
- tiles = [],
8068
- units = [],
8085
+ tiles = DEFAULT_TILES,
8086
+ units = DEFAULT_UNITS,
8069
8087
  width = 150,
8070
8088
  height = 150,
8071
8089
  mapWidth = 100,
8072
8090
  mapHeight = 100,
8073
- viewportRect,
8091
+ viewportRect = DEFAULT_VIEWPORT,
8074
8092
  className
8075
8093
  }) {
8076
8094
  const canvasRef = React82.useRef(null);
@@ -8149,10 +8167,25 @@ function MiniMap({
8149
8167
  }
8150
8168
  );
8151
8169
  }
8170
+ var DEFAULT_TILES, DEFAULT_UNITS, DEFAULT_VIEWPORT;
8152
8171
  var init_MiniMap = __esm({
8153
8172
  "components/game/atoms/MiniMap.tsx"() {
8154
8173
  "use client";
8155
8174
  init_cn();
8175
+ DEFAULT_TILES = [
8176
+ { x: 10, y: 10, color: "#4ade80" },
8177
+ { x: 20, y: 15, color: "#4ade80" },
8178
+ { x: 30, y: 25, color: "#22c55e" },
8179
+ { x: 50, y: 40, color: "#4ade80" },
8180
+ { x: 60, y: 55, color: "#16a34a" },
8181
+ { x: 40, y: 60, color: "#4ade80" },
8182
+ { x: 70, y: 30, color: "#22c55e" },
8183
+ { x: 80, y: 70, color: "#4ade80" }
8184
+ ];
8185
+ DEFAULT_UNITS = [
8186
+ { x: 30, y: 30, color: "#60a5fa", isPlayer: true }
8187
+ ];
8188
+ DEFAULT_VIEWPORT = { x: 20, y: 20, w: 40, h: 40 };
8156
8189
  MiniMap.displayName = "MiniMap";
8157
8190
  }
8158
8191
  });
@@ -9275,7 +9308,7 @@ var init_Accordion = __esm({
9275
9308
  }
9276
9309
  });
9277
9310
  function ActionButtons({
9278
- buttons,
9311
+ buttons = DEFAULT_BUTTONS,
9279
9312
  onAction,
9280
9313
  actionEvent,
9281
9314
  layout = "horizontal",
@@ -9382,7 +9415,7 @@ function ActionButtons({
9382
9415
  button.id
9383
9416
  )) });
9384
9417
  }
9385
- var sizeMap14, layoutMap;
9418
+ var sizeMap14, layoutMap, DEFAULT_BUTTONS;
9386
9419
  var init_ActionButtons = __esm({
9387
9420
  "components/game/molecules/ActionButtons.tsx"() {
9388
9421
  "use client";
@@ -9399,6 +9432,11 @@ var init_ActionButtons = __esm({
9399
9432
  vertical: "flex flex-col gap-2",
9400
9433
  diamond: "grid grid-cols-3 gap-1"
9401
9434
  };
9435
+ DEFAULT_BUTTONS = [
9436
+ { id: "jump", label: "Jump", icon: "chevron-up", variant: "primary" },
9437
+ { id: "attack", label: "Attack", icon: "sword", variant: "secondary" },
9438
+ { id: "dodge", label: "Dodge", icon: "wind", variant: "ghost" }
9439
+ ];
9402
9440
  ActionButtons.displayName = "ActionButtons";
9403
9441
  }
9404
9442
  });
@@ -10591,7 +10629,7 @@ function IsometricCanvas({
10591
10629
  // Rendering options
10592
10630
  scale = 0.4,
10593
10631
  debug: debug2 = false,
10594
- backgroundImage = "https://almadar-kflow-assets.web.app/shared/scenes/dark_clouds_from_above.png",
10632
+ backgroundImage = "",
10595
10633
  showMinimap = true,
10596
10634
  enableCamera = true,
10597
10635
  unitScale = 1,
@@ -11729,10 +11767,10 @@ function BattleTemplate({
11729
11767
  entity,
11730
11768
  scale = 0.45,
11731
11769
  unitScale = 1,
11732
- tiles,
11733
- units,
11734
- features,
11735
- assetManifest,
11770
+ tiles = DEFAULT_BATTLE_TILES,
11771
+ units = DEFAULT_BATTLE_UNITS,
11772
+ features = DEFAULT_BATTLE_FEATURES,
11773
+ assetManifest = DEFAULT_BATTLE_MANIFEST,
11736
11774
  className
11737
11775
  }) {
11738
11776
  const resolved = entity && typeof entity === "object" && !Array.isArray(entity) ? entity : void 0;
@@ -11758,9 +11796,62 @@ function BattleTemplate({
11758
11796
  }
11759
11797
  );
11760
11798
  }
11799
+ var CDN, DEFAULT_BATTLE_TILES, DEFAULT_BATTLE_UNITS, DEFAULT_BATTLE_FEATURES, DEFAULT_BATTLE_MANIFEST;
11761
11800
  var init_BattleTemplate = __esm({
11762
11801
  "components/game/templates/BattleTemplate.tsx"() {
11763
11802
  init_BattleBoard();
11803
+ CDN = "https://almadar-kflow-assets.web.app/shared";
11804
+ DEFAULT_BATTLE_TILES = [
11805
+ { x: 0, y: 0, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
11806
+ { x: 1, y: 0, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
11807
+ { x: 2, y: 0, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
11808
+ { x: 3, y: 0, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
11809
+ { x: 4, y: 0, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
11810
+ { x: 0, y: 1, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
11811
+ { x: 1, y: 1, terrain: "dirt", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_01.png` },
11812
+ { x: 2, y: 1, terrain: "grass", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png` },
11813
+ { x: 3, y: 1, terrain: "grass", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png` },
11814
+ { x: 4, y: 1, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
11815
+ { x: 0, y: 2, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
11816
+ { x: 1, y: 2, terrain: "grass", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png` },
11817
+ { x: 2, y: 2, terrain: "dirt", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_01.png` },
11818
+ { x: 3, y: 2, terrain: "grass", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png` },
11819
+ { x: 4, y: 2, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
11820
+ { x: 0, y: 3, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
11821
+ { x: 1, y: 3, terrain: "grass", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png` },
11822
+ { x: 2, y: 3, terrain: "grass", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png` },
11823
+ { x: 3, y: 3, terrain: "dirt", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_01.png` },
11824
+ { x: 4, y: 3, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
11825
+ { x: 0, y: 4, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
11826
+ { x: 1, y: 4, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
11827
+ { x: 2, y: 4, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
11828
+ { x: 3, y: 4, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
11829
+ { x: 4, y: 4, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` }
11830
+ ];
11831
+ DEFAULT_BATTLE_UNITS = [
11832
+ { id: "u1", position: { x: 1, y: 1 }, unitType: "worker", name: "Worker", team: "player", health: 10, maxHealth: 10, sprite: `${CDN}/sprite-sheets/amir-sprite-sheet-se.png` },
11833
+ { id: "u2", position: { x: 3, y: 3 }, unitType: "guardian", name: "Guardian", team: "enemy", health: 8, maxHealth: 10, sprite: `${CDN}/sprite-sheets/destroyer-sprite-sheet-sw.png` }
11834
+ ];
11835
+ DEFAULT_BATTLE_FEATURES = [
11836
+ { id: "f1", x: 2, y: 2, type: "gold_mine", sprite: `${CDN}/world-map/gold_mine.png` },
11837
+ { id: "f2", x: 3, y: 1, type: "portal", sprite: `${CDN}/world-map/portal_open.png` }
11838
+ ];
11839
+ DEFAULT_BATTLE_MANIFEST = {
11840
+ baseUrl: CDN,
11841
+ terrains: {
11842
+ stone: "/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png",
11843
+ dirt: "/isometric-blocks/PNG/Abstract tiles/abstractTile_01.png",
11844
+ grass: "/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png"
11845
+ },
11846
+ units: {
11847
+ worker: "/sprite-sheets/amir-sprite-sheet-se.png",
11848
+ guardian: "/sprite-sheets/destroyer-sprite-sheet-sw.png"
11849
+ },
11850
+ features: {
11851
+ gold_mine: "/world-map/gold_mine.png",
11852
+ portal: "/world-map/portal_open.png"
11853
+ }
11854
+ };
11764
11855
  BattleTemplate.displayName = "BattleTemplate";
11765
11856
  }
11766
11857
  });
@@ -19760,10 +19851,10 @@ var init_CastleBoard = __esm({
19760
19851
  function CastleTemplate({
19761
19852
  entity,
19762
19853
  scale = 0.45,
19763
- tiles,
19764
- units,
19765
- features,
19766
- assetManifest,
19854
+ tiles = DEFAULT_CASTLE_TILES,
19855
+ units = DEFAULT_CASTLE_UNITS,
19856
+ features = DEFAULT_CASTLE_FEATURES,
19857
+ assetManifest = DEFAULT_CASTLE_MANIFEST,
19767
19858
  className
19768
19859
  }) {
19769
19860
  const resolved = entity && typeof entity === "object" && !Array.isArray(entity) ? entity : void 0;
@@ -19784,9 +19875,61 @@ function CastleTemplate({
19784
19875
  }
19785
19876
  );
19786
19877
  }
19878
+ var CDN2, DEFAULT_CASTLE_TILES, DEFAULT_CASTLE_UNITS, DEFAULT_CASTLE_FEATURES, DEFAULT_CASTLE_MANIFEST;
19787
19879
  var init_CastleTemplate = __esm({
19788
19880
  "components/game/templates/CastleTemplate.tsx"() {
19789
19881
  init_CastleBoard();
19882
+ CDN2 = "https://almadar-kflow-assets.web.app/shared";
19883
+ DEFAULT_CASTLE_TILES = [
19884
+ { x: 0, y: 0, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
19885
+ { x: 1, y: 0, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
19886
+ { x: 2, y: 0, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
19887
+ { x: 3, y: 0, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
19888
+ { x: 4, y: 0, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
19889
+ { x: 0, y: 1, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
19890
+ { x: 1, y: 1, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
19891
+ { x: 2, y: 1, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
19892
+ { x: 3, y: 1, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
19893
+ { x: 4, y: 1, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
19894
+ { x: 0, y: 2, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
19895
+ { x: 1, y: 2, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
19896
+ { x: 2, y: 2, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_09.png` },
19897
+ { x: 3, y: 2, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
19898
+ { x: 4, y: 2, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
19899
+ { x: 0, y: 3, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
19900
+ { x: 1, y: 3, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
19901
+ { x: 2, y: 3, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
19902
+ { x: 3, y: 3, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
19903
+ { x: 4, y: 3, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
19904
+ { x: 0, y: 4, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
19905
+ { x: 1, y: 4, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
19906
+ { x: 2, y: 4, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
19907
+ { x: 3, y: 4, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
19908
+ { x: 4, y: 4, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` }
19909
+ ];
19910
+ DEFAULT_CASTLE_UNITS = [
19911
+ { id: "u1", position: { x: 1, y: 1 }, unitType: "worker", name: "Worker", team: "player", health: 10, maxHealth: 10, sprite: `${CDN2}/sprite-sheets/coordinator-sprite-sheet-se.png` },
19912
+ { id: "u2", position: { x: 3, y: 3 }, unitType: "guardian", name: "Guardian", team: "player", health: 10, maxHealth: 10, sprite: `${CDN2}/sprite-sheets/forger-sprite-sheet-se.png` }
19913
+ ];
19914
+ DEFAULT_CASTLE_FEATURES = [
19915
+ { id: "f1", x: 2, y: 2, type: "chest", sprite: `${CDN2}/world-map/treasure_chest_closed.png` },
19916
+ { id: "f2", x: 3, y: 1, type: "crystal", sprite: `${CDN2}/world-map/resonance_crystal.png` }
19917
+ ];
19918
+ DEFAULT_CASTLE_MANIFEST = {
19919
+ baseUrl: CDN2,
19920
+ terrains: {
19921
+ wall: "/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png",
19922
+ floor: "/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png"
19923
+ },
19924
+ units: {
19925
+ worker: "/sprite-sheets/coordinator-sprite-sheet-se.png",
19926
+ guardian: "/sprite-sheets/forger-sprite-sheet-se.png"
19927
+ },
19928
+ features: {
19929
+ chest: "/world-map/treasure_chest_closed.png",
19930
+ crystal: "/world-map/resonance_crystal.png"
19931
+ }
19932
+ };
19790
19933
  CastleTemplate.displayName = "CastleTemplate";
19791
19934
  }
19792
19935
  });
@@ -20908,7 +21051,7 @@ var init_CodeRunnerPanel = __esm({
20908
21051
  }
20909
21052
  });
20910
21053
  function CombatLog({
20911
- events: events2,
21054
+ events: events2 = DEFAULT_COMBAT_EVENTS,
20912
21055
  maxVisible = 50,
20913
21056
  autoScroll = true,
20914
21057
  showTimestamps = false,
@@ -20959,7 +21102,7 @@ function CombatLog({
20959
21102
  }) }) })
20960
21103
  ] });
20961
21104
  }
20962
- var eventIcons, eventColors, eventBadgeVariants;
21105
+ var eventIcons, eventColors, eventBadgeVariants, DEFAULT_COMBAT_EVENTS;
20963
21106
  var init_CombatLog = __esm({
20964
21107
  "components/game/molecules/CombatLog.tsx"() {
20965
21108
  init_atoms2();
@@ -20991,6 +21134,13 @@ var init_CombatLog = __esm({
20991
21134
  death: "secondary",
20992
21135
  spawn: "secondary"
20993
21136
  };
21137
+ DEFAULT_COMBAT_EVENTS = [
21138
+ { id: "e1", type: "spawn", message: "Shadow Guard entered the field.", timestamp: 0, turn: 1 },
21139
+ { id: "e2", type: "move", message: "Hero moved to (3, 4).", timestamp: 1, actorName: "Hero", turn: 1 },
21140
+ { id: "e3", type: "attack", message: "Hero attacked Shadow Guard.", timestamp: 2, actorName: "Hero", targetName: "Shadow Guard", value: 18, turn: 2 },
21141
+ { id: "e4", type: "defend", message: "Shadow Guard blocked 5 damage.", timestamp: 3, actorName: "Shadow Guard", value: 5, turn: 2 },
21142
+ { id: "e5", type: "heal", message: "Hero used Health Potion.", timestamp: 4, actorName: "Hero", value: 25, turn: 3 }
21143
+ ];
20994
21144
  CombatLog.displayName = "CombatLog";
20995
21145
  }
20996
21146
  });
@@ -21398,9 +21548,9 @@ function isValidRarity(value) {
21398
21548
  return rarityValues.includes(value);
21399
21549
  }
21400
21550
  function CraftingRecipe({
21401
- inputs,
21402
- output,
21403
- canCraft = false,
21551
+ inputs = DEFAULT_INPUTS,
21552
+ output = DEFAULT_OUTPUT,
21553
+ canCraft = true,
21404
21554
  onCraft,
21405
21555
  craftEvent,
21406
21556
  className
@@ -21461,7 +21611,7 @@ function CraftingRecipe({
21461
21611
  }
21462
21612
  );
21463
21613
  }
21464
- var rarityValues;
21614
+ var rarityValues, DEFAULT_INPUTS, DEFAULT_OUTPUT;
21465
21615
  var init_CraftingRecipe = __esm({
21466
21616
  "components/game/molecules/CraftingRecipe.tsx"() {
21467
21617
  "use client";
@@ -21473,6 +21623,15 @@ var init_CraftingRecipe = __esm({
21473
21623
  init_Stack();
21474
21624
  init_Icon();
21475
21625
  rarityValues = ["common", "uncommon", "rare", "epic", "legendary"];
21626
+ DEFAULT_INPUTS = [
21627
+ { icon: "gem", label: "Iron Ore", required: 2, available: 3 },
21628
+ { icon: "flame", label: "Coal", required: 1, available: 1 }
21629
+ ];
21630
+ DEFAULT_OUTPUT = {
21631
+ icon: "sword",
21632
+ label: "Iron Sword",
21633
+ rarity: "uncommon"
21634
+ };
21476
21635
  CraftingRecipe.displayName = "CraftingRecipe";
21477
21636
  }
21478
21637
  });
@@ -26469,10 +26628,10 @@ var init_StatBadge = __esm({
26469
26628
  }
26470
26629
  });
26471
26630
  function InventoryGrid({
26472
- items,
26631
+ items = DEFAULT_GRID_ITEMS,
26473
26632
  columns = 4,
26474
- totalSlots,
26475
- selectedId,
26633
+ totalSlots = 12,
26634
+ selectedId = "",
26476
26635
  onSelect,
26477
26636
  selectEvent,
26478
26637
  size = "md",
@@ -26521,7 +26680,7 @@ function InventoryGrid({
26521
26680
  }
26522
26681
  );
26523
26682
  }
26524
- var columnMap;
26683
+ var columnMap, DEFAULT_GRID_ITEMS;
26525
26684
  var init_InventoryGrid = __esm({
26526
26685
  "components/game/molecules/InventoryGrid.tsx"() {
26527
26686
  "use client";
@@ -26538,12 +26697,18 @@ var init_InventoryGrid = __esm({
26538
26697
  7: "grid-cols-7",
26539
26698
  8: "grid-cols-8"
26540
26699
  };
26700
+ DEFAULT_GRID_ITEMS = [
26701
+ { id: "grid-1", icon: "sword", label: "Iron Sword", quantity: 1, rarity: "common" },
26702
+ { id: "grid-2", icon: "flask-conical", label: "Health Potion", quantity: 3, rarity: "uncommon" },
26703
+ { id: "grid-3", icon: "shield", label: "Wooden Shield", quantity: 1, rarity: "common" },
26704
+ { id: "grid-4", icon: "gem", label: "Ruby Gem", quantity: 2, rarity: "rare" }
26705
+ ];
26541
26706
  InventoryGrid.displayName = "InventoryGrid";
26542
26707
  }
26543
26708
  });
26544
26709
  function QuestTracker({
26545
- quests,
26546
- activeQuestId,
26710
+ quests = DEFAULT_QUESTS,
26711
+ activeQuestId = "q2",
26547
26712
  className
26548
26713
  }) {
26549
26714
  return /* @__PURE__ */ jsx(VStack, { gap: "sm", className, children: quests.map((quest) => {
@@ -26609,6 +26774,7 @@ function QuestTracker({
26609
26774
  );
26610
26775
  }) });
26611
26776
  }
26777
+ var DEFAULT_QUESTS;
26612
26778
  var init_QuestTracker = __esm({
26613
26779
  "components/game/molecules/QuestTracker.tsx"() {
26614
26780
  "use client";
@@ -26618,6 +26784,11 @@ var init_QuestTracker = __esm({
26618
26784
  init_Typography();
26619
26785
  init_Box();
26620
26786
  init_Stack();
26787
+ DEFAULT_QUESTS = [
26788
+ { id: "q1", title: "Reach the Ancient Ruins", progress: 1, maxProgress: 1, completed: true },
26789
+ { id: "q2", title: "Defeat the Shadow Guard", progress: 2, maxProgress: 5, active: true },
26790
+ { id: "q3", title: "Collect 3 Crystal Shards", progress: 0, maxProgress: 3, active: false }
26791
+ ];
26621
26792
  QuestTracker.displayName = "QuestTracker";
26622
26793
  }
26623
26794
  });
@@ -26630,7 +26801,7 @@ function formatTime2(seconds) {
26630
26801
  return `${seconds}s`;
26631
26802
  }
26632
26803
  function PowerupSlots({
26633
- active,
26804
+ active = DEFAULT_ACTIVE_POWERUPS,
26634
26805
  maxSlots = 4,
26635
26806
  className
26636
26807
  }) {
@@ -26675,6 +26846,7 @@ function PowerupSlots({
26675
26846
  ))
26676
26847
  ] });
26677
26848
  }
26849
+ var DEFAULT_ACTIVE_POWERUPS;
26678
26850
  var init_PowerupSlots = __esm({
26679
26851
  "components/game/molecules/PowerupSlots.tsx"() {
26680
26852
  "use client";
@@ -26683,6 +26855,10 @@ var init_PowerupSlots = __esm({
26683
26855
  init_Box();
26684
26856
  init_Stack();
26685
26857
  init_Typography();
26858
+ DEFAULT_ACTIVE_POWERUPS = [
26859
+ { id: "pw1", icon: "zap", label: "Speed Boost", remainingTime: 12 },
26860
+ { id: "pw2", icon: "shield", label: "Iron Shield", remainingTime: 30 }
26861
+ ];
26686
26862
  PowerupSlots.displayName = "PowerupSlots";
26687
26863
  }
26688
26864
  });
@@ -26694,7 +26870,7 @@ function GameCanvas2D({
26694
26870
  tickEvent,
26695
26871
  drawEvent,
26696
26872
  fps = 60,
26697
- backgroundImage = "https://almadar-kflow-assets.web.app/shared/scenes/dark_clouds_from_above.png",
26873
+ backgroundImage = "",
26698
26874
  assetBaseUrl = "https://almadar-kflow-assets.web.app/shared/",
26699
26875
  className
26700
26876
  }) {
@@ -26798,10 +26974,10 @@ var init_GameCanvas2D = __esm({
26798
26974
  }
26799
26975
  });
26800
26976
  function HealthPanel({
26801
- current,
26802
- max,
26803
- shield,
26804
- label,
26977
+ current = 75,
26978
+ max = 100,
26979
+ shield = 20,
26980
+ label = "Player HP",
26805
26981
  effects,
26806
26982
  showNumbers = true,
26807
26983
  size = "md",
@@ -26919,11 +27095,11 @@ var init_HealthPanel = __esm({
26919
27095
  }
26920
27096
  });
26921
27097
  function ScoreBoard({
26922
- score: rawScore,
26923
- highScore: rawHighScore,
26924
- combo: rawCombo,
26925
- multiplier: rawMultiplier,
26926
- level: rawLevel,
27098
+ score: rawScore = 4200,
27099
+ highScore: rawHighScore = 8750,
27100
+ combo: rawCombo = 3,
27101
+ multiplier: rawMultiplier = 2,
27102
+ level: rawLevel = 4,
26927
27103
  className
26928
27104
  }) {
26929
27105
  const score = rawScore ?? 0;
@@ -26996,7 +27172,7 @@ var init_ScoreBoard = __esm({
26996
27172
  }
26997
27173
  });
26998
27174
  function ResourceBar({
26999
- resources,
27175
+ resources = DEFAULT_RESOURCES,
27000
27176
  size = "md",
27001
27177
  className
27002
27178
  }) {
@@ -27022,21 +27198,27 @@ function ResourceBar({
27022
27198
  }
27023
27199
  );
27024
27200
  }
27201
+ var DEFAULT_RESOURCES;
27025
27202
  var init_ResourceBar = __esm({
27026
27203
  "components/game/molecules/ResourceBar.tsx"() {
27027
27204
  "use client";
27028
27205
  init_cn();
27029
27206
  init_StatBadge();
27030
27207
  init_Box();
27208
+ DEFAULT_RESOURCES = [
27209
+ { icon: "coins", label: "Gold", value: 320 },
27210
+ { icon: "zap", label: "Energy", value: 7, max: 10 },
27211
+ { icon: "gem", label: "Crystals", value: 15 }
27212
+ ];
27031
27213
  ResourceBar.displayName = "ResourceBar";
27032
27214
  }
27033
27215
  });
27034
27216
  function TurnPanel({
27035
- currentTurn,
27036
- maxTurns,
27037
- phase,
27038
- activeTeam,
27039
- actions,
27217
+ currentTurn = 3,
27218
+ maxTurns = 10,
27219
+ phase = "Attack",
27220
+ activeTeam = "Heroes",
27221
+ actions = DEFAULT_TURN_ACTIONS,
27040
27222
  className
27041
27223
  }) {
27042
27224
  const eventBus = useEventBus();
@@ -27081,6 +27263,7 @@ function TurnPanel({
27081
27263
  }
27082
27264
  );
27083
27265
  }
27266
+ var DEFAULT_TURN_ACTIONS;
27084
27267
  var init_TurnPanel = __esm({
27085
27268
  "components/game/molecules/TurnPanel.tsx"() {
27086
27269
  "use client";
@@ -27089,15 +27272,19 @@ var init_TurnPanel = __esm({
27089
27272
  init_Button();
27090
27273
  init_Box();
27091
27274
  init_useEventBus();
27275
+ DEFAULT_TURN_ACTIONS = [
27276
+ { label: "End Turn", icon: "skip-forward", event: "END_TURN" },
27277
+ { label: "Forfeit", icon: "flag", event: "FORFEIT", disabled: false }
27278
+ ];
27092
27279
  TurnPanel.displayName = "TurnPanel";
27093
27280
  }
27094
27281
  });
27095
27282
  function EnemyPlate({
27096
- name,
27097
- health,
27098
- maxHealth,
27099
- level,
27100
- effects,
27283
+ name = "Shadow Guard",
27284
+ health = 80,
27285
+ maxHealth = 100,
27286
+ level = 5,
27287
+ effects = DEFAULT_ENEMY_EFFECTS,
27101
27288
  className
27102
27289
  }) {
27103
27290
  return /* @__PURE__ */ jsxs(
@@ -27163,7 +27350,7 @@ function EnemyPlate({
27163
27350
  }
27164
27351
  );
27165
27352
  }
27166
- var effectVariantMap2;
27353
+ var effectVariantMap2, DEFAULT_ENEMY_EFFECTS;
27167
27354
  var init_EnemyPlate = __esm({
27168
27355
  "components/game/molecules/EnemyPlate.tsx"() {
27169
27356
  "use client";
@@ -27177,12 +27364,15 @@ var init_EnemyPlate = __esm({
27177
27364
  debuff: "danger",
27178
27365
  neutral: "neutral"
27179
27366
  };
27367
+ DEFAULT_ENEMY_EFFECTS = [
27368
+ { icon: "flame", label: "Burn", variant: "debuff" }
27369
+ ];
27180
27370
  EnemyPlate.displayName = "EnemyPlate";
27181
27371
  }
27182
27372
  });
27183
27373
  function UnitCommandBar({
27184
- commands,
27185
- selectedUnitId,
27374
+ commands = DEFAULT_COMMANDS,
27375
+ selectedUnitId = "unit-1",
27186
27376
  className
27187
27377
  }) {
27188
27378
  const eventBus = useEventBus();
@@ -27225,6 +27415,7 @@ function UnitCommandBar({
27225
27415
  }
27226
27416
  );
27227
27417
  }
27418
+ var DEFAULT_COMMANDS;
27228
27419
  var init_UnitCommandBar = __esm({
27229
27420
  "components/game/molecules/UnitCommandBar.tsx"() {
27230
27421
  "use client";
@@ -27233,6 +27424,12 @@ var init_UnitCommandBar = __esm({
27233
27424
  init_Box();
27234
27425
  init_Typography();
27235
27426
  init_useEventBus();
27427
+ DEFAULT_COMMANDS = [
27428
+ { label: "Move", icon: "move", event: "MOVE", hotkey: "M" },
27429
+ { label: "Attack", icon: "sword", event: "ATTACK", hotkey: "A" },
27430
+ { label: "Defend", icon: "shield", event: "DEFEND", hotkey: "D" },
27431
+ { label: "Wait", icon: "clock", event: "WAIT", hotkey: "W" }
27432
+ ];
27236
27433
  UnitCommandBar.displayName = "UnitCommandBar";
27237
27434
  }
27238
27435
  });
@@ -27266,7 +27463,7 @@ function GameHud({
27266
27463
  className,
27267
27464
  transparent = true
27268
27465
  }) {
27269
- const rawStats = propStats ?? items ?? (elements && Array.isArray(elements) ? convertElementsToStats(elements) : []);
27466
+ const rawStats = propStats ?? items ?? (elements && Array.isArray(elements) ? convertElementsToStats(elements) : DEFAULT_HUD_STATS);
27270
27467
  const stats = Array.isArray(rawStats) ? rawStats : [];
27271
27468
  const position = propPosition ?? "corners";
27272
27469
  if (position === "corners") {
@@ -27291,7 +27488,7 @@ function GameHud({
27291
27488
  }
27292
27489
  );
27293
27490
  }
27294
- var positionMap;
27491
+ var positionMap, DEFAULT_HUD_STATS;
27295
27492
  var init_GameHud = __esm({
27296
27493
  "components/game/molecules/GameHud.tsx"() {
27297
27494
  init_cn();
@@ -27301,11 +27498,17 @@ var init_GameHud = __esm({
27301
27498
  bottom: "bottom-0 left-0 right-0 flex justify-between items-end p-4",
27302
27499
  corners: "inset-0 pointer-events-none"
27303
27500
  };
27501
+ DEFAULT_HUD_STATS = [
27502
+ { label: "HP", value: 75, max: 100, format: "bar", variant: "danger" },
27503
+ { label: "MP", value: 40, max: 60, format: "bar", variant: "primary" },
27504
+ { label: "Score", value: 4200, format: "number", variant: "warning" },
27505
+ { label: "Level", value: 4, format: "number", variant: "default" }
27506
+ ];
27304
27507
  GameHud.displayName = "GameHud";
27305
27508
  }
27306
27509
  });
27307
27510
  function DialogueBox({
27308
- dialogue,
27511
+ dialogue = DEFAULT_DIALOGUE,
27309
27512
  typewriterSpeed = 30,
27310
27513
  position = "bottom",
27311
27514
  onComplete,
@@ -27488,17 +27691,27 @@ function DialogueBox({
27488
27691
  }
27489
27692
  );
27490
27693
  }
27694
+ var DEFAULT_DIALOGUE;
27491
27695
  var init_DialogueBox = __esm({
27492
27696
  "components/game/molecules/DialogueBox.tsx"() {
27493
27697
  "use client";
27494
27698
  init_cn();
27495
27699
  init_useEventBus();
27700
+ DEFAULT_DIALOGUE = {
27701
+ speaker: "Village Elder",
27702
+ text: "The ancient ruins hold great power \u2014 and great danger. Choose your path wisely, traveler.",
27703
+ choices: [
27704
+ { text: "I am ready. Lead the way.", action: "ACCEPT_QUEST" },
27705
+ { text: "Tell me more about the ruins.", action: "ASK_LORE" },
27706
+ { text: "Perhaps another time.", action: "DECLINE" }
27707
+ ]
27708
+ };
27496
27709
  }
27497
27710
  });
27498
27711
  function InventoryPanel({
27499
- items,
27500
- slots,
27501
- columns,
27712
+ items = DEFAULT_INVENTORY_ITEMS,
27713
+ slots = 12,
27714
+ columns = 4,
27502
27715
  selectedSlot,
27503
27716
  onSelectSlot,
27504
27717
  onUseItem,
@@ -27646,25 +27859,31 @@ function InventoryPanel({
27646
27859
  )
27647
27860
  ] });
27648
27861
  }
27862
+ var DEFAULT_INVENTORY_ITEMS;
27649
27863
  var init_InventoryPanel = __esm({
27650
27864
  "components/game/molecules/InventoryPanel.tsx"() {
27651
27865
  "use client";
27652
27866
  init_cn();
27653
27867
  init_useEventBus();
27868
+ DEFAULT_INVENTORY_ITEMS = [
27869
+ { id: "item-1", type: "weapon", name: "Iron Sword", quantity: 1, description: "A sturdy iron blade." },
27870
+ { id: "item-2", type: "potion", name: "Health Potion", quantity: 3, description: "Restores 50 HP." },
27871
+ { id: "item-3", type: "armor", name: "Leather Helm", quantity: 1, description: "Light head protection." }
27872
+ ];
27654
27873
  }
27655
27874
  });
27656
27875
  function GameMenu({
27657
- title,
27876
+ title = "Epic Quest",
27658
27877
  subtitle,
27659
27878
  options,
27660
27879
  menuItems,
27661
27880
  onSelect,
27662
27881
  eventBus: eventBusProp,
27663
27882
  background,
27664
- logo,
27883
+ logo = "",
27665
27884
  className
27666
27885
  }) {
27667
- const resolvedOptions = options ?? menuItems ?? [];
27886
+ const resolvedOptions = options ?? menuItems ?? DEFAULT_MENU_OPTIONS;
27668
27887
  let eventBusFromHook = null;
27669
27888
  try {
27670
27889
  eventBusFromHook = useEventBus();
@@ -27745,7 +27964,7 @@ function GameMenu({
27745
27964
  }
27746
27965
  );
27747
27966
  }
27748
- var variantMap3;
27967
+ var variantMap3, DEFAULT_MENU_OPTIONS;
27749
27968
  var init_GameMenu = __esm({
27750
27969
  "components/game/molecules/GameMenu.tsx"() {
27751
27970
  "use client";
@@ -27756,6 +27975,11 @@ var init_GameMenu = __esm({
27756
27975
  secondary: "bg-[var(--color-surface,#374151)] hover:bg-muted text-[var(--color-foreground)] border-muted",
27757
27976
  ghost: "bg-transparent hover:bg-foreground/10 text-[var(--color-foreground)] border-foreground/20"
27758
27977
  };
27978
+ DEFAULT_MENU_OPTIONS = [
27979
+ { label: "New Game", event: "NEW_GAME", variant: "primary" },
27980
+ { label: "Continue", event: "CONTINUE", variant: "secondary" },
27981
+ { label: "Settings", event: "SETTINGS", variant: "ghost" }
27982
+ ];
27759
27983
  GameMenu.displayName = "GameMenu";
27760
27984
  }
27761
27985
  });
@@ -27766,19 +27990,19 @@ function formatTime3(ms) {
27766
27990
  return `${minutes}:${remainingSeconds.toString().padStart(2, "0")}`;
27767
27991
  }
27768
27992
  function GameOverScreen({
27769
- title,
27993
+ title = "Game Over",
27770
27994
  message,
27771
- stats = [],
27995
+ stats = DEFAULT_GAME_OVER_STATS,
27772
27996
  actions,
27773
27997
  menuItems,
27774
27998
  onAction,
27775
27999
  eventBus: eventBusProp,
27776
- variant = "neutral",
27777
- highScore,
27778
- currentScore,
28000
+ variant = "defeat",
28001
+ highScore = 2e3,
28002
+ currentScore = 1240,
27779
28003
  className
27780
28004
  }) {
27781
- const resolvedActions = actions ?? menuItems ?? [];
28005
+ const resolvedActions = actions ?? menuItems ?? DEFAULT_GAME_OVER_ACTIONS;
27782
28006
  let eventBusFromHook = null;
27783
28007
  try {
27784
28008
  eventBusFromHook = useEventBus();
@@ -27865,7 +28089,7 @@ function GameOverScreen({
27865
28089
  }
27866
28090
  );
27867
28091
  }
27868
- var variantColors, buttonVariants;
28092
+ var variantColors, buttonVariants, DEFAULT_GAME_OVER_ACTIONS, DEFAULT_GAME_OVER_STATS;
27869
28093
  var init_GameOverScreen = __esm({
27870
28094
  "components/game/molecules/GameOverScreen.tsx"() {
27871
28095
  "use client";
@@ -27894,21 +28118,35 @@ var init_GameOverScreen = __esm({
27894
28118
  secondary: "bg-[var(--color-surface,#374151)] hover:bg-muted text-[var(--color-foreground)] border-muted",
27895
28119
  ghost: "bg-transparent hover:bg-foreground/10 text-[var(--color-foreground)] border-foreground/20"
27896
28120
  };
28121
+ DEFAULT_GAME_OVER_ACTIONS = [
28122
+ { label: "Play Again", event: "RESTART", variant: "primary" },
28123
+ { label: "Main Menu", event: "MAIN_MENU", variant: "secondary" }
28124
+ ];
28125
+ DEFAULT_GAME_OVER_STATS = [
28126
+ { label: "Score", value: 1240 },
28127
+ { label: "Enemies Defeated", value: 8 },
28128
+ { label: "Time", value: 93e3, format: "time" }
28129
+ ];
27897
28130
  GameOverScreen.displayName = "GameOverScreen";
27898
28131
  }
27899
28132
  });
27900
28133
  function PlatformerCanvas({
27901
28134
  player,
27902
- platforms = [],
28135
+ platforms = [
28136
+ { x: 0, y: 368, width: 800, height: 32, type: "ground" },
28137
+ { x: 150, y: 280, width: 160, height: 16, type: "platform" },
28138
+ { x: 420, y: 220, width: 160, height: 16, type: "platform" },
28139
+ { x: 620, y: 300, width: 140, height: 16, type: "platform" }
28140
+ ],
27903
28141
  worldWidth = 800,
27904
28142
  worldHeight = 400,
27905
28143
  canvasWidth = 800,
27906
28144
  canvasHeight = 400,
27907
28145
  followCamera = true,
27908
- bgColor,
28146
+ bgColor = "#5c94fc",
27909
28147
  playerSprite = "https://almadar-kflow-assets.web.app/shared/platformer/characters/platformChar_idle.png",
27910
28148
  tileSprites,
27911
- backgroundImage = "https://almadar-kflow-assets.web.app/shared/scenes/dark_clouds_from_above.png",
28149
+ backgroundImage = "",
27912
28150
  assetBaseUrl = "https://almadar-kflow-assets.web.app/shared/platformer/",
27913
28151
  leftEvent = "MOVE_LEFT",
27914
28152
  rightEvent = "MOVE_RIGHT",
@@ -27956,10 +28194,10 @@ function PlatformerCanvas({
27956
28194
  };
27957
28195
  }, []);
27958
28196
  const resolvedPlayer = player ?? {
27959
- x: 50,
27960
- y: 300,
27961
- width: 24,
27962
- height: 32,
28197
+ x: 80,
28198
+ y: 336,
28199
+ width: 32,
28200
+ height: 48,
27963
28201
  facingRight: true
27964
28202
  };
27965
28203
  const handleKeyDown = useCallback((e) => {
@@ -46657,12 +46895,12 @@ function WorldMapTemplate({
46657
46895
  entity,
46658
46896
  scale = 0.4,
46659
46897
  unitScale = 2.5,
46660
- diamondTopY,
46898
+ diamondTopY = 374,
46661
46899
  allowMoveAllHeroes = false,
46662
- tiles,
46663
- units,
46664
- features,
46665
- assetManifest,
46900
+ tiles = DEFAULT_WORLDMAP_TILES,
46901
+ units = DEFAULT_WORLDMAP_UNITS,
46902
+ features = DEFAULT_WORLDMAP_FEATURES,
46903
+ assetManifest = DEFAULT_WORLDMAP_MANIFEST,
46666
46904
  className
46667
46905
  }) {
46668
46906
  return /* @__PURE__ */ jsx(
@@ -46685,9 +46923,63 @@ function WorldMapTemplate({
46685
46923
  }
46686
46924
  );
46687
46925
  }
46926
+ var CDN3, DEFAULT_WORLDMAP_TILES, DEFAULT_WORLDMAP_UNITS, DEFAULT_WORLDMAP_FEATURES, DEFAULT_WORLDMAP_MANIFEST;
46688
46927
  var init_WorldMapTemplate = __esm({
46689
46928
  "components/game/templates/WorldMapTemplate.tsx"() {
46690
46929
  init_WorldMapBoard();
46930
+ CDN3 = "https://almadar-kflow-assets.web.app/shared";
46931
+ DEFAULT_WORLDMAP_TILES = [
46932
+ { x: 0, y: 0, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
46933
+ { x: 1, y: 0, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
46934
+ { x: 2, y: 0, terrain: "water", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_11.png` },
46935
+ { x: 3, y: 0, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
46936
+ { x: 4, y: 0, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
46937
+ { x: 0, y: 1, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
46938
+ { x: 1, y: 1, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
46939
+ { x: 2, y: 1, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
46940
+ { x: 3, y: 1, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
46941
+ { x: 4, y: 1, terrain: "water", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_11.png` },
46942
+ { x: 0, y: 2, terrain: "water", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_11.png` },
46943
+ { x: 1, y: 2, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
46944
+ { x: 2, y: 2, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_03.png` },
46945
+ { x: 3, y: 2, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
46946
+ { x: 4, y: 2, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
46947
+ { x: 0, y: 3, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
46948
+ { x: 1, y: 3, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
46949
+ { x: 2, y: 3, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
46950
+ { x: 3, y: 3, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_03.png` },
46951
+ { x: 4, y: 3, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
46952
+ { x: 0, y: 4, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
46953
+ { x: 1, y: 4, terrain: "water", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_11.png` },
46954
+ { x: 2, y: 4, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
46955
+ { x: 3, y: 4, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
46956
+ { x: 4, y: 4, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` }
46957
+ ];
46958
+ DEFAULT_WORLDMAP_UNITS = [
46959
+ { id: "h1", position: { x: 1, y: 1 }, unitType: "hero", name: "Amir", team: "player", health: 10, maxHealth: 10, sprite: `${CDN3}/sprite-sheets/amir-sprite-sheet-se.png` },
46960
+ { id: "h2", position: { x: 3, y: 3 }, unitType: "scout", name: "Archivist", team: "player", health: 10, maxHealth: 10, sprite: `${CDN3}/sprite-sheets/archivist-sprite-sheet-se.png` }
46961
+ ];
46962
+ DEFAULT_WORLDMAP_FEATURES = [
46963
+ { id: "f1", x: 2, y: 2, type: "capital", sprite: `${CDN3}/scenes/world/capital.png` },
46964
+ { id: "f2", x: 4, y: 2, type: "power_node", sprite: `${CDN3}/world-map/power_node.png` }
46965
+ ];
46966
+ DEFAULT_WORLDMAP_MANIFEST = {
46967
+ baseUrl: CDN3,
46968
+ terrains: {
46969
+ grass: "/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png",
46970
+ water: "/isometric-blocks/PNG/Platformer tiles/platformerTile_11.png",
46971
+ mountain: "/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png",
46972
+ road: "/isometric-blocks/PNG/Platformer tiles/platformerTile_03.png"
46973
+ },
46974
+ units: {
46975
+ hero: "/sprite-sheets/amir-sprite-sheet-se.png",
46976
+ scout: "/sprite-sheets/archivist-sprite-sheet-se.png"
46977
+ },
46978
+ features: {
46979
+ capital: "/scenes/world/capital.png",
46980
+ power_node: "/world-map/power_node.png"
46981
+ }
46982
+ };
46691
46983
  WorldMapTemplate.displayName = "WorldMapTemplate";
46692
46984
  }
46693
46985
  });