@almadar/ui 5.38.0 → 5.40.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.
@@ -7043,8 +7043,8 @@ var init_TraitFrame = __esm({
7043
7043
  }
7044
7044
  });
7045
7045
  function HealthBar({
7046
- current,
7047
- max,
7046
+ current = 3,
7047
+ max = 5,
7048
7048
  format = "hearts",
7049
7049
  size = "md",
7050
7050
  className,
@@ -7293,11 +7293,11 @@ var init_ControlButton = __esm({
7293
7293
  });
7294
7294
  function Sprite({
7295
7295
  spritesheet = "https://almadar-kflow-assets.web.app/shared/isometric-blocks/Spritesheet/allTiles_sheet.png",
7296
- frameWidth,
7297
- frameHeight,
7298
- frame,
7299
- x,
7300
- y,
7296
+ frameWidth = 64,
7297
+ frameHeight = 64,
7298
+ frame = 0,
7299
+ x = 0,
7300
+ y = 0,
7301
7301
  scale = 1,
7302
7302
  flipX = false,
7303
7303
  flipY = false,
@@ -7367,7 +7367,7 @@ var init_Sprite = __esm({
7367
7367
  }
7368
7368
  });
7369
7369
  function StateIndicator({
7370
- state,
7370
+ state = "idle",
7371
7371
  label,
7372
7372
  size = "md",
7373
7373
  animated = true,
@@ -7438,8 +7438,8 @@ function formatTime(seconds, format) {
7438
7438
  return `${mins.toString().padStart(2, "0")}:${padded}`;
7439
7439
  }
7440
7440
  function TimerDisplay({
7441
- seconds,
7442
- running,
7441
+ seconds = 90,
7442
+ running = true,
7443
7443
  format = "mm:ss",
7444
7444
  size = "md",
7445
7445
  className,
@@ -7476,8 +7476,8 @@ var init_TimerDisplay = __esm({
7476
7476
  });
7477
7477
  function ResourceCounter({
7478
7478
  icon,
7479
- label,
7480
- value,
7479
+ label = "Gold",
7480
+ value = 250,
7481
7481
  max,
7482
7482
  color,
7483
7483
  size = "md",
@@ -7529,10 +7529,10 @@ var init_ResourceCounter = __esm({
7529
7529
  }
7530
7530
  });
7531
7531
  function ItemSlot({
7532
- icon,
7533
- label,
7532
+ icon = "sword",
7533
+ label = "Iron Sword",
7534
7534
  quantity,
7535
- rarity = "common",
7535
+ rarity = "uncommon",
7536
7536
  empty,
7537
7537
  size = "md",
7538
7538
  selected,
@@ -7605,7 +7605,7 @@ var init_ItemSlot = __esm({
7605
7605
  }
7606
7606
  });
7607
7607
  function TurnIndicator({
7608
- currentTurn,
7608
+ currentTurn = 1,
7609
7609
  maxTurns,
7610
7610
  activeTeam,
7611
7611
  phase,
@@ -7668,7 +7668,7 @@ function getComboScale(combo) {
7668
7668
  return "";
7669
7669
  }
7670
7670
  function ComboCounter({
7671
- combo,
7671
+ combo = 5,
7672
7672
  multiplier,
7673
7673
  streak,
7674
7674
  size = "md",
@@ -7714,10 +7714,10 @@ var init_ComboCounter = __esm({
7714
7714
  }
7715
7715
  });
7716
7716
  function XPBar({
7717
- current,
7718
- max,
7719
- level,
7720
- showLabel = false,
7717
+ current = 350,
7718
+ max = 1e3,
7719
+ level = 5,
7720
+ showLabel = true,
7721
7721
  size = "md",
7722
7722
  animated = true,
7723
7723
  className
@@ -7800,7 +7800,7 @@ var init_XPBar = __esm({
7800
7800
  function WaypointMarker({
7801
7801
  label,
7802
7802
  icon,
7803
- active = false,
7803
+ active = true,
7804
7804
  completed = false,
7805
7805
  size = "md",
7806
7806
  className
@@ -7874,11 +7874,11 @@ function formatDuration(seconds) {
7874
7874
  return `${Math.round(seconds)}s`;
7875
7875
  }
7876
7876
  function StatusEffect({
7877
- icon,
7878
- label,
7879
- duration,
7877
+ icon = "shield",
7878
+ label = "Shield",
7879
+ duration = 30,
7880
7880
  stacks,
7881
- variant = "neutral",
7881
+ variant = "buff",
7882
7882
  size = "md",
7883
7883
  className
7884
7884
  }) {
@@ -7940,7 +7940,7 @@ var init_StatusEffect = __esm({
7940
7940
  }
7941
7941
  });
7942
7942
  function DamageNumber({
7943
- value,
7943
+ value = 42,
7944
7944
  type = "damage",
7945
7945
  size = "md",
7946
7946
  className
@@ -7989,8 +7989,8 @@ var init_DamageNumber = __esm({
7989
7989
  }
7990
7990
  });
7991
7991
  function DialogueBubble({
7992
- speaker,
7993
- text,
7992
+ speaker = "Hero",
7993
+ text = "The dungeon awaits. Choose your path wisely.",
7994
7994
  portrait = "https://almadar-kflow-assets.web.app/shared/characters/archetypes/04_hero.png",
7995
7995
  position = "bottom",
7996
7996
  className
@@ -8027,7 +8027,7 @@ var init_DialogueBubble = __esm({
8027
8027
  }
8028
8028
  });
8029
8029
  function ChoiceButton({
8030
- text,
8030
+ text = "Charge forward into the fray",
8031
8031
  index,
8032
8032
  disabled = false,
8033
8033
  selected = false,
@@ -8073,7 +8073,7 @@ var init_ChoiceButton = __esm({
8073
8073
  }
8074
8074
  });
8075
8075
  function ActionButton({
8076
- label,
8076
+ label = "Attack",
8077
8077
  icon,
8078
8078
  cooldown = 0,
8079
8079
  disabled = false,
@@ -8153,13 +8153,13 @@ var init_ActionButton = __esm({
8153
8153
  }
8154
8154
  });
8155
8155
  function MiniMap({
8156
- tiles = [],
8157
- units = [],
8156
+ tiles = DEFAULT_TILES,
8157
+ units = DEFAULT_UNITS,
8158
8158
  width = 150,
8159
8159
  height = 150,
8160
8160
  mapWidth = 100,
8161
8161
  mapHeight = 100,
8162
- viewportRect,
8162
+ viewportRect = DEFAULT_VIEWPORT,
8163
8163
  className
8164
8164
  }) {
8165
8165
  const canvasRef = React83.useRef(null);
@@ -8238,10 +8238,25 @@ function MiniMap({
8238
8238
  }
8239
8239
  );
8240
8240
  }
8241
+ var DEFAULT_TILES, DEFAULT_UNITS, DEFAULT_VIEWPORT;
8241
8242
  var init_MiniMap = __esm({
8242
8243
  "components/game/atoms/MiniMap.tsx"() {
8243
8244
  "use client";
8244
8245
  init_cn();
8246
+ DEFAULT_TILES = [
8247
+ { x: 10, y: 10, color: "#4ade80" },
8248
+ { x: 20, y: 15, color: "#4ade80" },
8249
+ { x: 30, y: 25, color: "#22c55e" },
8250
+ { x: 50, y: 40, color: "#4ade80" },
8251
+ { x: 60, y: 55, color: "#16a34a" },
8252
+ { x: 40, y: 60, color: "#4ade80" },
8253
+ { x: 70, y: 30, color: "#22c55e" },
8254
+ { x: 80, y: 70, color: "#4ade80" }
8255
+ ];
8256
+ DEFAULT_UNITS = [
8257
+ { x: 30, y: 30, color: "#60a5fa", isPlayer: true }
8258
+ ];
8259
+ DEFAULT_VIEWPORT = { x: 20, y: 20, w: 40, h: 40 };
8245
8260
  MiniMap.displayName = "MiniMap";
8246
8261
  }
8247
8262
  });
@@ -9720,7 +9735,7 @@ var init_Accordion = __esm({
9720
9735
  }
9721
9736
  });
9722
9737
  function ActionButtons({
9723
- buttons,
9738
+ buttons = DEFAULT_BUTTONS,
9724
9739
  onAction,
9725
9740
  actionEvent,
9726
9741
  layout = "horizontal",
@@ -9827,7 +9842,7 @@ function ActionButtons({
9827
9842
  button.id
9828
9843
  )) });
9829
9844
  }
9830
- var sizeMap14, layoutMap;
9845
+ var sizeMap14, layoutMap, DEFAULT_BUTTONS;
9831
9846
  var init_ActionButtons = __esm({
9832
9847
  "components/game/molecules/ActionButtons.tsx"() {
9833
9848
  "use client";
@@ -9844,6 +9859,11 @@ var init_ActionButtons = __esm({
9844
9859
  vertical: "flex flex-col gap-2",
9845
9860
  diamond: "grid grid-cols-3 gap-1"
9846
9861
  };
9862
+ DEFAULT_BUTTONS = [
9863
+ { id: "jump", label: "Jump", icon: "chevron-up", variant: "primary" },
9864
+ { id: "attack", label: "Attack", icon: "sword", variant: "secondary" },
9865
+ { id: "dodge", label: "Dodge", icon: "wind", variant: "ghost" }
9866
+ ];
9847
9867
  ActionButtons.displayName = "ActionButtons";
9848
9868
  }
9849
9869
  });
@@ -11024,7 +11044,7 @@ function IsometricCanvas({
11024
11044
  // Rendering options
11025
11045
  scale = 0.4,
11026
11046
  debug: debug2 = false,
11027
- backgroundImage = "https://almadar-kflow-assets.web.app/shared/scenes/dark_clouds_from_above.png",
11047
+ backgroundImage = "",
11028
11048
  showMinimap = true,
11029
11049
  enableCamera = true,
11030
11050
  unitScale = 1,
@@ -12162,10 +12182,10 @@ function BattleTemplate({
12162
12182
  entity,
12163
12183
  scale = 0.45,
12164
12184
  unitScale = 1,
12165
- tiles,
12166
- units,
12167
- features,
12168
- assetManifest,
12185
+ tiles = DEFAULT_BATTLE_TILES,
12186
+ units = DEFAULT_BATTLE_UNITS,
12187
+ features = DEFAULT_BATTLE_FEATURES,
12188
+ assetManifest = DEFAULT_BATTLE_MANIFEST,
12169
12189
  className
12170
12190
  }) {
12171
12191
  const resolved = entity && typeof entity === "object" && !Array.isArray(entity) ? entity : void 0;
@@ -12191,9 +12211,62 @@ function BattleTemplate({
12191
12211
  }
12192
12212
  );
12193
12213
  }
12214
+ var CDN, DEFAULT_BATTLE_TILES, DEFAULT_BATTLE_UNITS, DEFAULT_BATTLE_FEATURES, DEFAULT_BATTLE_MANIFEST;
12194
12215
  var init_BattleTemplate = __esm({
12195
12216
  "components/game/templates/BattleTemplate.tsx"() {
12196
12217
  init_BattleBoard();
12218
+ CDN = "https://almadar-kflow-assets.web.app/shared";
12219
+ DEFAULT_BATTLE_TILES = [
12220
+ { x: 0, y: 0, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
12221
+ { x: 1, y: 0, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
12222
+ { x: 2, y: 0, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
12223
+ { x: 3, y: 0, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
12224
+ { x: 4, y: 0, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
12225
+ { x: 0, y: 1, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
12226
+ { x: 1, y: 1, terrain: "dirt", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_01.png` },
12227
+ { x: 2, y: 1, terrain: "grass", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png` },
12228
+ { x: 3, y: 1, terrain: "grass", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png` },
12229
+ { x: 4, y: 1, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
12230
+ { x: 0, y: 2, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
12231
+ { x: 1, y: 2, terrain: "grass", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png` },
12232
+ { x: 2, y: 2, terrain: "dirt", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_01.png` },
12233
+ { x: 3, y: 2, terrain: "grass", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png` },
12234
+ { x: 4, y: 2, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
12235
+ { x: 0, y: 3, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
12236
+ { x: 1, y: 3, terrain: "grass", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png` },
12237
+ { x: 2, y: 3, terrain: "grass", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png` },
12238
+ { x: 3, y: 3, terrain: "dirt", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_01.png` },
12239
+ { x: 4, y: 3, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
12240
+ { x: 0, y: 4, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
12241
+ { x: 1, y: 4, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
12242
+ { x: 2, y: 4, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
12243
+ { x: 3, y: 4, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
12244
+ { x: 4, y: 4, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` }
12245
+ ];
12246
+ DEFAULT_BATTLE_UNITS = [
12247
+ { 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` },
12248
+ { 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` }
12249
+ ];
12250
+ DEFAULT_BATTLE_FEATURES = [
12251
+ { id: "f1", x: 2, y: 2, type: "gold_mine", sprite: `${CDN}/world-map/gold_mine.png` },
12252
+ { id: "f2", x: 3, y: 1, type: "portal", sprite: `${CDN}/world-map/portal_open.png` }
12253
+ ];
12254
+ DEFAULT_BATTLE_MANIFEST = {
12255
+ baseUrl: CDN,
12256
+ terrains: {
12257
+ stone: "/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png",
12258
+ dirt: "/isometric-blocks/PNG/Abstract tiles/abstractTile_01.png",
12259
+ grass: "/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png"
12260
+ },
12261
+ units: {
12262
+ worker: "/sprite-sheets/amir-sprite-sheet-se.png",
12263
+ guardian: "/sprite-sheets/destroyer-sprite-sheet-sw.png"
12264
+ },
12265
+ features: {
12266
+ gold_mine: "/world-map/gold_mine.png",
12267
+ portal: "/world-map/portal_open.png"
12268
+ }
12269
+ };
12197
12270
  BattleTemplate.displayName = "BattleTemplate";
12198
12271
  }
12199
12272
  });
@@ -20193,10 +20266,10 @@ var init_CastleBoard = __esm({
20193
20266
  function CastleTemplate({
20194
20267
  entity,
20195
20268
  scale = 0.45,
20196
- tiles,
20197
- units,
20198
- features,
20199
- assetManifest,
20269
+ tiles = DEFAULT_CASTLE_TILES,
20270
+ units = DEFAULT_CASTLE_UNITS,
20271
+ features = DEFAULT_CASTLE_FEATURES,
20272
+ assetManifest = DEFAULT_CASTLE_MANIFEST,
20200
20273
  className
20201
20274
  }) {
20202
20275
  const resolved = entity && typeof entity === "object" && !Array.isArray(entity) ? entity : void 0;
@@ -20217,9 +20290,61 @@ function CastleTemplate({
20217
20290
  }
20218
20291
  );
20219
20292
  }
20293
+ var CDN2, DEFAULT_CASTLE_TILES, DEFAULT_CASTLE_UNITS, DEFAULT_CASTLE_FEATURES, DEFAULT_CASTLE_MANIFEST;
20220
20294
  var init_CastleTemplate = __esm({
20221
20295
  "components/game/templates/CastleTemplate.tsx"() {
20222
20296
  init_CastleBoard();
20297
+ CDN2 = "https://almadar-kflow-assets.web.app/shared";
20298
+ DEFAULT_CASTLE_TILES = [
20299
+ { x: 0, y: 0, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
20300
+ { x: 1, y: 0, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
20301
+ { x: 2, y: 0, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
20302
+ { x: 3, y: 0, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
20303
+ { x: 4, y: 0, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
20304
+ { x: 0, y: 1, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
20305
+ { x: 1, y: 1, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
20306
+ { x: 2, y: 1, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
20307
+ { x: 3, y: 1, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
20308
+ { x: 4, y: 1, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
20309
+ { x: 0, y: 2, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
20310
+ { x: 1, y: 2, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
20311
+ { x: 2, y: 2, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_09.png` },
20312
+ { x: 3, y: 2, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
20313
+ { x: 4, y: 2, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
20314
+ { x: 0, y: 3, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
20315
+ { x: 1, y: 3, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
20316
+ { x: 2, y: 3, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
20317
+ { x: 3, y: 3, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
20318
+ { x: 4, y: 3, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
20319
+ { x: 0, y: 4, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
20320
+ { x: 1, y: 4, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
20321
+ { x: 2, y: 4, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
20322
+ { x: 3, y: 4, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
20323
+ { x: 4, y: 4, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` }
20324
+ ];
20325
+ DEFAULT_CASTLE_UNITS = [
20326
+ { 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` },
20327
+ { 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` }
20328
+ ];
20329
+ DEFAULT_CASTLE_FEATURES = [
20330
+ { id: "f1", x: 2, y: 2, type: "chest", sprite: `${CDN2}/world-map/treasure_chest_closed.png` },
20331
+ { id: "f2", x: 3, y: 1, type: "crystal", sprite: `${CDN2}/world-map/resonance_crystal.png` }
20332
+ ];
20333
+ DEFAULT_CASTLE_MANIFEST = {
20334
+ baseUrl: CDN2,
20335
+ terrains: {
20336
+ wall: "/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png",
20337
+ floor: "/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png"
20338
+ },
20339
+ units: {
20340
+ worker: "/sprite-sheets/coordinator-sprite-sheet-se.png",
20341
+ guardian: "/sprite-sheets/forger-sprite-sheet-se.png"
20342
+ },
20343
+ features: {
20344
+ chest: "/world-map/treasure_chest_closed.png",
20345
+ crystal: "/world-map/resonance_crystal.png"
20346
+ }
20347
+ };
20223
20348
  CastleTemplate.displayName = "CastleTemplate";
20224
20349
  }
20225
20350
  });
@@ -21341,7 +21466,7 @@ var init_CodeRunnerPanel = __esm({
21341
21466
  }
21342
21467
  });
21343
21468
  function CombatLog({
21344
- events: events2,
21469
+ events: events2 = DEFAULT_COMBAT_EVENTS,
21345
21470
  maxVisible = 50,
21346
21471
  autoScroll = true,
21347
21472
  showTimestamps = false,
@@ -21392,7 +21517,7 @@ function CombatLog({
21392
21517
  }) }) })
21393
21518
  ] });
21394
21519
  }
21395
- var eventIcons, eventColors, eventBadgeVariants;
21520
+ var eventIcons, eventColors, eventBadgeVariants, DEFAULT_COMBAT_EVENTS;
21396
21521
  var init_CombatLog = __esm({
21397
21522
  "components/game/molecules/CombatLog.tsx"() {
21398
21523
  init_atoms2();
@@ -21424,6 +21549,13 @@ var init_CombatLog = __esm({
21424
21549
  death: "secondary",
21425
21550
  spawn: "secondary"
21426
21551
  };
21552
+ DEFAULT_COMBAT_EVENTS = [
21553
+ { id: "e1", type: "spawn", message: "Shadow Guard entered the field.", timestamp: 0, turn: 1 },
21554
+ { id: "e2", type: "move", message: "Hero moved to (3, 4).", timestamp: 1, actorName: "Hero", turn: 1 },
21555
+ { id: "e3", type: "attack", message: "Hero attacked Shadow Guard.", timestamp: 2, actorName: "Hero", targetName: "Shadow Guard", value: 18, turn: 2 },
21556
+ { id: "e4", type: "defend", message: "Shadow Guard blocked 5 damage.", timestamp: 3, actorName: "Shadow Guard", value: 5, turn: 2 },
21557
+ { id: "e5", type: "heal", message: "Hero used Health Potion.", timestamp: 4, actorName: "Hero", value: 25, turn: 3 }
21558
+ ];
21427
21559
  CombatLog.displayName = "CombatLog";
21428
21560
  }
21429
21561
  });
@@ -21831,9 +21963,9 @@ function isValidRarity(value) {
21831
21963
  return rarityValues.includes(value);
21832
21964
  }
21833
21965
  function CraftingRecipe({
21834
- inputs,
21835
- output,
21836
- canCraft = false,
21966
+ inputs = DEFAULT_INPUTS,
21967
+ output = DEFAULT_OUTPUT,
21968
+ canCraft = true,
21837
21969
  onCraft,
21838
21970
  craftEvent,
21839
21971
  className
@@ -21894,7 +22026,7 @@ function CraftingRecipe({
21894
22026
  }
21895
22027
  );
21896
22028
  }
21897
- var rarityValues;
22029
+ var rarityValues, DEFAULT_INPUTS, DEFAULT_OUTPUT;
21898
22030
  var init_CraftingRecipe = __esm({
21899
22031
  "components/game/molecules/CraftingRecipe.tsx"() {
21900
22032
  "use client";
@@ -21906,6 +22038,15 @@ var init_CraftingRecipe = __esm({
21906
22038
  init_Stack();
21907
22039
  init_Icon();
21908
22040
  rarityValues = ["common", "uncommon", "rare", "epic", "legendary"];
22041
+ DEFAULT_INPUTS = [
22042
+ { icon: "gem", label: "Iron Ore", required: 2, available: 3 },
22043
+ { icon: "flame", label: "Coal", required: 1, available: 1 }
22044
+ ];
22045
+ DEFAULT_OUTPUT = {
22046
+ icon: "sword",
22047
+ label: "Iron Sword",
22048
+ rarity: "uncommon"
22049
+ };
21909
22050
  CraftingRecipe.displayName = "CraftingRecipe";
21910
22051
  }
21911
22052
  });
@@ -26902,10 +27043,10 @@ var init_StatBadge = __esm({
26902
27043
  }
26903
27044
  });
26904
27045
  function InventoryGrid({
26905
- items,
27046
+ items = DEFAULT_GRID_ITEMS,
26906
27047
  columns = 4,
26907
- totalSlots,
26908
- selectedId,
27048
+ totalSlots = 12,
27049
+ selectedId = "",
26909
27050
  onSelect,
26910
27051
  selectEvent,
26911
27052
  size = "md",
@@ -26954,7 +27095,7 @@ function InventoryGrid({
26954
27095
  }
26955
27096
  );
26956
27097
  }
26957
- var columnMap;
27098
+ var columnMap, DEFAULT_GRID_ITEMS;
26958
27099
  var init_InventoryGrid = __esm({
26959
27100
  "components/game/molecules/InventoryGrid.tsx"() {
26960
27101
  "use client";
@@ -26971,12 +27112,18 @@ var init_InventoryGrid = __esm({
26971
27112
  7: "grid-cols-7",
26972
27113
  8: "grid-cols-8"
26973
27114
  };
27115
+ DEFAULT_GRID_ITEMS = [
27116
+ { id: "grid-1", icon: "sword", label: "Iron Sword", quantity: 1, rarity: "common" },
27117
+ { id: "grid-2", icon: "flask-conical", label: "Health Potion", quantity: 3, rarity: "uncommon" },
27118
+ { id: "grid-3", icon: "shield", label: "Wooden Shield", quantity: 1, rarity: "common" },
27119
+ { id: "grid-4", icon: "gem", label: "Ruby Gem", quantity: 2, rarity: "rare" }
27120
+ ];
26974
27121
  InventoryGrid.displayName = "InventoryGrid";
26975
27122
  }
26976
27123
  });
26977
27124
  function QuestTracker({
26978
- quests,
26979
- activeQuestId,
27125
+ quests = DEFAULT_QUESTS,
27126
+ activeQuestId = "q2",
26980
27127
  className
26981
27128
  }) {
26982
27129
  return /* @__PURE__ */ jsx(VStack, { gap: "sm", className, children: quests.map((quest) => {
@@ -27042,6 +27189,7 @@ function QuestTracker({
27042
27189
  );
27043
27190
  }) });
27044
27191
  }
27192
+ var DEFAULT_QUESTS;
27045
27193
  var init_QuestTracker = __esm({
27046
27194
  "components/game/molecules/QuestTracker.tsx"() {
27047
27195
  "use client";
@@ -27051,6 +27199,11 @@ var init_QuestTracker = __esm({
27051
27199
  init_Typography();
27052
27200
  init_Box();
27053
27201
  init_Stack();
27202
+ DEFAULT_QUESTS = [
27203
+ { id: "q1", title: "Reach the Ancient Ruins", progress: 1, maxProgress: 1, completed: true },
27204
+ { id: "q2", title: "Defeat the Shadow Guard", progress: 2, maxProgress: 5, active: true },
27205
+ { id: "q3", title: "Collect 3 Crystal Shards", progress: 0, maxProgress: 3, active: false }
27206
+ ];
27054
27207
  QuestTracker.displayName = "QuestTracker";
27055
27208
  }
27056
27209
  });
@@ -27063,7 +27216,7 @@ function formatTime2(seconds) {
27063
27216
  return `${seconds}s`;
27064
27217
  }
27065
27218
  function PowerupSlots({
27066
- active,
27219
+ active = DEFAULT_ACTIVE_POWERUPS,
27067
27220
  maxSlots = 4,
27068
27221
  className
27069
27222
  }) {
@@ -27108,6 +27261,7 @@ function PowerupSlots({
27108
27261
  ))
27109
27262
  ] });
27110
27263
  }
27264
+ var DEFAULT_ACTIVE_POWERUPS;
27111
27265
  var init_PowerupSlots = __esm({
27112
27266
  "components/game/molecules/PowerupSlots.tsx"() {
27113
27267
  "use client";
@@ -27116,6 +27270,10 @@ var init_PowerupSlots = __esm({
27116
27270
  init_Box();
27117
27271
  init_Stack();
27118
27272
  init_Typography();
27273
+ DEFAULT_ACTIVE_POWERUPS = [
27274
+ { id: "pw1", icon: "zap", label: "Speed Boost", remainingTime: 12 },
27275
+ { id: "pw2", icon: "shield", label: "Iron Shield", remainingTime: 30 }
27276
+ ];
27119
27277
  PowerupSlots.displayName = "PowerupSlots";
27120
27278
  }
27121
27279
  });
@@ -27127,7 +27285,7 @@ function GameCanvas2D({
27127
27285
  tickEvent,
27128
27286
  drawEvent,
27129
27287
  fps = 60,
27130
- backgroundImage = "https://almadar-kflow-assets.web.app/shared/scenes/dark_clouds_from_above.png",
27288
+ backgroundImage = "",
27131
27289
  assetBaseUrl = "https://almadar-kflow-assets.web.app/shared/",
27132
27290
  className
27133
27291
  }) {
@@ -27231,10 +27389,10 @@ var init_GameCanvas2D = __esm({
27231
27389
  }
27232
27390
  });
27233
27391
  function HealthPanel({
27234
- current,
27235
- max,
27236
- shield,
27237
- label,
27392
+ current = 75,
27393
+ max = 100,
27394
+ shield = 20,
27395
+ label = "Player HP",
27238
27396
  effects,
27239
27397
  showNumbers = true,
27240
27398
  size = "md",
@@ -27352,11 +27510,11 @@ var init_HealthPanel = __esm({
27352
27510
  }
27353
27511
  });
27354
27512
  function ScoreBoard({
27355
- score: rawScore,
27356
- highScore: rawHighScore,
27357
- combo: rawCombo,
27358
- multiplier: rawMultiplier,
27359
- level: rawLevel,
27513
+ score: rawScore = 4200,
27514
+ highScore: rawHighScore = 8750,
27515
+ combo: rawCombo = 3,
27516
+ multiplier: rawMultiplier = 2,
27517
+ level: rawLevel = 4,
27360
27518
  className
27361
27519
  }) {
27362
27520
  const score = rawScore ?? 0;
@@ -27429,7 +27587,7 @@ var init_ScoreBoard = __esm({
27429
27587
  }
27430
27588
  });
27431
27589
  function ResourceBar({
27432
- resources,
27590
+ resources = DEFAULT_RESOURCES,
27433
27591
  size = "md",
27434
27592
  className
27435
27593
  }) {
@@ -27455,21 +27613,27 @@ function ResourceBar({
27455
27613
  }
27456
27614
  );
27457
27615
  }
27616
+ var DEFAULT_RESOURCES;
27458
27617
  var init_ResourceBar = __esm({
27459
27618
  "components/game/molecules/ResourceBar.tsx"() {
27460
27619
  "use client";
27461
27620
  init_cn();
27462
27621
  init_StatBadge();
27463
27622
  init_Box();
27623
+ DEFAULT_RESOURCES = [
27624
+ { icon: "coins", label: "Gold", value: 320 },
27625
+ { icon: "zap", label: "Energy", value: 7, max: 10 },
27626
+ { icon: "gem", label: "Crystals", value: 15 }
27627
+ ];
27464
27628
  ResourceBar.displayName = "ResourceBar";
27465
27629
  }
27466
27630
  });
27467
27631
  function TurnPanel({
27468
- currentTurn,
27469
- maxTurns,
27470
- phase,
27471
- activeTeam,
27472
- actions,
27632
+ currentTurn = 3,
27633
+ maxTurns = 10,
27634
+ phase = "Attack",
27635
+ activeTeam = "Heroes",
27636
+ actions = DEFAULT_TURN_ACTIONS,
27473
27637
  className
27474
27638
  }) {
27475
27639
  const eventBus = useEventBus();
@@ -27514,6 +27678,7 @@ function TurnPanel({
27514
27678
  }
27515
27679
  );
27516
27680
  }
27681
+ var DEFAULT_TURN_ACTIONS;
27517
27682
  var init_TurnPanel = __esm({
27518
27683
  "components/game/molecules/TurnPanel.tsx"() {
27519
27684
  "use client";
@@ -27522,15 +27687,19 @@ var init_TurnPanel = __esm({
27522
27687
  init_Button();
27523
27688
  init_Box();
27524
27689
  init_useEventBus();
27690
+ DEFAULT_TURN_ACTIONS = [
27691
+ { label: "End Turn", icon: "skip-forward", event: "END_TURN" },
27692
+ { label: "Forfeit", icon: "flag", event: "FORFEIT", disabled: false }
27693
+ ];
27525
27694
  TurnPanel.displayName = "TurnPanel";
27526
27695
  }
27527
27696
  });
27528
27697
  function EnemyPlate({
27529
- name,
27530
- health,
27531
- maxHealth,
27532
- level,
27533
- effects,
27698
+ name = "Shadow Guard",
27699
+ health = 80,
27700
+ maxHealth = 100,
27701
+ level = 5,
27702
+ effects = DEFAULT_ENEMY_EFFECTS,
27534
27703
  className
27535
27704
  }) {
27536
27705
  return /* @__PURE__ */ jsxs(
@@ -27596,7 +27765,7 @@ function EnemyPlate({
27596
27765
  }
27597
27766
  );
27598
27767
  }
27599
- var effectVariantMap2;
27768
+ var effectVariantMap2, DEFAULT_ENEMY_EFFECTS;
27600
27769
  var init_EnemyPlate = __esm({
27601
27770
  "components/game/molecules/EnemyPlate.tsx"() {
27602
27771
  "use client";
@@ -27610,12 +27779,15 @@ var init_EnemyPlate = __esm({
27610
27779
  debuff: "danger",
27611
27780
  neutral: "neutral"
27612
27781
  };
27782
+ DEFAULT_ENEMY_EFFECTS = [
27783
+ { icon: "flame", label: "Burn", variant: "debuff" }
27784
+ ];
27613
27785
  EnemyPlate.displayName = "EnemyPlate";
27614
27786
  }
27615
27787
  });
27616
27788
  function UnitCommandBar({
27617
- commands,
27618
- selectedUnitId,
27789
+ commands = DEFAULT_COMMANDS,
27790
+ selectedUnitId = "unit-1",
27619
27791
  className
27620
27792
  }) {
27621
27793
  const eventBus = useEventBus();
@@ -27658,6 +27830,7 @@ function UnitCommandBar({
27658
27830
  }
27659
27831
  );
27660
27832
  }
27833
+ var DEFAULT_COMMANDS;
27661
27834
  var init_UnitCommandBar = __esm({
27662
27835
  "components/game/molecules/UnitCommandBar.tsx"() {
27663
27836
  "use client";
@@ -27666,6 +27839,12 @@ var init_UnitCommandBar = __esm({
27666
27839
  init_Box();
27667
27840
  init_Typography();
27668
27841
  init_useEventBus();
27842
+ DEFAULT_COMMANDS = [
27843
+ { label: "Move", icon: "move", event: "MOVE", hotkey: "M" },
27844
+ { label: "Attack", icon: "sword", event: "ATTACK", hotkey: "A" },
27845
+ { label: "Defend", icon: "shield", event: "DEFEND", hotkey: "D" },
27846
+ { label: "Wait", icon: "clock", event: "WAIT", hotkey: "W" }
27847
+ ];
27669
27848
  UnitCommandBar.displayName = "UnitCommandBar";
27670
27849
  }
27671
27850
  });
@@ -27699,7 +27878,7 @@ function GameHud({
27699
27878
  className,
27700
27879
  transparent = true
27701
27880
  }) {
27702
- const rawStats = propStats ?? items ?? (elements && Array.isArray(elements) ? convertElementsToStats(elements) : []);
27881
+ const rawStats = propStats ?? items ?? (elements && Array.isArray(elements) ? convertElementsToStats(elements) : DEFAULT_HUD_STATS);
27703
27882
  const stats = Array.isArray(rawStats) ? rawStats : [];
27704
27883
  const position = propPosition ?? "corners";
27705
27884
  if (position === "corners") {
@@ -27724,7 +27903,7 @@ function GameHud({
27724
27903
  }
27725
27904
  );
27726
27905
  }
27727
- var positionMap;
27906
+ var positionMap, DEFAULT_HUD_STATS;
27728
27907
  var init_GameHud = __esm({
27729
27908
  "components/game/molecules/GameHud.tsx"() {
27730
27909
  init_cn();
@@ -27734,11 +27913,17 @@ var init_GameHud = __esm({
27734
27913
  bottom: "bottom-0 left-0 right-0 flex justify-between items-end p-4",
27735
27914
  corners: "inset-0 pointer-events-none"
27736
27915
  };
27916
+ DEFAULT_HUD_STATS = [
27917
+ { label: "HP", value: 75, max: 100, format: "bar", variant: "danger" },
27918
+ { label: "MP", value: 40, max: 60, format: "bar", variant: "primary" },
27919
+ { label: "Score", value: 4200, format: "number", variant: "warning" },
27920
+ { label: "Level", value: 4, format: "number", variant: "default" }
27921
+ ];
27737
27922
  GameHud.displayName = "GameHud";
27738
27923
  }
27739
27924
  });
27740
27925
  function DialogueBox({
27741
- dialogue,
27926
+ dialogue = DEFAULT_DIALOGUE,
27742
27927
  typewriterSpeed = 30,
27743
27928
  position = "bottom",
27744
27929
  onComplete,
@@ -27921,17 +28106,27 @@ function DialogueBox({
27921
28106
  }
27922
28107
  );
27923
28108
  }
28109
+ var DEFAULT_DIALOGUE;
27924
28110
  var init_DialogueBox = __esm({
27925
28111
  "components/game/molecules/DialogueBox.tsx"() {
27926
28112
  "use client";
27927
28113
  init_cn();
27928
28114
  init_useEventBus();
28115
+ DEFAULT_DIALOGUE = {
28116
+ speaker: "Village Elder",
28117
+ text: "The ancient ruins hold great power \u2014 and great danger. Choose your path wisely, traveler.",
28118
+ choices: [
28119
+ { text: "I am ready. Lead the way.", action: "ACCEPT_QUEST" },
28120
+ { text: "Tell me more about the ruins.", action: "ASK_LORE" },
28121
+ { text: "Perhaps another time.", action: "DECLINE" }
28122
+ ]
28123
+ };
27929
28124
  }
27930
28125
  });
27931
28126
  function InventoryPanel({
27932
- items,
27933
- slots,
27934
- columns,
28127
+ items = DEFAULT_INVENTORY_ITEMS,
28128
+ slots = 12,
28129
+ columns = 4,
27935
28130
  selectedSlot,
27936
28131
  onSelectSlot,
27937
28132
  onUseItem,
@@ -28079,25 +28274,31 @@ function InventoryPanel({
28079
28274
  )
28080
28275
  ] });
28081
28276
  }
28277
+ var DEFAULT_INVENTORY_ITEMS;
28082
28278
  var init_InventoryPanel = __esm({
28083
28279
  "components/game/molecules/InventoryPanel.tsx"() {
28084
28280
  "use client";
28085
28281
  init_cn();
28086
28282
  init_useEventBus();
28283
+ DEFAULT_INVENTORY_ITEMS = [
28284
+ { id: "item-1", type: "weapon", name: "Iron Sword", quantity: 1, description: "A sturdy iron blade." },
28285
+ { id: "item-2", type: "potion", name: "Health Potion", quantity: 3, description: "Restores 50 HP." },
28286
+ { id: "item-3", type: "armor", name: "Leather Helm", quantity: 1, description: "Light head protection." }
28287
+ ];
28087
28288
  }
28088
28289
  });
28089
28290
  function GameMenu({
28090
- title,
28291
+ title = "Epic Quest",
28091
28292
  subtitle,
28092
28293
  options,
28093
28294
  menuItems,
28094
28295
  onSelect,
28095
28296
  eventBus: eventBusProp,
28096
28297
  background,
28097
- logo,
28298
+ logo = "",
28098
28299
  className
28099
28300
  }) {
28100
- const resolvedOptions = options ?? menuItems ?? [];
28301
+ const resolvedOptions = options ?? menuItems ?? DEFAULT_MENU_OPTIONS;
28101
28302
  let eventBusFromHook = null;
28102
28303
  try {
28103
28304
  eventBusFromHook = useEventBus();
@@ -28178,7 +28379,7 @@ function GameMenu({
28178
28379
  }
28179
28380
  );
28180
28381
  }
28181
- var variantMap3;
28382
+ var variantMap3, DEFAULT_MENU_OPTIONS;
28182
28383
  var init_GameMenu = __esm({
28183
28384
  "components/game/molecules/GameMenu.tsx"() {
28184
28385
  "use client";
@@ -28189,6 +28390,11 @@ var init_GameMenu = __esm({
28189
28390
  secondary: "bg-[var(--color-surface,#374151)] hover:bg-muted text-[var(--color-foreground)] border-muted",
28190
28391
  ghost: "bg-transparent hover:bg-foreground/10 text-[var(--color-foreground)] border-foreground/20"
28191
28392
  };
28393
+ DEFAULT_MENU_OPTIONS = [
28394
+ { label: "New Game", event: "NEW_GAME", variant: "primary" },
28395
+ { label: "Continue", event: "CONTINUE", variant: "secondary" },
28396
+ { label: "Settings", event: "SETTINGS", variant: "ghost" }
28397
+ ];
28192
28398
  GameMenu.displayName = "GameMenu";
28193
28399
  }
28194
28400
  });
@@ -28199,19 +28405,19 @@ function formatTime3(ms) {
28199
28405
  return `${minutes}:${remainingSeconds.toString().padStart(2, "0")}`;
28200
28406
  }
28201
28407
  function GameOverScreen({
28202
- title,
28408
+ title = "Game Over",
28203
28409
  message,
28204
- stats = [],
28410
+ stats = DEFAULT_GAME_OVER_STATS,
28205
28411
  actions,
28206
28412
  menuItems,
28207
28413
  onAction,
28208
28414
  eventBus: eventBusProp,
28209
- variant = "neutral",
28210
- highScore,
28211
- currentScore,
28415
+ variant = "defeat",
28416
+ highScore = 2e3,
28417
+ currentScore = 1240,
28212
28418
  className
28213
28419
  }) {
28214
- const resolvedActions = actions ?? menuItems ?? [];
28420
+ const resolvedActions = actions ?? menuItems ?? DEFAULT_GAME_OVER_ACTIONS;
28215
28421
  let eventBusFromHook = null;
28216
28422
  try {
28217
28423
  eventBusFromHook = useEventBus();
@@ -28298,7 +28504,7 @@ function GameOverScreen({
28298
28504
  }
28299
28505
  );
28300
28506
  }
28301
- var variantColors, buttonVariants;
28507
+ var variantColors, buttonVariants, DEFAULT_GAME_OVER_ACTIONS, DEFAULT_GAME_OVER_STATS;
28302
28508
  var init_GameOverScreen = __esm({
28303
28509
  "components/game/molecules/GameOverScreen.tsx"() {
28304
28510
  "use client";
@@ -28327,21 +28533,35 @@ var init_GameOverScreen = __esm({
28327
28533
  secondary: "bg-[var(--color-surface,#374151)] hover:bg-muted text-[var(--color-foreground)] border-muted",
28328
28534
  ghost: "bg-transparent hover:bg-foreground/10 text-[var(--color-foreground)] border-foreground/20"
28329
28535
  };
28536
+ DEFAULT_GAME_OVER_ACTIONS = [
28537
+ { label: "Play Again", event: "RESTART", variant: "primary" },
28538
+ { label: "Main Menu", event: "MAIN_MENU", variant: "secondary" }
28539
+ ];
28540
+ DEFAULT_GAME_OVER_STATS = [
28541
+ { label: "Score", value: 1240 },
28542
+ { label: "Enemies Defeated", value: 8 },
28543
+ { label: "Time", value: 93e3, format: "time" }
28544
+ ];
28330
28545
  GameOverScreen.displayName = "GameOverScreen";
28331
28546
  }
28332
28547
  });
28333
28548
  function PlatformerCanvas({
28334
28549
  player,
28335
- platforms = [],
28550
+ platforms = [
28551
+ { x: 0, y: 368, width: 800, height: 32, type: "ground" },
28552
+ { x: 150, y: 280, width: 160, height: 16, type: "platform" },
28553
+ { x: 420, y: 220, width: 160, height: 16, type: "platform" },
28554
+ { x: 620, y: 300, width: 140, height: 16, type: "platform" }
28555
+ ],
28336
28556
  worldWidth = 800,
28337
28557
  worldHeight = 400,
28338
28558
  canvasWidth = 800,
28339
28559
  canvasHeight = 400,
28340
28560
  followCamera = true,
28341
- bgColor,
28561
+ bgColor = "#5c94fc",
28342
28562
  playerSprite = "https://almadar-kflow-assets.web.app/shared/platformer/characters/platformChar_idle.png",
28343
28563
  tileSprites,
28344
- backgroundImage = "https://almadar-kflow-assets.web.app/shared/scenes/dark_clouds_from_above.png",
28564
+ backgroundImage = "",
28345
28565
  assetBaseUrl = "https://almadar-kflow-assets.web.app/shared/platformer/",
28346
28566
  leftEvent = "MOVE_LEFT",
28347
28567
  rightEvent = "MOVE_RIGHT",
@@ -28389,10 +28609,10 @@ function PlatformerCanvas({
28389
28609
  };
28390
28610
  }, []);
28391
28611
  const resolvedPlayer = player ?? {
28392
- x: 50,
28393
- y: 300,
28394
- width: 24,
28395
- height: 32,
28612
+ x: 80,
28613
+ y: 336,
28614
+ width: 32,
28615
+ height: 48,
28396
28616
  facingRight: true
28397
28617
  };
28398
28618
  const handleKeyDown = useCallback((e) => {
@@ -47071,12 +47291,12 @@ function WorldMapTemplate({
47071
47291
  entity,
47072
47292
  scale = 0.4,
47073
47293
  unitScale = 2.5,
47074
- diamondTopY,
47294
+ diamondTopY = 374,
47075
47295
  allowMoveAllHeroes = false,
47076
- tiles,
47077
- units,
47078
- features,
47079
- assetManifest,
47296
+ tiles = DEFAULT_WORLDMAP_TILES,
47297
+ units = DEFAULT_WORLDMAP_UNITS,
47298
+ features = DEFAULT_WORLDMAP_FEATURES,
47299
+ assetManifest = DEFAULT_WORLDMAP_MANIFEST,
47080
47300
  className
47081
47301
  }) {
47082
47302
  return /* @__PURE__ */ jsx(
@@ -47099,9 +47319,63 @@ function WorldMapTemplate({
47099
47319
  }
47100
47320
  );
47101
47321
  }
47322
+ var CDN3, DEFAULT_WORLDMAP_TILES, DEFAULT_WORLDMAP_UNITS, DEFAULT_WORLDMAP_FEATURES, DEFAULT_WORLDMAP_MANIFEST;
47102
47323
  var init_WorldMapTemplate = __esm({
47103
47324
  "components/game/templates/WorldMapTemplate.tsx"() {
47104
47325
  init_WorldMapBoard();
47326
+ CDN3 = "https://almadar-kflow-assets.web.app/shared";
47327
+ DEFAULT_WORLDMAP_TILES = [
47328
+ { x: 0, y: 0, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
47329
+ { x: 1, y: 0, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
47330
+ { x: 2, y: 0, terrain: "water", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_11.png` },
47331
+ { x: 3, y: 0, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
47332
+ { x: 4, y: 0, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
47333
+ { x: 0, y: 1, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
47334
+ { x: 1, y: 1, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
47335
+ { x: 2, y: 1, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
47336
+ { x: 3, y: 1, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
47337
+ { x: 4, y: 1, terrain: "water", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_11.png` },
47338
+ { x: 0, y: 2, terrain: "water", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_11.png` },
47339
+ { x: 1, y: 2, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
47340
+ { x: 2, y: 2, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_03.png` },
47341
+ { x: 3, y: 2, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
47342
+ { x: 4, y: 2, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
47343
+ { x: 0, y: 3, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
47344
+ { x: 1, y: 3, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
47345
+ { x: 2, y: 3, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
47346
+ { x: 3, y: 3, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_03.png` },
47347
+ { x: 4, y: 3, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
47348
+ { x: 0, y: 4, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
47349
+ { x: 1, y: 4, terrain: "water", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_11.png` },
47350
+ { x: 2, y: 4, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
47351
+ { x: 3, y: 4, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
47352
+ { x: 4, y: 4, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` }
47353
+ ];
47354
+ DEFAULT_WORLDMAP_UNITS = [
47355
+ { 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` },
47356
+ { 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` }
47357
+ ];
47358
+ DEFAULT_WORLDMAP_FEATURES = [
47359
+ { id: "f1", x: 2, y: 2, type: "capital", sprite: `${CDN3}/scenes/world/capital.png` },
47360
+ { id: "f2", x: 4, y: 2, type: "power_node", sprite: `${CDN3}/world-map/power_node.png` }
47361
+ ];
47362
+ DEFAULT_WORLDMAP_MANIFEST = {
47363
+ baseUrl: CDN3,
47364
+ terrains: {
47365
+ grass: "/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png",
47366
+ water: "/isometric-blocks/PNG/Platformer tiles/platformerTile_11.png",
47367
+ mountain: "/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png",
47368
+ road: "/isometric-blocks/PNG/Platformer tiles/platformerTile_03.png"
47369
+ },
47370
+ units: {
47371
+ hero: "/sprite-sheets/amir-sprite-sheet-se.png",
47372
+ scout: "/sprite-sheets/archivist-sprite-sheet-se.png"
47373
+ },
47374
+ features: {
47375
+ capital: "/scenes/world/capital.png",
47376
+ power_node: "/world-map/power_node.png"
47377
+ }
47378
+ };
47105
47379
  WorldMapTemplate.displayName = "WorldMapTemplate";
47106
47380
  }
47107
47381
  });