@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/providers/index.js
CHANGED
|
@@ -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 = "
|
|
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 =
|
|
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 =
|
|
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 = "
|
|
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 = "
|
|
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 =
|
|
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 = "
|
|
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 = "
|
|
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 = "
|
|
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:
|
|
28393
|
-
y:
|
|
28394
|
-
width:
|
|
28395
|
-
height:
|
|
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
|
});
|