@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.
- package/dist/avl/index.cjs +385 -111
- package/dist/avl/index.js +385 -111
- package/dist/components/game/molecules/DialogueBox.d.ts +0 -21
- package/dist/components/game/molecules/InventoryPanel.d.ts +0 -16
- package/dist/components/index.cjs +385 -111
- package/dist/components/index.js +385 -111
- package/dist/providers/index.cjs +385 -111
- package/dist/providers/index.js +385 -111
- package/dist/runtime/index.cjs +385 -111
- package/dist/runtime/index.js +385 -111
- package/package.json +1 -1
package/dist/runtime/index.js
CHANGED
|
@@ -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,10 @@ var init_ResourceCounter = __esm({
|
|
|
7440
7440
|
}
|
|
7441
7441
|
});
|
|
7442
7442
|
function ItemSlot({
|
|
7443
|
-
icon,
|
|
7444
|
-
label,
|
|
7443
|
+
icon = "sword",
|
|
7444
|
+
label = "Iron Sword",
|
|
7445
7445
|
quantity,
|
|
7446
|
-
rarity = "
|
|
7446
|
+
rarity = "uncommon",
|
|
7447
7447
|
empty,
|
|
7448
7448
|
size = "md",
|
|
7449
7449
|
selected,
|
|
@@ -7516,7 +7516,7 @@ var init_ItemSlot = __esm({
|
|
|
7516
7516
|
}
|
|
7517
7517
|
});
|
|
7518
7518
|
function TurnIndicator({
|
|
7519
|
-
currentTurn,
|
|
7519
|
+
currentTurn = 1,
|
|
7520
7520
|
maxTurns,
|
|
7521
7521
|
activeTeam,
|
|
7522
7522
|
phase,
|
|
@@ -7579,7 +7579,7 @@ function getComboScale(combo) {
|
|
|
7579
7579
|
return "";
|
|
7580
7580
|
}
|
|
7581
7581
|
function ComboCounter({
|
|
7582
|
-
combo,
|
|
7582
|
+
combo = 5,
|
|
7583
7583
|
multiplier,
|
|
7584
7584
|
streak,
|
|
7585
7585
|
size = "md",
|
|
@@ -7625,10 +7625,10 @@ var init_ComboCounter = __esm({
|
|
|
7625
7625
|
}
|
|
7626
7626
|
});
|
|
7627
7627
|
function XPBar({
|
|
7628
|
-
current,
|
|
7629
|
-
max,
|
|
7630
|
-
level,
|
|
7631
|
-
showLabel =
|
|
7628
|
+
current = 350,
|
|
7629
|
+
max = 1e3,
|
|
7630
|
+
level = 5,
|
|
7631
|
+
showLabel = true,
|
|
7632
7632
|
size = "md",
|
|
7633
7633
|
animated = true,
|
|
7634
7634
|
className
|
|
@@ -7711,7 +7711,7 @@ var init_XPBar = __esm({
|
|
|
7711
7711
|
function WaypointMarker({
|
|
7712
7712
|
label,
|
|
7713
7713
|
icon,
|
|
7714
|
-
active =
|
|
7714
|
+
active = true,
|
|
7715
7715
|
completed = false,
|
|
7716
7716
|
size = "md",
|
|
7717
7717
|
className
|
|
@@ -7785,11 +7785,11 @@ function formatDuration(seconds) {
|
|
|
7785
7785
|
return `${Math.round(seconds)}s`;
|
|
7786
7786
|
}
|
|
7787
7787
|
function StatusEffect({
|
|
7788
|
-
icon,
|
|
7789
|
-
label,
|
|
7790
|
-
duration,
|
|
7788
|
+
icon = "shield",
|
|
7789
|
+
label = "Shield",
|
|
7790
|
+
duration = 30,
|
|
7791
7791
|
stacks,
|
|
7792
|
-
variant = "
|
|
7792
|
+
variant = "buff",
|
|
7793
7793
|
size = "md",
|
|
7794
7794
|
className
|
|
7795
7795
|
}) {
|
|
@@ -7851,7 +7851,7 @@ var init_StatusEffect = __esm({
|
|
|
7851
7851
|
}
|
|
7852
7852
|
});
|
|
7853
7853
|
function DamageNumber({
|
|
7854
|
-
value,
|
|
7854
|
+
value = 42,
|
|
7855
7855
|
type = "damage",
|
|
7856
7856
|
size = "md",
|
|
7857
7857
|
className
|
|
@@ -7900,8 +7900,8 @@ var init_DamageNumber = __esm({
|
|
|
7900
7900
|
}
|
|
7901
7901
|
});
|
|
7902
7902
|
function DialogueBubble({
|
|
7903
|
-
speaker,
|
|
7904
|
-
text,
|
|
7903
|
+
speaker = "Hero",
|
|
7904
|
+
text = "The dungeon awaits. Choose your path wisely.",
|
|
7905
7905
|
portrait = "https://almadar-kflow-assets.web.app/shared/characters/archetypes/04_hero.png",
|
|
7906
7906
|
position = "bottom",
|
|
7907
7907
|
className
|
|
@@ -7938,7 +7938,7 @@ var init_DialogueBubble = __esm({
|
|
|
7938
7938
|
}
|
|
7939
7939
|
});
|
|
7940
7940
|
function ChoiceButton({
|
|
7941
|
-
text,
|
|
7941
|
+
text = "Charge forward into the fray",
|
|
7942
7942
|
index,
|
|
7943
7943
|
disabled = false,
|
|
7944
7944
|
selected = false,
|
|
@@ -7984,7 +7984,7 @@ var init_ChoiceButton = __esm({
|
|
|
7984
7984
|
}
|
|
7985
7985
|
});
|
|
7986
7986
|
function ActionButton({
|
|
7987
|
-
label,
|
|
7987
|
+
label = "Attack",
|
|
7988
7988
|
icon,
|
|
7989
7989
|
cooldown = 0,
|
|
7990
7990
|
disabled = false,
|
|
@@ -8064,13 +8064,13 @@ var init_ActionButton = __esm({
|
|
|
8064
8064
|
}
|
|
8065
8065
|
});
|
|
8066
8066
|
function MiniMap({
|
|
8067
|
-
tiles =
|
|
8068
|
-
units =
|
|
8067
|
+
tiles = DEFAULT_TILES,
|
|
8068
|
+
units = DEFAULT_UNITS,
|
|
8069
8069
|
width = 150,
|
|
8070
8070
|
height = 150,
|
|
8071
8071
|
mapWidth = 100,
|
|
8072
8072
|
mapHeight = 100,
|
|
8073
|
-
viewportRect,
|
|
8073
|
+
viewportRect = DEFAULT_VIEWPORT,
|
|
8074
8074
|
className
|
|
8075
8075
|
}) {
|
|
8076
8076
|
const canvasRef = React82.useRef(null);
|
|
@@ -8149,10 +8149,25 @@ function MiniMap({
|
|
|
8149
8149
|
}
|
|
8150
8150
|
);
|
|
8151
8151
|
}
|
|
8152
|
+
var DEFAULT_TILES, DEFAULT_UNITS, DEFAULT_VIEWPORT;
|
|
8152
8153
|
var init_MiniMap = __esm({
|
|
8153
8154
|
"components/game/atoms/MiniMap.tsx"() {
|
|
8154
8155
|
"use client";
|
|
8155
8156
|
init_cn();
|
|
8157
|
+
DEFAULT_TILES = [
|
|
8158
|
+
{ x: 10, y: 10, color: "#4ade80" },
|
|
8159
|
+
{ x: 20, y: 15, color: "#4ade80" },
|
|
8160
|
+
{ x: 30, y: 25, color: "#22c55e" },
|
|
8161
|
+
{ x: 50, y: 40, color: "#4ade80" },
|
|
8162
|
+
{ x: 60, y: 55, color: "#16a34a" },
|
|
8163
|
+
{ x: 40, y: 60, color: "#4ade80" },
|
|
8164
|
+
{ x: 70, y: 30, color: "#22c55e" },
|
|
8165
|
+
{ x: 80, y: 70, color: "#4ade80" }
|
|
8166
|
+
];
|
|
8167
|
+
DEFAULT_UNITS = [
|
|
8168
|
+
{ x: 30, y: 30, color: "#60a5fa", isPlayer: true }
|
|
8169
|
+
];
|
|
8170
|
+
DEFAULT_VIEWPORT = { x: 20, y: 20, w: 40, h: 40 };
|
|
8156
8171
|
MiniMap.displayName = "MiniMap";
|
|
8157
8172
|
}
|
|
8158
8173
|
});
|
|
@@ -9275,7 +9290,7 @@ var init_Accordion = __esm({
|
|
|
9275
9290
|
}
|
|
9276
9291
|
});
|
|
9277
9292
|
function ActionButtons({
|
|
9278
|
-
buttons,
|
|
9293
|
+
buttons = DEFAULT_BUTTONS,
|
|
9279
9294
|
onAction,
|
|
9280
9295
|
actionEvent,
|
|
9281
9296
|
layout = "horizontal",
|
|
@@ -9382,7 +9397,7 @@ function ActionButtons({
|
|
|
9382
9397
|
button.id
|
|
9383
9398
|
)) });
|
|
9384
9399
|
}
|
|
9385
|
-
var sizeMap14, layoutMap;
|
|
9400
|
+
var sizeMap14, layoutMap, DEFAULT_BUTTONS;
|
|
9386
9401
|
var init_ActionButtons = __esm({
|
|
9387
9402
|
"components/game/molecules/ActionButtons.tsx"() {
|
|
9388
9403
|
"use client";
|
|
@@ -9399,6 +9414,11 @@ var init_ActionButtons = __esm({
|
|
|
9399
9414
|
vertical: "flex flex-col gap-2",
|
|
9400
9415
|
diamond: "grid grid-cols-3 gap-1"
|
|
9401
9416
|
};
|
|
9417
|
+
DEFAULT_BUTTONS = [
|
|
9418
|
+
{ id: "jump", label: "Jump", icon: "chevron-up", variant: "primary" },
|
|
9419
|
+
{ id: "attack", label: "Attack", icon: "sword", variant: "secondary" },
|
|
9420
|
+
{ id: "dodge", label: "Dodge", icon: "wind", variant: "ghost" }
|
|
9421
|
+
];
|
|
9402
9422
|
ActionButtons.displayName = "ActionButtons";
|
|
9403
9423
|
}
|
|
9404
9424
|
});
|
|
@@ -10591,7 +10611,7 @@ function IsometricCanvas({
|
|
|
10591
10611
|
// Rendering options
|
|
10592
10612
|
scale = 0.4,
|
|
10593
10613
|
debug: debug2 = false,
|
|
10594
|
-
backgroundImage = "
|
|
10614
|
+
backgroundImage = "",
|
|
10595
10615
|
showMinimap = true,
|
|
10596
10616
|
enableCamera = true,
|
|
10597
10617
|
unitScale = 1,
|
|
@@ -11729,10 +11749,10 @@ function BattleTemplate({
|
|
|
11729
11749
|
entity,
|
|
11730
11750
|
scale = 0.45,
|
|
11731
11751
|
unitScale = 1,
|
|
11732
|
-
tiles,
|
|
11733
|
-
units,
|
|
11734
|
-
features,
|
|
11735
|
-
assetManifest,
|
|
11752
|
+
tiles = DEFAULT_BATTLE_TILES,
|
|
11753
|
+
units = DEFAULT_BATTLE_UNITS,
|
|
11754
|
+
features = DEFAULT_BATTLE_FEATURES,
|
|
11755
|
+
assetManifest = DEFAULT_BATTLE_MANIFEST,
|
|
11736
11756
|
className
|
|
11737
11757
|
}) {
|
|
11738
11758
|
const resolved = entity && typeof entity === "object" && !Array.isArray(entity) ? entity : void 0;
|
|
@@ -11758,9 +11778,62 @@ function BattleTemplate({
|
|
|
11758
11778
|
}
|
|
11759
11779
|
);
|
|
11760
11780
|
}
|
|
11781
|
+
var CDN, DEFAULT_BATTLE_TILES, DEFAULT_BATTLE_UNITS, DEFAULT_BATTLE_FEATURES, DEFAULT_BATTLE_MANIFEST;
|
|
11761
11782
|
var init_BattleTemplate = __esm({
|
|
11762
11783
|
"components/game/templates/BattleTemplate.tsx"() {
|
|
11763
11784
|
init_BattleBoard();
|
|
11785
|
+
CDN = "https://almadar-kflow-assets.web.app/shared";
|
|
11786
|
+
DEFAULT_BATTLE_TILES = [
|
|
11787
|
+
{ x: 0, y: 0, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
|
|
11788
|
+
{ x: 1, y: 0, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
|
|
11789
|
+
{ x: 2, y: 0, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
|
|
11790
|
+
{ x: 3, y: 0, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
|
|
11791
|
+
{ x: 4, y: 0, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
|
|
11792
|
+
{ x: 0, y: 1, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
|
|
11793
|
+
{ x: 1, y: 1, terrain: "dirt", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_01.png` },
|
|
11794
|
+
{ x: 2, y: 1, terrain: "grass", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png` },
|
|
11795
|
+
{ x: 3, y: 1, terrain: "grass", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png` },
|
|
11796
|
+
{ x: 4, y: 1, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
|
|
11797
|
+
{ x: 0, y: 2, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
|
|
11798
|
+
{ x: 1, y: 2, terrain: "grass", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png` },
|
|
11799
|
+
{ x: 2, y: 2, terrain: "dirt", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_01.png` },
|
|
11800
|
+
{ x: 3, y: 2, terrain: "grass", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png` },
|
|
11801
|
+
{ x: 4, y: 2, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
|
|
11802
|
+
{ x: 0, y: 3, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
|
|
11803
|
+
{ x: 1, y: 3, terrain: "grass", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png` },
|
|
11804
|
+
{ x: 2, y: 3, terrain: "grass", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png` },
|
|
11805
|
+
{ x: 3, y: 3, terrain: "dirt", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_01.png` },
|
|
11806
|
+
{ x: 4, y: 3, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
|
|
11807
|
+
{ x: 0, y: 4, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
|
|
11808
|
+
{ x: 1, y: 4, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
|
|
11809
|
+
{ x: 2, y: 4, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
|
|
11810
|
+
{ x: 3, y: 4, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
|
|
11811
|
+
{ x: 4, y: 4, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` }
|
|
11812
|
+
];
|
|
11813
|
+
DEFAULT_BATTLE_UNITS = [
|
|
11814
|
+
{ 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` },
|
|
11815
|
+
{ 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` }
|
|
11816
|
+
];
|
|
11817
|
+
DEFAULT_BATTLE_FEATURES = [
|
|
11818
|
+
{ id: "f1", x: 2, y: 2, type: "gold_mine", sprite: `${CDN}/world-map/gold_mine.png` },
|
|
11819
|
+
{ id: "f2", x: 3, y: 1, type: "portal", sprite: `${CDN}/world-map/portal_open.png` }
|
|
11820
|
+
];
|
|
11821
|
+
DEFAULT_BATTLE_MANIFEST = {
|
|
11822
|
+
baseUrl: CDN,
|
|
11823
|
+
terrains: {
|
|
11824
|
+
stone: "/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png",
|
|
11825
|
+
dirt: "/isometric-blocks/PNG/Abstract tiles/abstractTile_01.png",
|
|
11826
|
+
grass: "/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png"
|
|
11827
|
+
},
|
|
11828
|
+
units: {
|
|
11829
|
+
worker: "/sprite-sheets/amir-sprite-sheet-se.png",
|
|
11830
|
+
guardian: "/sprite-sheets/destroyer-sprite-sheet-sw.png"
|
|
11831
|
+
},
|
|
11832
|
+
features: {
|
|
11833
|
+
gold_mine: "/world-map/gold_mine.png",
|
|
11834
|
+
portal: "/world-map/portal_open.png"
|
|
11835
|
+
}
|
|
11836
|
+
};
|
|
11764
11837
|
BattleTemplate.displayName = "BattleTemplate";
|
|
11765
11838
|
}
|
|
11766
11839
|
});
|
|
@@ -19760,10 +19833,10 @@ var init_CastleBoard = __esm({
|
|
|
19760
19833
|
function CastleTemplate({
|
|
19761
19834
|
entity,
|
|
19762
19835
|
scale = 0.45,
|
|
19763
|
-
tiles,
|
|
19764
|
-
units,
|
|
19765
|
-
features,
|
|
19766
|
-
assetManifest,
|
|
19836
|
+
tiles = DEFAULT_CASTLE_TILES,
|
|
19837
|
+
units = DEFAULT_CASTLE_UNITS,
|
|
19838
|
+
features = DEFAULT_CASTLE_FEATURES,
|
|
19839
|
+
assetManifest = DEFAULT_CASTLE_MANIFEST,
|
|
19767
19840
|
className
|
|
19768
19841
|
}) {
|
|
19769
19842
|
const resolved = entity && typeof entity === "object" && !Array.isArray(entity) ? entity : void 0;
|
|
@@ -19784,9 +19857,61 @@ function CastleTemplate({
|
|
|
19784
19857
|
}
|
|
19785
19858
|
);
|
|
19786
19859
|
}
|
|
19860
|
+
var CDN2, DEFAULT_CASTLE_TILES, DEFAULT_CASTLE_UNITS, DEFAULT_CASTLE_FEATURES, DEFAULT_CASTLE_MANIFEST;
|
|
19787
19861
|
var init_CastleTemplate = __esm({
|
|
19788
19862
|
"components/game/templates/CastleTemplate.tsx"() {
|
|
19789
19863
|
init_CastleBoard();
|
|
19864
|
+
CDN2 = "https://almadar-kflow-assets.web.app/shared";
|
|
19865
|
+
DEFAULT_CASTLE_TILES = [
|
|
19866
|
+
{ x: 0, y: 0, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
|
|
19867
|
+
{ x: 1, y: 0, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
|
|
19868
|
+
{ x: 2, y: 0, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
|
|
19869
|
+
{ x: 3, y: 0, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
|
|
19870
|
+
{ x: 4, y: 0, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
|
|
19871
|
+
{ x: 0, y: 1, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
|
|
19872
|
+
{ x: 1, y: 1, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
|
|
19873
|
+
{ x: 2, y: 1, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
|
|
19874
|
+
{ x: 3, y: 1, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
|
|
19875
|
+
{ x: 4, y: 1, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
|
|
19876
|
+
{ x: 0, y: 2, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
|
|
19877
|
+
{ x: 1, y: 2, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
|
|
19878
|
+
{ x: 2, y: 2, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_09.png` },
|
|
19879
|
+
{ x: 3, y: 2, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
|
|
19880
|
+
{ x: 4, y: 2, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
|
|
19881
|
+
{ x: 0, y: 3, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
|
|
19882
|
+
{ x: 1, y: 3, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
|
|
19883
|
+
{ x: 2, y: 3, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
|
|
19884
|
+
{ x: 3, y: 3, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
|
|
19885
|
+
{ x: 4, y: 3, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
|
|
19886
|
+
{ x: 0, y: 4, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
|
|
19887
|
+
{ x: 1, y: 4, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
|
|
19888
|
+
{ x: 2, y: 4, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
|
|
19889
|
+
{ x: 3, y: 4, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
|
|
19890
|
+
{ x: 4, y: 4, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` }
|
|
19891
|
+
];
|
|
19892
|
+
DEFAULT_CASTLE_UNITS = [
|
|
19893
|
+
{ 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` },
|
|
19894
|
+
{ 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` }
|
|
19895
|
+
];
|
|
19896
|
+
DEFAULT_CASTLE_FEATURES = [
|
|
19897
|
+
{ id: "f1", x: 2, y: 2, type: "chest", sprite: `${CDN2}/world-map/treasure_chest_closed.png` },
|
|
19898
|
+
{ id: "f2", x: 3, y: 1, type: "crystal", sprite: `${CDN2}/world-map/resonance_crystal.png` }
|
|
19899
|
+
];
|
|
19900
|
+
DEFAULT_CASTLE_MANIFEST = {
|
|
19901
|
+
baseUrl: CDN2,
|
|
19902
|
+
terrains: {
|
|
19903
|
+
wall: "/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png",
|
|
19904
|
+
floor: "/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png"
|
|
19905
|
+
},
|
|
19906
|
+
units: {
|
|
19907
|
+
worker: "/sprite-sheets/coordinator-sprite-sheet-se.png",
|
|
19908
|
+
guardian: "/sprite-sheets/forger-sprite-sheet-se.png"
|
|
19909
|
+
},
|
|
19910
|
+
features: {
|
|
19911
|
+
chest: "/world-map/treasure_chest_closed.png",
|
|
19912
|
+
crystal: "/world-map/resonance_crystal.png"
|
|
19913
|
+
}
|
|
19914
|
+
};
|
|
19790
19915
|
CastleTemplate.displayName = "CastleTemplate";
|
|
19791
19916
|
}
|
|
19792
19917
|
});
|
|
@@ -20908,7 +21033,7 @@ var init_CodeRunnerPanel = __esm({
|
|
|
20908
21033
|
}
|
|
20909
21034
|
});
|
|
20910
21035
|
function CombatLog({
|
|
20911
|
-
events: events2,
|
|
21036
|
+
events: events2 = DEFAULT_COMBAT_EVENTS,
|
|
20912
21037
|
maxVisible = 50,
|
|
20913
21038
|
autoScroll = true,
|
|
20914
21039
|
showTimestamps = false,
|
|
@@ -20959,7 +21084,7 @@ function CombatLog({
|
|
|
20959
21084
|
}) }) })
|
|
20960
21085
|
] });
|
|
20961
21086
|
}
|
|
20962
|
-
var eventIcons, eventColors, eventBadgeVariants;
|
|
21087
|
+
var eventIcons, eventColors, eventBadgeVariants, DEFAULT_COMBAT_EVENTS;
|
|
20963
21088
|
var init_CombatLog = __esm({
|
|
20964
21089
|
"components/game/molecules/CombatLog.tsx"() {
|
|
20965
21090
|
init_atoms2();
|
|
@@ -20991,6 +21116,13 @@ var init_CombatLog = __esm({
|
|
|
20991
21116
|
death: "secondary",
|
|
20992
21117
|
spawn: "secondary"
|
|
20993
21118
|
};
|
|
21119
|
+
DEFAULT_COMBAT_EVENTS = [
|
|
21120
|
+
{ id: "e1", type: "spawn", message: "Shadow Guard entered the field.", timestamp: 0, turn: 1 },
|
|
21121
|
+
{ id: "e2", type: "move", message: "Hero moved to (3, 4).", timestamp: 1, actorName: "Hero", turn: 1 },
|
|
21122
|
+
{ id: "e3", type: "attack", message: "Hero attacked Shadow Guard.", timestamp: 2, actorName: "Hero", targetName: "Shadow Guard", value: 18, turn: 2 },
|
|
21123
|
+
{ id: "e4", type: "defend", message: "Shadow Guard blocked 5 damage.", timestamp: 3, actorName: "Shadow Guard", value: 5, turn: 2 },
|
|
21124
|
+
{ id: "e5", type: "heal", message: "Hero used Health Potion.", timestamp: 4, actorName: "Hero", value: 25, turn: 3 }
|
|
21125
|
+
];
|
|
20994
21126
|
CombatLog.displayName = "CombatLog";
|
|
20995
21127
|
}
|
|
20996
21128
|
});
|
|
@@ -21398,9 +21530,9 @@ function isValidRarity(value) {
|
|
|
21398
21530
|
return rarityValues.includes(value);
|
|
21399
21531
|
}
|
|
21400
21532
|
function CraftingRecipe({
|
|
21401
|
-
inputs,
|
|
21402
|
-
output,
|
|
21403
|
-
canCraft =
|
|
21533
|
+
inputs = DEFAULT_INPUTS,
|
|
21534
|
+
output = DEFAULT_OUTPUT,
|
|
21535
|
+
canCraft = true,
|
|
21404
21536
|
onCraft,
|
|
21405
21537
|
craftEvent,
|
|
21406
21538
|
className
|
|
@@ -21461,7 +21593,7 @@ function CraftingRecipe({
|
|
|
21461
21593
|
}
|
|
21462
21594
|
);
|
|
21463
21595
|
}
|
|
21464
|
-
var rarityValues;
|
|
21596
|
+
var rarityValues, DEFAULT_INPUTS, DEFAULT_OUTPUT;
|
|
21465
21597
|
var init_CraftingRecipe = __esm({
|
|
21466
21598
|
"components/game/molecules/CraftingRecipe.tsx"() {
|
|
21467
21599
|
"use client";
|
|
@@ -21473,6 +21605,15 @@ var init_CraftingRecipe = __esm({
|
|
|
21473
21605
|
init_Stack();
|
|
21474
21606
|
init_Icon();
|
|
21475
21607
|
rarityValues = ["common", "uncommon", "rare", "epic", "legendary"];
|
|
21608
|
+
DEFAULT_INPUTS = [
|
|
21609
|
+
{ icon: "gem", label: "Iron Ore", required: 2, available: 3 },
|
|
21610
|
+
{ icon: "flame", label: "Coal", required: 1, available: 1 }
|
|
21611
|
+
];
|
|
21612
|
+
DEFAULT_OUTPUT = {
|
|
21613
|
+
icon: "sword",
|
|
21614
|
+
label: "Iron Sword",
|
|
21615
|
+
rarity: "uncommon"
|
|
21616
|
+
};
|
|
21476
21617
|
CraftingRecipe.displayName = "CraftingRecipe";
|
|
21477
21618
|
}
|
|
21478
21619
|
});
|
|
@@ -26469,10 +26610,10 @@ var init_StatBadge = __esm({
|
|
|
26469
26610
|
}
|
|
26470
26611
|
});
|
|
26471
26612
|
function InventoryGrid({
|
|
26472
|
-
items,
|
|
26613
|
+
items = DEFAULT_GRID_ITEMS,
|
|
26473
26614
|
columns = 4,
|
|
26474
|
-
totalSlots,
|
|
26475
|
-
selectedId,
|
|
26615
|
+
totalSlots = 12,
|
|
26616
|
+
selectedId = "",
|
|
26476
26617
|
onSelect,
|
|
26477
26618
|
selectEvent,
|
|
26478
26619
|
size = "md",
|
|
@@ -26521,7 +26662,7 @@ function InventoryGrid({
|
|
|
26521
26662
|
}
|
|
26522
26663
|
);
|
|
26523
26664
|
}
|
|
26524
|
-
var columnMap;
|
|
26665
|
+
var columnMap, DEFAULT_GRID_ITEMS;
|
|
26525
26666
|
var init_InventoryGrid = __esm({
|
|
26526
26667
|
"components/game/molecules/InventoryGrid.tsx"() {
|
|
26527
26668
|
"use client";
|
|
@@ -26538,12 +26679,18 @@ var init_InventoryGrid = __esm({
|
|
|
26538
26679
|
7: "grid-cols-7",
|
|
26539
26680
|
8: "grid-cols-8"
|
|
26540
26681
|
};
|
|
26682
|
+
DEFAULT_GRID_ITEMS = [
|
|
26683
|
+
{ id: "grid-1", icon: "sword", label: "Iron Sword", quantity: 1, rarity: "common" },
|
|
26684
|
+
{ id: "grid-2", icon: "flask-conical", label: "Health Potion", quantity: 3, rarity: "uncommon" },
|
|
26685
|
+
{ id: "grid-3", icon: "shield", label: "Wooden Shield", quantity: 1, rarity: "common" },
|
|
26686
|
+
{ id: "grid-4", icon: "gem", label: "Ruby Gem", quantity: 2, rarity: "rare" }
|
|
26687
|
+
];
|
|
26541
26688
|
InventoryGrid.displayName = "InventoryGrid";
|
|
26542
26689
|
}
|
|
26543
26690
|
});
|
|
26544
26691
|
function QuestTracker({
|
|
26545
|
-
quests,
|
|
26546
|
-
activeQuestId,
|
|
26692
|
+
quests = DEFAULT_QUESTS,
|
|
26693
|
+
activeQuestId = "q2",
|
|
26547
26694
|
className
|
|
26548
26695
|
}) {
|
|
26549
26696
|
return /* @__PURE__ */ jsx(VStack, { gap: "sm", className, children: quests.map((quest) => {
|
|
@@ -26609,6 +26756,7 @@ function QuestTracker({
|
|
|
26609
26756
|
);
|
|
26610
26757
|
}) });
|
|
26611
26758
|
}
|
|
26759
|
+
var DEFAULT_QUESTS;
|
|
26612
26760
|
var init_QuestTracker = __esm({
|
|
26613
26761
|
"components/game/molecules/QuestTracker.tsx"() {
|
|
26614
26762
|
"use client";
|
|
@@ -26618,6 +26766,11 @@ var init_QuestTracker = __esm({
|
|
|
26618
26766
|
init_Typography();
|
|
26619
26767
|
init_Box();
|
|
26620
26768
|
init_Stack();
|
|
26769
|
+
DEFAULT_QUESTS = [
|
|
26770
|
+
{ id: "q1", title: "Reach the Ancient Ruins", progress: 1, maxProgress: 1, completed: true },
|
|
26771
|
+
{ id: "q2", title: "Defeat the Shadow Guard", progress: 2, maxProgress: 5, active: true },
|
|
26772
|
+
{ id: "q3", title: "Collect 3 Crystal Shards", progress: 0, maxProgress: 3, active: false }
|
|
26773
|
+
];
|
|
26621
26774
|
QuestTracker.displayName = "QuestTracker";
|
|
26622
26775
|
}
|
|
26623
26776
|
});
|
|
@@ -26630,7 +26783,7 @@ function formatTime2(seconds) {
|
|
|
26630
26783
|
return `${seconds}s`;
|
|
26631
26784
|
}
|
|
26632
26785
|
function PowerupSlots({
|
|
26633
|
-
active,
|
|
26786
|
+
active = DEFAULT_ACTIVE_POWERUPS,
|
|
26634
26787
|
maxSlots = 4,
|
|
26635
26788
|
className
|
|
26636
26789
|
}) {
|
|
@@ -26675,6 +26828,7 @@ function PowerupSlots({
|
|
|
26675
26828
|
))
|
|
26676
26829
|
] });
|
|
26677
26830
|
}
|
|
26831
|
+
var DEFAULT_ACTIVE_POWERUPS;
|
|
26678
26832
|
var init_PowerupSlots = __esm({
|
|
26679
26833
|
"components/game/molecules/PowerupSlots.tsx"() {
|
|
26680
26834
|
"use client";
|
|
@@ -26683,6 +26837,10 @@ var init_PowerupSlots = __esm({
|
|
|
26683
26837
|
init_Box();
|
|
26684
26838
|
init_Stack();
|
|
26685
26839
|
init_Typography();
|
|
26840
|
+
DEFAULT_ACTIVE_POWERUPS = [
|
|
26841
|
+
{ id: "pw1", icon: "zap", label: "Speed Boost", remainingTime: 12 },
|
|
26842
|
+
{ id: "pw2", icon: "shield", label: "Iron Shield", remainingTime: 30 }
|
|
26843
|
+
];
|
|
26686
26844
|
PowerupSlots.displayName = "PowerupSlots";
|
|
26687
26845
|
}
|
|
26688
26846
|
});
|
|
@@ -26694,7 +26852,7 @@ function GameCanvas2D({
|
|
|
26694
26852
|
tickEvent,
|
|
26695
26853
|
drawEvent,
|
|
26696
26854
|
fps = 60,
|
|
26697
|
-
backgroundImage = "
|
|
26855
|
+
backgroundImage = "",
|
|
26698
26856
|
assetBaseUrl = "https://almadar-kflow-assets.web.app/shared/",
|
|
26699
26857
|
className
|
|
26700
26858
|
}) {
|
|
@@ -26798,10 +26956,10 @@ var init_GameCanvas2D = __esm({
|
|
|
26798
26956
|
}
|
|
26799
26957
|
});
|
|
26800
26958
|
function HealthPanel({
|
|
26801
|
-
current,
|
|
26802
|
-
max,
|
|
26803
|
-
shield,
|
|
26804
|
-
label,
|
|
26959
|
+
current = 75,
|
|
26960
|
+
max = 100,
|
|
26961
|
+
shield = 20,
|
|
26962
|
+
label = "Player HP",
|
|
26805
26963
|
effects,
|
|
26806
26964
|
showNumbers = true,
|
|
26807
26965
|
size = "md",
|
|
@@ -26919,11 +27077,11 @@ var init_HealthPanel = __esm({
|
|
|
26919
27077
|
}
|
|
26920
27078
|
});
|
|
26921
27079
|
function ScoreBoard({
|
|
26922
|
-
score: rawScore,
|
|
26923
|
-
highScore: rawHighScore,
|
|
26924
|
-
combo: rawCombo,
|
|
26925
|
-
multiplier: rawMultiplier,
|
|
26926
|
-
level: rawLevel,
|
|
27080
|
+
score: rawScore = 4200,
|
|
27081
|
+
highScore: rawHighScore = 8750,
|
|
27082
|
+
combo: rawCombo = 3,
|
|
27083
|
+
multiplier: rawMultiplier = 2,
|
|
27084
|
+
level: rawLevel = 4,
|
|
26927
27085
|
className
|
|
26928
27086
|
}) {
|
|
26929
27087
|
const score = rawScore ?? 0;
|
|
@@ -26996,7 +27154,7 @@ var init_ScoreBoard = __esm({
|
|
|
26996
27154
|
}
|
|
26997
27155
|
});
|
|
26998
27156
|
function ResourceBar({
|
|
26999
|
-
resources,
|
|
27157
|
+
resources = DEFAULT_RESOURCES,
|
|
27000
27158
|
size = "md",
|
|
27001
27159
|
className
|
|
27002
27160
|
}) {
|
|
@@ -27022,21 +27180,27 @@ function ResourceBar({
|
|
|
27022
27180
|
}
|
|
27023
27181
|
);
|
|
27024
27182
|
}
|
|
27183
|
+
var DEFAULT_RESOURCES;
|
|
27025
27184
|
var init_ResourceBar = __esm({
|
|
27026
27185
|
"components/game/molecules/ResourceBar.tsx"() {
|
|
27027
27186
|
"use client";
|
|
27028
27187
|
init_cn();
|
|
27029
27188
|
init_StatBadge();
|
|
27030
27189
|
init_Box();
|
|
27190
|
+
DEFAULT_RESOURCES = [
|
|
27191
|
+
{ icon: "coins", label: "Gold", value: 320 },
|
|
27192
|
+
{ icon: "zap", label: "Energy", value: 7, max: 10 },
|
|
27193
|
+
{ icon: "gem", label: "Crystals", value: 15 }
|
|
27194
|
+
];
|
|
27031
27195
|
ResourceBar.displayName = "ResourceBar";
|
|
27032
27196
|
}
|
|
27033
27197
|
});
|
|
27034
27198
|
function TurnPanel({
|
|
27035
|
-
currentTurn,
|
|
27036
|
-
maxTurns,
|
|
27037
|
-
phase,
|
|
27038
|
-
activeTeam,
|
|
27039
|
-
actions,
|
|
27199
|
+
currentTurn = 3,
|
|
27200
|
+
maxTurns = 10,
|
|
27201
|
+
phase = "Attack",
|
|
27202
|
+
activeTeam = "Heroes",
|
|
27203
|
+
actions = DEFAULT_TURN_ACTIONS,
|
|
27040
27204
|
className
|
|
27041
27205
|
}) {
|
|
27042
27206
|
const eventBus = useEventBus();
|
|
@@ -27081,6 +27245,7 @@ function TurnPanel({
|
|
|
27081
27245
|
}
|
|
27082
27246
|
);
|
|
27083
27247
|
}
|
|
27248
|
+
var DEFAULT_TURN_ACTIONS;
|
|
27084
27249
|
var init_TurnPanel = __esm({
|
|
27085
27250
|
"components/game/molecules/TurnPanel.tsx"() {
|
|
27086
27251
|
"use client";
|
|
@@ -27089,15 +27254,19 @@ var init_TurnPanel = __esm({
|
|
|
27089
27254
|
init_Button();
|
|
27090
27255
|
init_Box();
|
|
27091
27256
|
init_useEventBus();
|
|
27257
|
+
DEFAULT_TURN_ACTIONS = [
|
|
27258
|
+
{ label: "End Turn", icon: "skip-forward", event: "END_TURN" },
|
|
27259
|
+
{ label: "Forfeit", icon: "flag", event: "FORFEIT", disabled: false }
|
|
27260
|
+
];
|
|
27092
27261
|
TurnPanel.displayName = "TurnPanel";
|
|
27093
27262
|
}
|
|
27094
27263
|
});
|
|
27095
27264
|
function EnemyPlate({
|
|
27096
|
-
name,
|
|
27097
|
-
health,
|
|
27098
|
-
maxHealth,
|
|
27099
|
-
level,
|
|
27100
|
-
effects,
|
|
27265
|
+
name = "Shadow Guard",
|
|
27266
|
+
health = 80,
|
|
27267
|
+
maxHealth = 100,
|
|
27268
|
+
level = 5,
|
|
27269
|
+
effects = DEFAULT_ENEMY_EFFECTS,
|
|
27101
27270
|
className
|
|
27102
27271
|
}) {
|
|
27103
27272
|
return /* @__PURE__ */ jsxs(
|
|
@@ -27163,7 +27332,7 @@ function EnemyPlate({
|
|
|
27163
27332
|
}
|
|
27164
27333
|
);
|
|
27165
27334
|
}
|
|
27166
|
-
var effectVariantMap2;
|
|
27335
|
+
var effectVariantMap2, DEFAULT_ENEMY_EFFECTS;
|
|
27167
27336
|
var init_EnemyPlate = __esm({
|
|
27168
27337
|
"components/game/molecules/EnemyPlate.tsx"() {
|
|
27169
27338
|
"use client";
|
|
@@ -27177,12 +27346,15 @@ var init_EnemyPlate = __esm({
|
|
|
27177
27346
|
debuff: "danger",
|
|
27178
27347
|
neutral: "neutral"
|
|
27179
27348
|
};
|
|
27349
|
+
DEFAULT_ENEMY_EFFECTS = [
|
|
27350
|
+
{ icon: "flame", label: "Burn", variant: "debuff" }
|
|
27351
|
+
];
|
|
27180
27352
|
EnemyPlate.displayName = "EnemyPlate";
|
|
27181
27353
|
}
|
|
27182
27354
|
});
|
|
27183
27355
|
function UnitCommandBar({
|
|
27184
|
-
commands,
|
|
27185
|
-
selectedUnitId,
|
|
27356
|
+
commands = DEFAULT_COMMANDS,
|
|
27357
|
+
selectedUnitId = "unit-1",
|
|
27186
27358
|
className
|
|
27187
27359
|
}) {
|
|
27188
27360
|
const eventBus = useEventBus();
|
|
@@ -27225,6 +27397,7 @@ function UnitCommandBar({
|
|
|
27225
27397
|
}
|
|
27226
27398
|
);
|
|
27227
27399
|
}
|
|
27400
|
+
var DEFAULT_COMMANDS;
|
|
27228
27401
|
var init_UnitCommandBar = __esm({
|
|
27229
27402
|
"components/game/molecules/UnitCommandBar.tsx"() {
|
|
27230
27403
|
"use client";
|
|
@@ -27233,6 +27406,12 @@ var init_UnitCommandBar = __esm({
|
|
|
27233
27406
|
init_Box();
|
|
27234
27407
|
init_Typography();
|
|
27235
27408
|
init_useEventBus();
|
|
27409
|
+
DEFAULT_COMMANDS = [
|
|
27410
|
+
{ label: "Move", icon: "move", event: "MOVE", hotkey: "M" },
|
|
27411
|
+
{ label: "Attack", icon: "sword", event: "ATTACK", hotkey: "A" },
|
|
27412
|
+
{ label: "Defend", icon: "shield", event: "DEFEND", hotkey: "D" },
|
|
27413
|
+
{ label: "Wait", icon: "clock", event: "WAIT", hotkey: "W" }
|
|
27414
|
+
];
|
|
27236
27415
|
UnitCommandBar.displayName = "UnitCommandBar";
|
|
27237
27416
|
}
|
|
27238
27417
|
});
|
|
@@ -27266,7 +27445,7 @@ function GameHud({
|
|
|
27266
27445
|
className,
|
|
27267
27446
|
transparent = true
|
|
27268
27447
|
}) {
|
|
27269
|
-
const rawStats = propStats ?? items ?? (elements && Array.isArray(elements) ? convertElementsToStats(elements) :
|
|
27448
|
+
const rawStats = propStats ?? items ?? (elements && Array.isArray(elements) ? convertElementsToStats(elements) : DEFAULT_HUD_STATS);
|
|
27270
27449
|
const stats = Array.isArray(rawStats) ? rawStats : [];
|
|
27271
27450
|
const position = propPosition ?? "corners";
|
|
27272
27451
|
if (position === "corners") {
|
|
@@ -27291,7 +27470,7 @@ function GameHud({
|
|
|
27291
27470
|
}
|
|
27292
27471
|
);
|
|
27293
27472
|
}
|
|
27294
|
-
var positionMap;
|
|
27473
|
+
var positionMap, DEFAULT_HUD_STATS;
|
|
27295
27474
|
var init_GameHud = __esm({
|
|
27296
27475
|
"components/game/molecules/GameHud.tsx"() {
|
|
27297
27476
|
init_cn();
|
|
@@ -27301,11 +27480,17 @@ var init_GameHud = __esm({
|
|
|
27301
27480
|
bottom: "bottom-0 left-0 right-0 flex justify-between items-end p-4",
|
|
27302
27481
|
corners: "inset-0 pointer-events-none"
|
|
27303
27482
|
};
|
|
27483
|
+
DEFAULT_HUD_STATS = [
|
|
27484
|
+
{ label: "HP", value: 75, max: 100, format: "bar", variant: "danger" },
|
|
27485
|
+
{ label: "MP", value: 40, max: 60, format: "bar", variant: "primary" },
|
|
27486
|
+
{ label: "Score", value: 4200, format: "number", variant: "warning" },
|
|
27487
|
+
{ label: "Level", value: 4, format: "number", variant: "default" }
|
|
27488
|
+
];
|
|
27304
27489
|
GameHud.displayName = "GameHud";
|
|
27305
27490
|
}
|
|
27306
27491
|
});
|
|
27307
27492
|
function DialogueBox({
|
|
27308
|
-
dialogue,
|
|
27493
|
+
dialogue = DEFAULT_DIALOGUE,
|
|
27309
27494
|
typewriterSpeed = 30,
|
|
27310
27495
|
position = "bottom",
|
|
27311
27496
|
onComplete,
|
|
@@ -27488,17 +27673,27 @@ function DialogueBox({
|
|
|
27488
27673
|
}
|
|
27489
27674
|
);
|
|
27490
27675
|
}
|
|
27676
|
+
var DEFAULT_DIALOGUE;
|
|
27491
27677
|
var init_DialogueBox = __esm({
|
|
27492
27678
|
"components/game/molecules/DialogueBox.tsx"() {
|
|
27493
27679
|
"use client";
|
|
27494
27680
|
init_cn();
|
|
27495
27681
|
init_useEventBus();
|
|
27682
|
+
DEFAULT_DIALOGUE = {
|
|
27683
|
+
speaker: "Village Elder",
|
|
27684
|
+
text: "The ancient ruins hold great power \u2014 and great danger. Choose your path wisely, traveler.",
|
|
27685
|
+
choices: [
|
|
27686
|
+
{ text: "I am ready. Lead the way.", action: "ACCEPT_QUEST" },
|
|
27687
|
+
{ text: "Tell me more about the ruins.", action: "ASK_LORE" },
|
|
27688
|
+
{ text: "Perhaps another time.", action: "DECLINE" }
|
|
27689
|
+
]
|
|
27690
|
+
};
|
|
27496
27691
|
}
|
|
27497
27692
|
});
|
|
27498
27693
|
function InventoryPanel({
|
|
27499
|
-
items,
|
|
27500
|
-
slots,
|
|
27501
|
-
columns,
|
|
27694
|
+
items = DEFAULT_INVENTORY_ITEMS,
|
|
27695
|
+
slots = 12,
|
|
27696
|
+
columns = 4,
|
|
27502
27697
|
selectedSlot,
|
|
27503
27698
|
onSelectSlot,
|
|
27504
27699
|
onUseItem,
|
|
@@ -27646,25 +27841,31 @@ function InventoryPanel({
|
|
|
27646
27841
|
)
|
|
27647
27842
|
] });
|
|
27648
27843
|
}
|
|
27844
|
+
var DEFAULT_INVENTORY_ITEMS;
|
|
27649
27845
|
var init_InventoryPanel = __esm({
|
|
27650
27846
|
"components/game/molecules/InventoryPanel.tsx"() {
|
|
27651
27847
|
"use client";
|
|
27652
27848
|
init_cn();
|
|
27653
27849
|
init_useEventBus();
|
|
27850
|
+
DEFAULT_INVENTORY_ITEMS = [
|
|
27851
|
+
{ id: "item-1", type: "weapon", name: "Iron Sword", quantity: 1, description: "A sturdy iron blade." },
|
|
27852
|
+
{ id: "item-2", type: "potion", name: "Health Potion", quantity: 3, description: "Restores 50 HP." },
|
|
27853
|
+
{ id: "item-3", type: "armor", name: "Leather Helm", quantity: 1, description: "Light head protection." }
|
|
27854
|
+
];
|
|
27654
27855
|
}
|
|
27655
27856
|
});
|
|
27656
27857
|
function GameMenu({
|
|
27657
|
-
title,
|
|
27858
|
+
title = "Epic Quest",
|
|
27658
27859
|
subtitle,
|
|
27659
27860
|
options,
|
|
27660
27861
|
menuItems,
|
|
27661
27862
|
onSelect,
|
|
27662
27863
|
eventBus: eventBusProp,
|
|
27663
27864
|
background,
|
|
27664
|
-
logo,
|
|
27865
|
+
logo = "",
|
|
27665
27866
|
className
|
|
27666
27867
|
}) {
|
|
27667
|
-
const resolvedOptions = options ?? menuItems ??
|
|
27868
|
+
const resolvedOptions = options ?? menuItems ?? DEFAULT_MENU_OPTIONS;
|
|
27668
27869
|
let eventBusFromHook = null;
|
|
27669
27870
|
try {
|
|
27670
27871
|
eventBusFromHook = useEventBus();
|
|
@@ -27745,7 +27946,7 @@ function GameMenu({
|
|
|
27745
27946
|
}
|
|
27746
27947
|
);
|
|
27747
27948
|
}
|
|
27748
|
-
var variantMap3;
|
|
27949
|
+
var variantMap3, DEFAULT_MENU_OPTIONS;
|
|
27749
27950
|
var init_GameMenu = __esm({
|
|
27750
27951
|
"components/game/molecules/GameMenu.tsx"() {
|
|
27751
27952
|
"use client";
|
|
@@ -27756,6 +27957,11 @@ var init_GameMenu = __esm({
|
|
|
27756
27957
|
secondary: "bg-[var(--color-surface,#374151)] hover:bg-muted text-[var(--color-foreground)] border-muted",
|
|
27757
27958
|
ghost: "bg-transparent hover:bg-foreground/10 text-[var(--color-foreground)] border-foreground/20"
|
|
27758
27959
|
};
|
|
27960
|
+
DEFAULT_MENU_OPTIONS = [
|
|
27961
|
+
{ label: "New Game", event: "NEW_GAME", variant: "primary" },
|
|
27962
|
+
{ label: "Continue", event: "CONTINUE", variant: "secondary" },
|
|
27963
|
+
{ label: "Settings", event: "SETTINGS", variant: "ghost" }
|
|
27964
|
+
];
|
|
27759
27965
|
GameMenu.displayName = "GameMenu";
|
|
27760
27966
|
}
|
|
27761
27967
|
});
|
|
@@ -27766,19 +27972,19 @@ function formatTime3(ms) {
|
|
|
27766
27972
|
return `${minutes}:${remainingSeconds.toString().padStart(2, "0")}`;
|
|
27767
27973
|
}
|
|
27768
27974
|
function GameOverScreen({
|
|
27769
|
-
title,
|
|
27975
|
+
title = "Game Over",
|
|
27770
27976
|
message,
|
|
27771
|
-
stats =
|
|
27977
|
+
stats = DEFAULT_GAME_OVER_STATS,
|
|
27772
27978
|
actions,
|
|
27773
27979
|
menuItems,
|
|
27774
27980
|
onAction,
|
|
27775
27981
|
eventBus: eventBusProp,
|
|
27776
|
-
variant = "
|
|
27777
|
-
highScore,
|
|
27778
|
-
currentScore,
|
|
27982
|
+
variant = "defeat",
|
|
27983
|
+
highScore = 2e3,
|
|
27984
|
+
currentScore = 1240,
|
|
27779
27985
|
className
|
|
27780
27986
|
}) {
|
|
27781
|
-
const resolvedActions = actions ?? menuItems ??
|
|
27987
|
+
const resolvedActions = actions ?? menuItems ?? DEFAULT_GAME_OVER_ACTIONS;
|
|
27782
27988
|
let eventBusFromHook = null;
|
|
27783
27989
|
try {
|
|
27784
27990
|
eventBusFromHook = useEventBus();
|
|
@@ -27865,7 +28071,7 @@ function GameOverScreen({
|
|
|
27865
28071
|
}
|
|
27866
28072
|
);
|
|
27867
28073
|
}
|
|
27868
|
-
var variantColors, buttonVariants;
|
|
28074
|
+
var variantColors, buttonVariants, DEFAULT_GAME_OVER_ACTIONS, DEFAULT_GAME_OVER_STATS;
|
|
27869
28075
|
var init_GameOverScreen = __esm({
|
|
27870
28076
|
"components/game/molecules/GameOverScreen.tsx"() {
|
|
27871
28077
|
"use client";
|
|
@@ -27894,21 +28100,35 @@ var init_GameOverScreen = __esm({
|
|
|
27894
28100
|
secondary: "bg-[var(--color-surface,#374151)] hover:bg-muted text-[var(--color-foreground)] border-muted",
|
|
27895
28101
|
ghost: "bg-transparent hover:bg-foreground/10 text-[var(--color-foreground)] border-foreground/20"
|
|
27896
28102
|
};
|
|
28103
|
+
DEFAULT_GAME_OVER_ACTIONS = [
|
|
28104
|
+
{ label: "Play Again", event: "RESTART", variant: "primary" },
|
|
28105
|
+
{ label: "Main Menu", event: "MAIN_MENU", variant: "secondary" }
|
|
28106
|
+
];
|
|
28107
|
+
DEFAULT_GAME_OVER_STATS = [
|
|
28108
|
+
{ label: "Score", value: 1240 },
|
|
28109
|
+
{ label: "Enemies Defeated", value: 8 },
|
|
28110
|
+
{ label: "Time", value: 93e3, format: "time" }
|
|
28111
|
+
];
|
|
27897
28112
|
GameOverScreen.displayName = "GameOverScreen";
|
|
27898
28113
|
}
|
|
27899
28114
|
});
|
|
27900
28115
|
function PlatformerCanvas({
|
|
27901
28116
|
player,
|
|
27902
|
-
platforms = [
|
|
28117
|
+
platforms = [
|
|
28118
|
+
{ x: 0, y: 368, width: 800, height: 32, type: "ground" },
|
|
28119
|
+
{ x: 150, y: 280, width: 160, height: 16, type: "platform" },
|
|
28120
|
+
{ x: 420, y: 220, width: 160, height: 16, type: "platform" },
|
|
28121
|
+
{ x: 620, y: 300, width: 140, height: 16, type: "platform" }
|
|
28122
|
+
],
|
|
27903
28123
|
worldWidth = 800,
|
|
27904
28124
|
worldHeight = 400,
|
|
27905
28125
|
canvasWidth = 800,
|
|
27906
28126
|
canvasHeight = 400,
|
|
27907
28127
|
followCamera = true,
|
|
27908
|
-
bgColor,
|
|
28128
|
+
bgColor = "#5c94fc",
|
|
27909
28129
|
playerSprite = "https://almadar-kflow-assets.web.app/shared/platformer/characters/platformChar_idle.png",
|
|
27910
28130
|
tileSprites,
|
|
27911
|
-
backgroundImage = "
|
|
28131
|
+
backgroundImage = "",
|
|
27912
28132
|
assetBaseUrl = "https://almadar-kflow-assets.web.app/shared/platformer/",
|
|
27913
28133
|
leftEvent = "MOVE_LEFT",
|
|
27914
28134
|
rightEvent = "MOVE_RIGHT",
|
|
@@ -27956,10 +28176,10 @@ function PlatformerCanvas({
|
|
|
27956
28176
|
};
|
|
27957
28177
|
}, []);
|
|
27958
28178
|
const resolvedPlayer = player ?? {
|
|
27959
|
-
x:
|
|
27960
|
-
y:
|
|
27961
|
-
width:
|
|
27962
|
-
height:
|
|
28179
|
+
x: 80,
|
|
28180
|
+
y: 336,
|
|
28181
|
+
width: 32,
|
|
28182
|
+
height: 48,
|
|
27963
28183
|
facingRight: true
|
|
27964
28184
|
};
|
|
27965
28185
|
const handleKeyDown = useCallback((e) => {
|
|
@@ -46657,12 +46877,12 @@ function WorldMapTemplate({
|
|
|
46657
46877
|
entity,
|
|
46658
46878
|
scale = 0.4,
|
|
46659
46879
|
unitScale = 2.5,
|
|
46660
|
-
diamondTopY,
|
|
46880
|
+
diamondTopY = 374,
|
|
46661
46881
|
allowMoveAllHeroes = false,
|
|
46662
|
-
tiles,
|
|
46663
|
-
units,
|
|
46664
|
-
features,
|
|
46665
|
-
assetManifest,
|
|
46882
|
+
tiles = DEFAULT_WORLDMAP_TILES,
|
|
46883
|
+
units = DEFAULT_WORLDMAP_UNITS,
|
|
46884
|
+
features = DEFAULT_WORLDMAP_FEATURES,
|
|
46885
|
+
assetManifest = DEFAULT_WORLDMAP_MANIFEST,
|
|
46666
46886
|
className
|
|
46667
46887
|
}) {
|
|
46668
46888
|
return /* @__PURE__ */ jsx(
|
|
@@ -46685,9 +46905,63 @@ function WorldMapTemplate({
|
|
|
46685
46905
|
}
|
|
46686
46906
|
);
|
|
46687
46907
|
}
|
|
46908
|
+
var CDN3, DEFAULT_WORLDMAP_TILES, DEFAULT_WORLDMAP_UNITS, DEFAULT_WORLDMAP_FEATURES, DEFAULT_WORLDMAP_MANIFEST;
|
|
46688
46909
|
var init_WorldMapTemplate = __esm({
|
|
46689
46910
|
"components/game/templates/WorldMapTemplate.tsx"() {
|
|
46690
46911
|
init_WorldMapBoard();
|
|
46912
|
+
CDN3 = "https://almadar-kflow-assets.web.app/shared";
|
|
46913
|
+
DEFAULT_WORLDMAP_TILES = [
|
|
46914
|
+
{ x: 0, y: 0, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
|
|
46915
|
+
{ x: 1, y: 0, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
|
|
46916
|
+
{ x: 2, y: 0, terrain: "water", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_11.png` },
|
|
46917
|
+
{ x: 3, y: 0, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
|
|
46918
|
+
{ x: 4, y: 0, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
|
|
46919
|
+
{ x: 0, y: 1, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
|
|
46920
|
+
{ x: 1, y: 1, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
|
|
46921
|
+
{ x: 2, y: 1, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
|
|
46922
|
+
{ x: 3, y: 1, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
|
|
46923
|
+
{ x: 4, y: 1, terrain: "water", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_11.png` },
|
|
46924
|
+
{ x: 0, y: 2, terrain: "water", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_11.png` },
|
|
46925
|
+
{ x: 1, y: 2, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
|
|
46926
|
+
{ x: 2, y: 2, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_03.png` },
|
|
46927
|
+
{ x: 3, y: 2, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
|
|
46928
|
+
{ x: 4, y: 2, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
|
|
46929
|
+
{ x: 0, y: 3, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
|
|
46930
|
+
{ x: 1, y: 3, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
|
|
46931
|
+
{ x: 2, y: 3, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
|
|
46932
|
+
{ x: 3, y: 3, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_03.png` },
|
|
46933
|
+
{ x: 4, y: 3, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
|
|
46934
|
+
{ x: 0, y: 4, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
|
|
46935
|
+
{ x: 1, y: 4, terrain: "water", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_11.png` },
|
|
46936
|
+
{ x: 2, y: 4, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
|
|
46937
|
+
{ x: 3, y: 4, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
|
|
46938
|
+
{ x: 4, y: 4, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` }
|
|
46939
|
+
];
|
|
46940
|
+
DEFAULT_WORLDMAP_UNITS = [
|
|
46941
|
+
{ 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` },
|
|
46942
|
+
{ 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` }
|
|
46943
|
+
];
|
|
46944
|
+
DEFAULT_WORLDMAP_FEATURES = [
|
|
46945
|
+
{ id: "f1", x: 2, y: 2, type: "capital", sprite: `${CDN3}/scenes/world/capital.png` },
|
|
46946
|
+
{ id: "f2", x: 4, y: 2, type: "power_node", sprite: `${CDN3}/world-map/power_node.png` }
|
|
46947
|
+
];
|
|
46948
|
+
DEFAULT_WORLDMAP_MANIFEST = {
|
|
46949
|
+
baseUrl: CDN3,
|
|
46950
|
+
terrains: {
|
|
46951
|
+
grass: "/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png",
|
|
46952
|
+
water: "/isometric-blocks/PNG/Platformer tiles/platformerTile_11.png",
|
|
46953
|
+
mountain: "/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png",
|
|
46954
|
+
road: "/isometric-blocks/PNG/Platformer tiles/platformerTile_03.png"
|
|
46955
|
+
},
|
|
46956
|
+
units: {
|
|
46957
|
+
hero: "/sprite-sheets/amir-sprite-sheet-se.png",
|
|
46958
|
+
scout: "/sprite-sheets/archivist-sprite-sheet-se.png"
|
|
46959
|
+
},
|
|
46960
|
+
features: {
|
|
46961
|
+
capital: "/scenes/world/capital.png",
|
|
46962
|
+
power_node: "/world-map/power_node.png"
|
|
46963
|
+
}
|
|
46964
|
+
};
|
|
46691
46965
|
WorldMapTemplate.displayName = "WorldMapTemplate";
|
|
46692
46966
|
}
|
|
46693
46967
|
});
|