@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.cjs
CHANGED
|
@@ -7089,8 +7089,8 @@ var init_TraitFrame = __esm({
|
|
|
7089
7089
|
}
|
|
7090
7090
|
});
|
|
7091
7091
|
function HealthBar({
|
|
7092
|
-
current,
|
|
7093
|
-
max,
|
|
7092
|
+
current = 3,
|
|
7093
|
+
max = 5,
|
|
7094
7094
|
format = "hearts",
|
|
7095
7095
|
size = "md",
|
|
7096
7096
|
className,
|
|
@@ -7339,11 +7339,11 @@ var init_ControlButton = __esm({
|
|
|
7339
7339
|
});
|
|
7340
7340
|
function Sprite({
|
|
7341
7341
|
spritesheet = "https://almadar-kflow-assets.web.app/shared/isometric-blocks/Spritesheet/allTiles_sheet.png",
|
|
7342
|
-
frameWidth,
|
|
7343
|
-
frameHeight,
|
|
7344
|
-
frame,
|
|
7345
|
-
x,
|
|
7346
|
-
y,
|
|
7342
|
+
frameWidth = 64,
|
|
7343
|
+
frameHeight = 64,
|
|
7344
|
+
frame = 0,
|
|
7345
|
+
x = 0,
|
|
7346
|
+
y = 0,
|
|
7347
7347
|
scale = 1,
|
|
7348
7348
|
flipX = false,
|
|
7349
7349
|
flipY = false,
|
|
@@ -7413,7 +7413,7 @@ var init_Sprite = __esm({
|
|
|
7413
7413
|
}
|
|
7414
7414
|
});
|
|
7415
7415
|
function StateIndicator({
|
|
7416
|
-
state,
|
|
7416
|
+
state = "idle",
|
|
7417
7417
|
label,
|
|
7418
7418
|
size = "md",
|
|
7419
7419
|
animated = true,
|
|
@@ -7484,8 +7484,8 @@ function formatTime(seconds, format) {
|
|
|
7484
7484
|
return `${mins.toString().padStart(2, "0")}:${padded}`;
|
|
7485
7485
|
}
|
|
7486
7486
|
function TimerDisplay({
|
|
7487
|
-
seconds,
|
|
7488
|
-
running,
|
|
7487
|
+
seconds = 90,
|
|
7488
|
+
running = true,
|
|
7489
7489
|
format = "mm:ss",
|
|
7490
7490
|
size = "md",
|
|
7491
7491
|
className,
|
|
@@ -7522,8 +7522,8 @@ var init_TimerDisplay = __esm({
|
|
|
7522
7522
|
});
|
|
7523
7523
|
function ResourceCounter({
|
|
7524
7524
|
icon,
|
|
7525
|
-
label,
|
|
7526
|
-
value,
|
|
7525
|
+
label = "Gold",
|
|
7526
|
+
value = 250,
|
|
7527
7527
|
max,
|
|
7528
7528
|
color,
|
|
7529
7529
|
size = "md",
|
|
@@ -7575,10 +7575,10 @@ var init_ResourceCounter = __esm({
|
|
|
7575
7575
|
}
|
|
7576
7576
|
});
|
|
7577
7577
|
function ItemSlot({
|
|
7578
|
-
icon,
|
|
7579
|
-
label,
|
|
7578
|
+
icon = "sword",
|
|
7579
|
+
label = "Iron Sword",
|
|
7580
7580
|
quantity,
|
|
7581
|
-
rarity = "
|
|
7581
|
+
rarity = "uncommon",
|
|
7582
7582
|
empty,
|
|
7583
7583
|
size = "md",
|
|
7584
7584
|
selected,
|
|
@@ -7651,7 +7651,7 @@ var init_ItemSlot = __esm({
|
|
|
7651
7651
|
}
|
|
7652
7652
|
});
|
|
7653
7653
|
function TurnIndicator({
|
|
7654
|
-
currentTurn,
|
|
7654
|
+
currentTurn = 1,
|
|
7655
7655
|
maxTurns,
|
|
7656
7656
|
activeTeam,
|
|
7657
7657
|
phase,
|
|
@@ -7714,7 +7714,7 @@ function getComboScale(combo) {
|
|
|
7714
7714
|
return "";
|
|
7715
7715
|
}
|
|
7716
7716
|
function ComboCounter({
|
|
7717
|
-
combo,
|
|
7717
|
+
combo = 5,
|
|
7718
7718
|
multiplier,
|
|
7719
7719
|
streak,
|
|
7720
7720
|
size = "md",
|
|
@@ -7760,10 +7760,10 @@ var init_ComboCounter = __esm({
|
|
|
7760
7760
|
}
|
|
7761
7761
|
});
|
|
7762
7762
|
function XPBar({
|
|
7763
|
-
current,
|
|
7764
|
-
max,
|
|
7765
|
-
level,
|
|
7766
|
-
showLabel =
|
|
7763
|
+
current = 350,
|
|
7764
|
+
max = 1e3,
|
|
7765
|
+
level = 5,
|
|
7766
|
+
showLabel = true,
|
|
7767
7767
|
size = "md",
|
|
7768
7768
|
animated = true,
|
|
7769
7769
|
className
|
|
@@ -7846,7 +7846,7 @@ var init_XPBar = __esm({
|
|
|
7846
7846
|
function WaypointMarker({
|
|
7847
7847
|
label,
|
|
7848
7848
|
icon,
|
|
7849
|
-
active =
|
|
7849
|
+
active = true,
|
|
7850
7850
|
completed = false,
|
|
7851
7851
|
size = "md",
|
|
7852
7852
|
className
|
|
@@ -7920,11 +7920,11 @@ function formatDuration(seconds) {
|
|
|
7920
7920
|
return `${Math.round(seconds)}s`;
|
|
7921
7921
|
}
|
|
7922
7922
|
function StatusEffect({
|
|
7923
|
-
icon,
|
|
7924
|
-
label,
|
|
7925
|
-
duration,
|
|
7923
|
+
icon = "shield",
|
|
7924
|
+
label = "Shield",
|
|
7925
|
+
duration = 30,
|
|
7926
7926
|
stacks,
|
|
7927
|
-
variant = "
|
|
7927
|
+
variant = "buff",
|
|
7928
7928
|
size = "md",
|
|
7929
7929
|
className
|
|
7930
7930
|
}) {
|
|
@@ -7986,7 +7986,7 @@ var init_StatusEffect = __esm({
|
|
|
7986
7986
|
}
|
|
7987
7987
|
});
|
|
7988
7988
|
function DamageNumber({
|
|
7989
|
-
value,
|
|
7989
|
+
value = 42,
|
|
7990
7990
|
type = "damage",
|
|
7991
7991
|
size = "md",
|
|
7992
7992
|
className
|
|
@@ -8035,8 +8035,8 @@ var init_DamageNumber = __esm({
|
|
|
8035
8035
|
}
|
|
8036
8036
|
});
|
|
8037
8037
|
function DialogueBubble({
|
|
8038
|
-
speaker,
|
|
8039
|
-
text,
|
|
8038
|
+
speaker = "Hero",
|
|
8039
|
+
text = "The dungeon awaits. Choose your path wisely.",
|
|
8040
8040
|
portrait = "https://almadar-kflow-assets.web.app/shared/characters/archetypes/04_hero.png",
|
|
8041
8041
|
position = "bottom",
|
|
8042
8042
|
className
|
|
@@ -8073,7 +8073,7 @@ var init_DialogueBubble = __esm({
|
|
|
8073
8073
|
}
|
|
8074
8074
|
});
|
|
8075
8075
|
function ChoiceButton({
|
|
8076
|
-
text,
|
|
8076
|
+
text = "Charge forward into the fray",
|
|
8077
8077
|
index,
|
|
8078
8078
|
disabled = false,
|
|
8079
8079
|
selected = false,
|
|
@@ -8119,7 +8119,7 @@ var init_ChoiceButton = __esm({
|
|
|
8119
8119
|
}
|
|
8120
8120
|
});
|
|
8121
8121
|
function ActionButton({
|
|
8122
|
-
label,
|
|
8122
|
+
label = "Attack",
|
|
8123
8123
|
icon,
|
|
8124
8124
|
cooldown = 0,
|
|
8125
8125
|
disabled = false,
|
|
@@ -8199,13 +8199,13 @@ var init_ActionButton = __esm({
|
|
|
8199
8199
|
}
|
|
8200
8200
|
});
|
|
8201
8201
|
function MiniMap({
|
|
8202
|
-
tiles =
|
|
8203
|
-
units =
|
|
8202
|
+
tiles = DEFAULT_TILES,
|
|
8203
|
+
units = DEFAULT_UNITS,
|
|
8204
8204
|
width = 150,
|
|
8205
8205
|
height = 150,
|
|
8206
8206
|
mapWidth = 100,
|
|
8207
8207
|
mapHeight = 100,
|
|
8208
|
-
viewportRect,
|
|
8208
|
+
viewportRect = DEFAULT_VIEWPORT,
|
|
8209
8209
|
className
|
|
8210
8210
|
}) {
|
|
8211
8211
|
const canvasRef = React83__namespace.useRef(null);
|
|
@@ -8284,10 +8284,25 @@ function MiniMap({
|
|
|
8284
8284
|
}
|
|
8285
8285
|
);
|
|
8286
8286
|
}
|
|
8287
|
+
var DEFAULT_TILES, DEFAULT_UNITS, DEFAULT_VIEWPORT;
|
|
8287
8288
|
var init_MiniMap = __esm({
|
|
8288
8289
|
"components/game/atoms/MiniMap.tsx"() {
|
|
8289
8290
|
"use client";
|
|
8290
8291
|
init_cn();
|
|
8292
|
+
DEFAULT_TILES = [
|
|
8293
|
+
{ x: 10, y: 10, color: "#4ade80" },
|
|
8294
|
+
{ x: 20, y: 15, color: "#4ade80" },
|
|
8295
|
+
{ x: 30, y: 25, color: "#22c55e" },
|
|
8296
|
+
{ x: 50, y: 40, color: "#4ade80" },
|
|
8297
|
+
{ x: 60, y: 55, color: "#16a34a" },
|
|
8298
|
+
{ x: 40, y: 60, color: "#4ade80" },
|
|
8299
|
+
{ x: 70, y: 30, color: "#22c55e" },
|
|
8300
|
+
{ x: 80, y: 70, color: "#4ade80" }
|
|
8301
|
+
];
|
|
8302
|
+
DEFAULT_UNITS = [
|
|
8303
|
+
{ x: 30, y: 30, color: "#60a5fa", isPlayer: true }
|
|
8304
|
+
];
|
|
8305
|
+
DEFAULT_VIEWPORT = { x: 20, y: 20, w: 40, h: 40 };
|
|
8291
8306
|
MiniMap.displayName = "MiniMap";
|
|
8292
8307
|
}
|
|
8293
8308
|
});
|
|
@@ -9766,7 +9781,7 @@ var init_Accordion = __esm({
|
|
|
9766
9781
|
}
|
|
9767
9782
|
});
|
|
9768
9783
|
function ActionButtons({
|
|
9769
|
-
buttons,
|
|
9784
|
+
buttons = DEFAULT_BUTTONS,
|
|
9770
9785
|
onAction,
|
|
9771
9786
|
actionEvent,
|
|
9772
9787
|
layout = "horizontal",
|
|
@@ -9873,7 +9888,7 @@ function ActionButtons({
|
|
|
9873
9888
|
button.id
|
|
9874
9889
|
)) });
|
|
9875
9890
|
}
|
|
9876
|
-
var sizeMap14, layoutMap;
|
|
9891
|
+
var sizeMap14, layoutMap, DEFAULT_BUTTONS;
|
|
9877
9892
|
var init_ActionButtons = __esm({
|
|
9878
9893
|
"components/game/molecules/ActionButtons.tsx"() {
|
|
9879
9894
|
"use client";
|
|
@@ -9890,6 +9905,11 @@ var init_ActionButtons = __esm({
|
|
|
9890
9905
|
vertical: "flex flex-col gap-2",
|
|
9891
9906
|
diamond: "grid grid-cols-3 gap-1"
|
|
9892
9907
|
};
|
|
9908
|
+
DEFAULT_BUTTONS = [
|
|
9909
|
+
{ id: "jump", label: "Jump", icon: "chevron-up", variant: "primary" },
|
|
9910
|
+
{ id: "attack", label: "Attack", icon: "sword", variant: "secondary" },
|
|
9911
|
+
{ id: "dodge", label: "Dodge", icon: "wind", variant: "ghost" }
|
|
9912
|
+
];
|
|
9893
9913
|
ActionButtons.displayName = "ActionButtons";
|
|
9894
9914
|
}
|
|
9895
9915
|
});
|
|
@@ -11070,7 +11090,7 @@ function IsometricCanvas({
|
|
|
11070
11090
|
// Rendering options
|
|
11071
11091
|
scale = 0.4,
|
|
11072
11092
|
debug: debug2 = false,
|
|
11073
|
-
backgroundImage = "
|
|
11093
|
+
backgroundImage = "",
|
|
11074
11094
|
showMinimap = true,
|
|
11075
11095
|
enableCamera = true,
|
|
11076
11096
|
unitScale = 1,
|
|
@@ -12208,10 +12228,10 @@ function BattleTemplate({
|
|
|
12208
12228
|
entity,
|
|
12209
12229
|
scale = 0.45,
|
|
12210
12230
|
unitScale = 1,
|
|
12211
|
-
tiles,
|
|
12212
|
-
units,
|
|
12213
|
-
features,
|
|
12214
|
-
assetManifest,
|
|
12231
|
+
tiles = DEFAULT_BATTLE_TILES,
|
|
12232
|
+
units = DEFAULT_BATTLE_UNITS,
|
|
12233
|
+
features = DEFAULT_BATTLE_FEATURES,
|
|
12234
|
+
assetManifest = DEFAULT_BATTLE_MANIFEST,
|
|
12215
12235
|
className
|
|
12216
12236
|
}) {
|
|
12217
12237
|
const resolved = entity && typeof entity === "object" && !Array.isArray(entity) ? entity : void 0;
|
|
@@ -12237,9 +12257,62 @@ function BattleTemplate({
|
|
|
12237
12257
|
}
|
|
12238
12258
|
);
|
|
12239
12259
|
}
|
|
12260
|
+
var CDN, DEFAULT_BATTLE_TILES, DEFAULT_BATTLE_UNITS, DEFAULT_BATTLE_FEATURES, DEFAULT_BATTLE_MANIFEST;
|
|
12240
12261
|
var init_BattleTemplate = __esm({
|
|
12241
12262
|
"components/game/templates/BattleTemplate.tsx"() {
|
|
12242
12263
|
init_BattleBoard();
|
|
12264
|
+
CDN = "https://almadar-kflow-assets.web.app/shared";
|
|
12265
|
+
DEFAULT_BATTLE_TILES = [
|
|
12266
|
+
{ x: 0, y: 0, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
|
|
12267
|
+
{ x: 1, y: 0, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
|
|
12268
|
+
{ x: 2, y: 0, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
|
|
12269
|
+
{ x: 3, y: 0, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
|
|
12270
|
+
{ x: 4, y: 0, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
|
|
12271
|
+
{ x: 0, y: 1, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
|
|
12272
|
+
{ x: 1, y: 1, terrain: "dirt", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_01.png` },
|
|
12273
|
+
{ x: 2, y: 1, terrain: "grass", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png` },
|
|
12274
|
+
{ x: 3, y: 1, terrain: "grass", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png` },
|
|
12275
|
+
{ x: 4, y: 1, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
|
|
12276
|
+
{ x: 0, y: 2, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
|
|
12277
|
+
{ x: 1, y: 2, terrain: "grass", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png` },
|
|
12278
|
+
{ x: 2, y: 2, terrain: "dirt", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_01.png` },
|
|
12279
|
+
{ x: 3, y: 2, terrain: "grass", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png` },
|
|
12280
|
+
{ x: 4, y: 2, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
|
|
12281
|
+
{ x: 0, y: 3, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
|
|
12282
|
+
{ x: 1, y: 3, terrain: "grass", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png` },
|
|
12283
|
+
{ x: 2, y: 3, terrain: "grass", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png` },
|
|
12284
|
+
{ x: 3, y: 3, terrain: "dirt", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_01.png` },
|
|
12285
|
+
{ x: 4, y: 3, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
|
|
12286
|
+
{ x: 0, y: 4, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
|
|
12287
|
+
{ x: 1, y: 4, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
|
|
12288
|
+
{ x: 2, y: 4, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
|
|
12289
|
+
{ x: 3, y: 4, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
|
|
12290
|
+
{ x: 4, y: 4, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` }
|
|
12291
|
+
];
|
|
12292
|
+
DEFAULT_BATTLE_UNITS = [
|
|
12293
|
+
{ 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` },
|
|
12294
|
+
{ 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` }
|
|
12295
|
+
];
|
|
12296
|
+
DEFAULT_BATTLE_FEATURES = [
|
|
12297
|
+
{ id: "f1", x: 2, y: 2, type: "gold_mine", sprite: `${CDN}/world-map/gold_mine.png` },
|
|
12298
|
+
{ id: "f2", x: 3, y: 1, type: "portal", sprite: `${CDN}/world-map/portal_open.png` }
|
|
12299
|
+
];
|
|
12300
|
+
DEFAULT_BATTLE_MANIFEST = {
|
|
12301
|
+
baseUrl: CDN,
|
|
12302
|
+
terrains: {
|
|
12303
|
+
stone: "/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png",
|
|
12304
|
+
dirt: "/isometric-blocks/PNG/Abstract tiles/abstractTile_01.png",
|
|
12305
|
+
grass: "/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png"
|
|
12306
|
+
},
|
|
12307
|
+
units: {
|
|
12308
|
+
worker: "/sprite-sheets/amir-sprite-sheet-se.png",
|
|
12309
|
+
guardian: "/sprite-sheets/destroyer-sprite-sheet-sw.png"
|
|
12310
|
+
},
|
|
12311
|
+
features: {
|
|
12312
|
+
gold_mine: "/world-map/gold_mine.png",
|
|
12313
|
+
portal: "/world-map/portal_open.png"
|
|
12314
|
+
}
|
|
12315
|
+
};
|
|
12243
12316
|
BattleTemplate.displayName = "BattleTemplate";
|
|
12244
12317
|
}
|
|
12245
12318
|
});
|
|
@@ -20239,10 +20312,10 @@ var init_CastleBoard = __esm({
|
|
|
20239
20312
|
function CastleTemplate({
|
|
20240
20313
|
entity,
|
|
20241
20314
|
scale = 0.45,
|
|
20242
|
-
tiles,
|
|
20243
|
-
units,
|
|
20244
|
-
features,
|
|
20245
|
-
assetManifest,
|
|
20315
|
+
tiles = DEFAULT_CASTLE_TILES,
|
|
20316
|
+
units = DEFAULT_CASTLE_UNITS,
|
|
20317
|
+
features = DEFAULT_CASTLE_FEATURES,
|
|
20318
|
+
assetManifest = DEFAULT_CASTLE_MANIFEST,
|
|
20246
20319
|
className
|
|
20247
20320
|
}) {
|
|
20248
20321
|
const resolved = entity && typeof entity === "object" && !Array.isArray(entity) ? entity : void 0;
|
|
@@ -20263,9 +20336,61 @@ function CastleTemplate({
|
|
|
20263
20336
|
}
|
|
20264
20337
|
);
|
|
20265
20338
|
}
|
|
20339
|
+
var CDN2, DEFAULT_CASTLE_TILES, DEFAULT_CASTLE_UNITS, DEFAULT_CASTLE_FEATURES, DEFAULT_CASTLE_MANIFEST;
|
|
20266
20340
|
var init_CastleTemplate = __esm({
|
|
20267
20341
|
"components/game/templates/CastleTemplate.tsx"() {
|
|
20268
20342
|
init_CastleBoard();
|
|
20343
|
+
CDN2 = "https://almadar-kflow-assets.web.app/shared";
|
|
20344
|
+
DEFAULT_CASTLE_TILES = [
|
|
20345
|
+
{ x: 0, y: 0, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
|
|
20346
|
+
{ x: 1, y: 0, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
|
|
20347
|
+
{ x: 2, y: 0, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
|
|
20348
|
+
{ x: 3, y: 0, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
|
|
20349
|
+
{ x: 4, y: 0, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
|
|
20350
|
+
{ x: 0, y: 1, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
|
|
20351
|
+
{ x: 1, y: 1, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
|
|
20352
|
+
{ x: 2, y: 1, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
|
|
20353
|
+
{ x: 3, y: 1, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
|
|
20354
|
+
{ x: 4, y: 1, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
|
|
20355
|
+
{ x: 0, y: 2, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
|
|
20356
|
+
{ x: 1, y: 2, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
|
|
20357
|
+
{ x: 2, y: 2, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_09.png` },
|
|
20358
|
+
{ x: 3, y: 2, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
|
|
20359
|
+
{ x: 4, y: 2, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
|
|
20360
|
+
{ x: 0, y: 3, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
|
|
20361
|
+
{ x: 1, y: 3, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
|
|
20362
|
+
{ x: 2, y: 3, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
|
|
20363
|
+
{ x: 3, y: 3, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
|
|
20364
|
+
{ x: 4, y: 3, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
|
|
20365
|
+
{ x: 0, y: 4, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
|
|
20366
|
+
{ x: 1, y: 4, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
|
|
20367
|
+
{ x: 2, y: 4, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
|
|
20368
|
+
{ x: 3, y: 4, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
|
|
20369
|
+
{ x: 4, y: 4, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` }
|
|
20370
|
+
];
|
|
20371
|
+
DEFAULT_CASTLE_UNITS = [
|
|
20372
|
+
{ 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` },
|
|
20373
|
+
{ 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` }
|
|
20374
|
+
];
|
|
20375
|
+
DEFAULT_CASTLE_FEATURES = [
|
|
20376
|
+
{ id: "f1", x: 2, y: 2, type: "chest", sprite: `${CDN2}/world-map/treasure_chest_closed.png` },
|
|
20377
|
+
{ id: "f2", x: 3, y: 1, type: "crystal", sprite: `${CDN2}/world-map/resonance_crystal.png` }
|
|
20378
|
+
];
|
|
20379
|
+
DEFAULT_CASTLE_MANIFEST = {
|
|
20380
|
+
baseUrl: CDN2,
|
|
20381
|
+
terrains: {
|
|
20382
|
+
wall: "/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png",
|
|
20383
|
+
floor: "/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png"
|
|
20384
|
+
},
|
|
20385
|
+
units: {
|
|
20386
|
+
worker: "/sprite-sheets/coordinator-sprite-sheet-se.png",
|
|
20387
|
+
guardian: "/sprite-sheets/forger-sprite-sheet-se.png"
|
|
20388
|
+
},
|
|
20389
|
+
features: {
|
|
20390
|
+
chest: "/world-map/treasure_chest_closed.png",
|
|
20391
|
+
crystal: "/world-map/resonance_crystal.png"
|
|
20392
|
+
}
|
|
20393
|
+
};
|
|
20269
20394
|
CastleTemplate.displayName = "CastleTemplate";
|
|
20270
20395
|
}
|
|
20271
20396
|
});
|
|
@@ -21387,7 +21512,7 @@ var init_CodeRunnerPanel = __esm({
|
|
|
21387
21512
|
}
|
|
21388
21513
|
});
|
|
21389
21514
|
function CombatLog({
|
|
21390
|
-
events: events2,
|
|
21515
|
+
events: events2 = DEFAULT_COMBAT_EVENTS,
|
|
21391
21516
|
maxVisible = 50,
|
|
21392
21517
|
autoScroll = true,
|
|
21393
21518
|
showTimestamps = false,
|
|
@@ -21438,7 +21563,7 @@ function CombatLog({
|
|
|
21438
21563
|
}) }) })
|
|
21439
21564
|
] });
|
|
21440
21565
|
}
|
|
21441
|
-
var eventIcons, eventColors, eventBadgeVariants;
|
|
21566
|
+
var eventIcons, eventColors, eventBadgeVariants, DEFAULT_COMBAT_EVENTS;
|
|
21442
21567
|
var init_CombatLog = __esm({
|
|
21443
21568
|
"components/game/molecules/CombatLog.tsx"() {
|
|
21444
21569
|
init_atoms2();
|
|
@@ -21470,6 +21595,13 @@ var init_CombatLog = __esm({
|
|
|
21470
21595
|
death: "secondary",
|
|
21471
21596
|
spawn: "secondary"
|
|
21472
21597
|
};
|
|
21598
|
+
DEFAULT_COMBAT_EVENTS = [
|
|
21599
|
+
{ id: "e1", type: "spawn", message: "Shadow Guard entered the field.", timestamp: 0, turn: 1 },
|
|
21600
|
+
{ id: "e2", type: "move", message: "Hero moved to (3, 4).", timestamp: 1, actorName: "Hero", turn: 1 },
|
|
21601
|
+
{ id: "e3", type: "attack", message: "Hero attacked Shadow Guard.", timestamp: 2, actorName: "Hero", targetName: "Shadow Guard", value: 18, turn: 2 },
|
|
21602
|
+
{ id: "e4", type: "defend", message: "Shadow Guard blocked 5 damage.", timestamp: 3, actorName: "Shadow Guard", value: 5, turn: 2 },
|
|
21603
|
+
{ id: "e5", type: "heal", message: "Hero used Health Potion.", timestamp: 4, actorName: "Hero", value: 25, turn: 3 }
|
|
21604
|
+
];
|
|
21473
21605
|
CombatLog.displayName = "CombatLog";
|
|
21474
21606
|
}
|
|
21475
21607
|
});
|
|
@@ -21877,9 +22009,9 @@ function isValidRarity(value) {
|
|
|
21877
22009
|
return rarityValues.includes(value);
|
|
21878
22010
|
}
|
|
21879
22011
|
function CraftingRecipe({
|
|
21880
|
-
inputs,
|
|
21881
|
-
output,
|
|
21882
|
-
canCraft =
|
|
22012
|
+
inputs = DEFAULT_INPUTS,
|
|
22013
|
+
output = DEFAULT_OUTPUT,
|
|
22014
|
+
canCraft = true,
|
|
21883
22015
|
onCraft,
|
|
21884
22016
|
craftEvent,
|
|
21885
22017
|
className
|
|
@@ -21940,7 +22072,7 @@ function CraftingRecipe({
|
|
|
21940
22072
|
}
|
|
21941
22073
|
);
|
|
21942
22074
|
}
|
|
21943
|
-
var rarityValues;
|
|
22075
|
+
var rarityValues, DEFAULT_INPUTS, DEFAULT_OUTPUT;
|
|
21944
22076
|
var init_CraftingRecipe = __esm({
|
|
21945
22077
|
"components/game/molecules/CraftingRecipe.tsx"() {
|
|
21946
22078
|
"use client";
|
|
@@ -21952,6 +22084,15 @@ var init_CraftingRecipe = __esm({
|
|
|
21952
22084
|
init_Stack();
|
|
21953
22085
|
init_Icon();
|
|
21954
22086
|
rarityValues = ["common", "uncommon", "rare", "epic", "legendary"];
|
|
22087
|
+
DEFAULT_INPUTS = [
|
|
22088
|
+
{ icon: "gem", label: "Iron Ore", required: 2, available: 3 },
|
|
22089
|
+
{ icon: "flame", label: "Coal", required: 1, available: 1 }
|
|
22090
|
+
];
|
|
22091
|
+
DEFAULT_OUTPUT = {
|
|
22092
|
+
icon: "sword",
|
|
22093
|
+
label: "Iron Sword",
|
|
22094
|
+
rarity: "uncommon"
|
|
22095
|
+
};
|
|
21955
22096
|
CraftingRecipe.displayName = "CraftingRecipe";
|
|
21956
22097
|
}
|
|
21957
22098
|
});
|
|
@@ -26948,10 +27089,10 @@ var init_StatBadge = __esm({
|
|
|
26948
27089
|
}
|
|
26949
27090
|
});
|
|
26950
27091
|
function InventoryGrid({
|
|
26951
|
-
items,
|
|
27092
|
+
items = DEFAULT_GRID_ITEMS,
|
|
26952
27093
|
columns = 4,
|
|
26953
|
-
totalSlots,
|
|
26954
|
-
selectedId,
|
|
27094
|
+
totalSlots = 12,
|
|
27095
|
+
selectedId = "",
|
|
26955
27096
|
onSelect,
|
|
26956
27097
|
selectEvent,
|
|
26957
27098
|
size = "md",
|
|
@@ -27000,7 +27141,7 @@ function InventoryGrid({
|
|
|
27000
27141
|
}
|
|
27001
27142
|
);
|
|
27002
27143
|
}
|
|
27003
|
-
var columnMap;
|
|
27144
|
+
var columnMap, DEFAULT_GRID_ITEMS;
|
|
27004
27145
|
var init_InventoryGrid = __esm({
|
|
27005
27146
|
"components/game/molecules/InventoryGrid.tsx"() {
|
|
27006
27147
|
"use client";
|
|
@@ -27017,12 +27158,18 @@ var init_InventoryGrid = __esm({
|
|
|
27017
27158
|
7: "grid-cols-7",
|
|
27018
27159
|
8: "grid-cols-8"
|
|
27019
27160
|
};
|
|
27161
|
+
DEFAULT_GRID_ITEMS = [
|
|
27162
|
+
{ id: "grid-1", icon: "sword", label: "Iron Sword", quantity: 1, rarity: "common" },
|
|
27163
|
+
{ id: "grid-2", icon: "flask-conical", label: "Health Potion", quantity: 3, rarity: "uncommon" },
|
|
27164
|
+
{ id: "grid-3", icon: "shield", label: "Wooden Shield", quantity: 1, rarity: "common" },
|
|
27165
|
+
{ id: "grid-4", icon: "gem", label: "Ruby Gem", quantity: 2, rarity: "rare" }
|
|
27166
|
+
];
|
|
27020
27167
|
InventoryGrid.displayName = "InventoryGrid";
|
|
27021
27168
|
}
|
|
27022
27169
|
});
|
|
27023
27170
|
function QuestTracker({
|
|
27024
|
-
quests,
|
|
27025
|
-
activeQuestId,
|
|
27171
|
+
quests = DEFAULT_QUESTS,
|
|
27172
|
+
activeQuestId = "q2",
|
|
27026
27173
|
className
|
|
27027
27174
|
}) {
|
|
27028
27175
|
return /* @__PURE__ */ jsxRuntime.jsx(VStack, { gap: "sm", className, children: quests.map((quest) => {
|
|
@@ -27088,6 +27235,7 @@ function QuestTracker({
|
|
|
27088
27235
|
);
|
|
27089
27236
|
}) });
|
|
27090
27237
|
}
|
|
27238
|
+
var DEFAULT_QUESTS;
|
|
27091
27239
|
var init_QuestTracker = __esm({
|
|
27092
27240
|
"components/game/molecules/QuestTracker.tsx"() {
|
|
27093
27241
|
"use client";
|
|
@@ -27097,6 +27245,11 @@ var init_QuestTracker = __esm({
|
|
|
27097
27245
|
init_Typography();
|
|
27098
27246
|
init_Box();
|
|
27099
27247
|
init_Stack();
|
|
27248
|
+
DEFAULT_QUESTS = [
|
|
27249
|
+
{ id: "q1", title: "Reach the Ancient Ruins", progress: 1, maxProgress: 1, completed: true },
|
|
27250
|
+
{ id: "q2", title: "Defeat the Shadow Guard", progress: 2, maxProgress: 5, active: true },
|
|
27251
|
+
{ id: "q3", title: "Collect 3 Crystal Shards", progress: 0, maxProgress: 3, active: false }
|
|
27252
|
+
];
|
|
27100
27253
|
QuestTracker.displayName = "QuestTracker";
|
|
27101
27254
|
}
|
|
27102
27255
|
});
|
|
@@ -27109,7 +27262,7 @@ function formatTime2(seconds) {
|
|
|
27109
27262
|
return `${seconds}s`;
|
|
27110
27263
|
}
|
|
27111
27264
|
function PowerupSlots({
|
|
27112
|
-
active,
|
|
27265
|
+
active = DEFAULT_ACTIVE_POWERUPS,
|
|
27113
27266
|
maxSlots = 4,
|
|
27114
27267
|
className
|
|
27115
27268
|
}) {
|
|
@@ -27154,6 +27307,7 @@ function PowerupSlots({
|
|
|
27154
27307
|
))
|
|
27155
27308
|
] });
|
|
27156
27309
|
}
|
|
27310
|
+
var DEFAULT_ACTIVE_POWERUPS;
|
|
27157
27311
|
var init_PowerupSlots = __esm({
|
|
27158
27312
|
"components/game/molecules/PowerupSlots.tsx"() {
|
|
27159
27313
|
"use client";
|
|
@@ -27162,6 +27316,10 @@ var init_PowerupSlots = __esm({
|
|
|
27162
27316
|
init_Box();
|
|
27163
27317
|
init_Stack();
|
|
27164
27318
|
init_Typography();
|
|
27319
|
+
DEFAULT_ACTIVE_POWERUPS = [
|
|
27320
|
+
{ id: "pw1", icon: "zap", label: "Speed Boost", remainingTime: 12 },
|
|
27321
|
+
{ id: "pw2", icon: "shield", label: "Iron Shield", remainingTime: 30 }
|
|
27322
|
+
];
|
|
27165
27323
|
PowerupSlots.displayName = "PowerupSlots";
|
|
27166
27324
|
}
|
|
27167
27325
|
});
|
|
@@ -27173,7 +27331,7 @@ function GameCanvas2D({
|
|
|
27173
27331
|
tickEvent,
|
|
27174
27332
|
drawEvent,
|
|
27175
27333
|
fps = 60,
|
|
27176
|
-
backgroundImage = "
|
|
27334
|
+
backgroundImage = "",
|
|
27177
27335
|
assetBaseUrl = "https://almadar-kflow-assets.web.app/shared/",
|
|
27178
27336
|
className
|
|
27179
27337
|
}) {
|
|
@@ -27277,10 +27435,10 @@ var init_GameCanvas2D = __esm({
|
|
|
27277
27435
|
}
|
|
27278
27436
|
});
|
|
27279
27437
|
function HealthPanel({
|
|
27280
|
-
current,
|
|
27281
|
-
max,
|
|
27282
|
-
shield,
|
|
27283
|
-
label,
|
|
27438
|
+
current = 75,
|
|
27439
|
+
max = 100,
|
|
27440
|
+
shield = 20,
|
|
27441
|
+
label = "Player HP",
|
|
27284
27442
|
effects,
|
|
27285
27443
|
showNumbers = true,
|
|
27286
27444
|
size = "md",
|
|
@@ -27398,11 +27556,11 @@ var init_HealthPanel = __esm({
|
|
|
27398
27556
|
}
|
|
27399
27557
|
});
|
|
27400
27558
|
function ScoreBoard({
|
|
27401
|
-
score: rawScore,
|
|
27402
|
-
highScore: rawHighScore,
|
|
27403
|
-
combo: rawCombo,
|
|
27404
|
-
multiplier: rawMultiplier,
|
|
27405
|
-
level: rawLevel,
|
|
27559
|
+
score: rawScore = 4200,
|
|
27560
|
+
highScore: rawHighScore = 8750,
|
|
27561
|
+
combo: rawCombo = 3,
|
|
27562
|
+
multiplier: rawMultiplier = 2,
|
|
27563
|
+
level: rawLevel = 4,
|
|
27406
27564
|
className
|
|
27407
27565
|
}) {
|
|
27408
27566
|
const score = rawScore ?? 0;
|
|
@@ -27475,7 +27633,7 @@ var init_ScoreBoard = __esm({
|
|
|
27475
27633
|
}
|
|
27476
27634
|
});
|
|
27477
27635
|
function ResourceBar({
|
|
27478
|
-
resources,
|
|
27636
|
+
resources = DEFAULT_RESOURCES,
|
|
27479
27637
|
size = "md",
|
|
27480
27638
|
className
|
|
27481
27639
|
}) {
|
|
@@ -27501,21 +27659,27 @@ function ResourceBar({
|
|
|
27501
27659
|
}
|
|
27502
27660
|
);
|
|
27503
27661
|
}
|
|
27662
|
+
var DEFAULT_RESOURCES;
|
|
27504
27663
|
var init_ResourceBar = __esm({
|
|
27505
27664
|
"components/game/molecules/ResourceBar.tsx"() {
|
|
27506
27665
|
"use client";
|
|
27507
27666
|
init_cn();
|
|
27508
27667
|
init_StatBadge();
|
|
27509
27668
|
init_Box();
|
|
27669
|
+
DEFAULT_RESOURCES = [
|
|
27670
|
+
{ icon: "coins", label: "Gold", value: 320 },
|
|
27671
|
+
{ icon: "zap", label: "Energy", value: 7, max: 10 },
|
|
27672
|
+
{ icon: "gem", label: "Crystals", value: 15 }
|
|
27673
|
+
];
|
|
27510
27674
|
ResourceBar.displayName = "ResourceBar";
|
|
27511
27675
|
}
|
|
27512
27676
|
});
|
|
27513
27677
|
function TurnPanel({
|
|
27514
|
-
currentTurn,
|
|
27515
|
-
maxTurns,
|
|
27516
|
-
phase,
|
|
27517
|
-
activeTeam,
|
|
27518
|
-
actions,
|
|
27678
|
+
currentTurn = 3,
|
|
27679
|
+
maxTurns = 10,
|
|
27680
|
+
phase = "Attack",
|
|
27681
|
+
activeTeam = "Heroes",
|
|
27682
|
+
actions = DEFAULT_TURN_ACTIONS,
|
|
27519
27683
|
className
|
|
27520
27684
|
}) {
|
|
27521
27685
|
const eventBus = useEventBus();
|
|
@@ -27560,6 +27724,7 @@ function TurnPanel({
|
|
|
27560
27724
|
}
|
|
27561
27725
|
);
|
|
27562
27726
|
}
|
|
27727
|
+
var DEFAULT_TURN_ACTIONS;
|
|
27563
27728
|
var init_TurnPanel = __esm({
|
|
27564
27729
|
"components/game/molecules/TurnPanel.tsx"() {
|
|
27565
27730
|
"use client";
|
|
@@ -27568,15 +27733,19 @@ var init_TurnPanel = __esm({
|
|
|
27568
27733
|
init_Button();
|
|
27569
27734
|
init_Box();
|
|
27570
27735
|
init_useEventBus();
|
|
27736
|
+
DEFAULT_TURN_ACTIONS = [
|
|
27737
|
+
{ label: "End Turn", icon: "skip-forward", event: "END_TURN" },
|
|
27738
|
+
{ label: "Forfeit", icon: "flag", event: "FORFEIT", disabled: false }
|
|
27739
|
+
];
|
|
27571
27740
|
TurnPanel.displayName = "TurnPanel";
|
|
27572
27741
|
}
|
|
27573
27742
|
});
|
|
27574
27743
|
function EnemyPlate({
|
|
27575
|
-
name,
|
|
27576
|
-
health,
|
|
27577
|
-
maxHealth,
|
|
27578
|
-
level,
|
|
27579
|
-
effects,
|
|
27744
|
+
name = "Shadow Guard",
|
|
27745
|
+
health = 80,
|
|
27746
|
+
maxHealth = 100,
|
|
27747
|
+
level = 5,
|
|
27748
|
+
effects = DEFAULT_ENEMY_EFFECTS,
|
|
27580
27749
|
className
|
|
27581
27750
|
}) {
|
|
27582
27751
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -27642,7 +27811,7 @@ function EnemyPlate({
|
|
|
27642
27811
|
}
|
|
27643
27812
|
);
|
|
27644
27813
|
}
|
|
27645
|
-
var effectVariantMap2;
|
|
27814
|
+
var effectVariantMap2, DEFAULT_ENEMY_EFFECTS;
|
|
27646
27815
|
var init_EnemyPlate = __esm({
|
|
27647
27816
|
"components/game/molecules/EnemyPlate.tsx"() {
|
|
27648
27817
|
"use client";
|
|
@@ -27656,12 +27825,15 @@ var init_EnemyPlate = __esm({
|
|
|
27656
27825
|
debuff: "danger",
|
|
27657
27826
|
neutral: "neutral"
|
|
27658
27827
|
};
|
|
27828
|
+
DEFAULT_ENEMY_EFFECTS = [
|
|
27829
|
+
{ icon: "flame", label: "Burn", variant: "debuff" }
|
|
27830
|
+
];
|
|
27659
27831
|
EnemyPlate.displayName = "EnemyPlate";
|
|
27660
27832
|
}
|
|
27661
27833
|
});
|
|
27662
27834
|
function UnitCommandBar({
|
|
27663
|
-
commands,
|
|
27664
|
-
selectedUnitId,
|
|
27835
|
+
commands = DEFAULT_COMMANDS,
|
|
27836
|
+
selectedUnitId = "unit-1",
|
|
27665
27837
|
className
|
|
27666
27838
|
}) {
|
|
27667
27839
|
const eventBus = useEventBus();
|
|
@@ -27704,6 +27876,7 @@ function UnitCommandBar({
|
|
|
27704
27876
|
}
|
|
27705
27877
|
);
|
|
27706
27878
|
}
|
|
27879
|
+
var DEFAULT_COMMANDS;
|
|
27707
27880
|
var init_UnitCommandBar = __esm({
|
|
27708
27881
|
"components/game/molecules/UnitCommandBar.tsx"() {
|
|
27709
27882
|
"use client";
|
|
@@ -27712,6 +27885,12 @@ var init_UnitCommandBar = __esm({
|
|
|
27712
27885
|
init_Box();
|
|
27713
27886
|
init_Typography();
|
|
27714
27887
|
init_useEventBus();
|
|
27888
|
+
DEFAULT_COMMANDS = [
|
|
27889
|
+
{ label: "Move", icon: "move", event: "MOVE", hotkey: "M" },
|
|
27890
|
+
{ label: "Attack", icon: "sword", event: "ATTACK", hotkey: "A" },
|
|
27891
|
+
{ label: "Defend", icon: "shield", event: "DEFEND", hotkey: "D" },
|
|
27892
|
+
{ label: "Wait", icon: "clock", event: "WAIT", hotkey: "W" }
|
|
27893
|
+
];
|
|
27715
27894
|
UnitCommandBar.displayName = "UnitCommandBar";
|
|
27716
27895
|
}
|
|
27717
27896
|
});
|
|
@@ -27745,7 +27924,7 @@ function GameHud({
|
|
|
27745
27924
|
className,
|
|
27746
27925
|
transparent = true
|
|
27747
27926
|
}) {
|
|
27748
|
-
const rawStats = propStats ?? items ?? (elements && Array.isArray(elements) ? convertElementsToStats(elements) :
|
|
27927
|
+
const rawStats = propStats ?? items ?? (elements && Array.isArray(elements) ? convertElementsToStats(elements) : DEFAULT_HUD_STATS);
|
|
27749
27928
|
const stats = Array.isArray(rawStats) ? rawStats : [];
|
|
27750
27929
|
const position = propPosition ?? "corners";
|
|
27751
27930
|
if (position === "corners") {
|
|
@@ -27770,7 +27949,7 @@ function GameHud({
|
|
|
27770
27949
|
}
|
|
27771
27950
|
);
|
|
27772
27951
|
}
|
|
27773
|
-
var positionMap;
|
|
27952
|
+
var positionMap, DEFAULT_HUD_STATS;
|
|
27774
27953
|
var init_GameHud = __esm({
|
|
27775
27954
|
"components/game/molecules/GameHud.tsx"() {
|
|
27776
27955
|
init_cn();
|
|
@@ -27780,11 +27959,17 @@ var init_GameHud = __esm({
|
|
|
27780
27959
|
bottom: "bottom-0 left-0 right-0 flex justify-between items-end p-4",
|
|
27781
27960
|
corners: "inset-0 pointer-events-none"
|
|
27782
27961
|
};
|
|
27962
|
+
DEFAULT_HUD_STATS = [
|
|
27963
|
+
{ label: "HP", value: 75, max: 100, format: "bar", variant: "danger" },
|
|
27964
|
+
{ label: "MP", value: 40, max: 60, format: "bar", variant: "primary" },
|
|
27965
|
+
{ label: "Score", value: 4200, format: "number", variant: "warning" },
|
|
27966
|
+
{ label: "Level", value: 4, format: "number", variant: "default" }
|
|
27967
|
+
];
|
|
27783
27968
|
GameHud.displayName = "GameHud";
|
|
27784
27969
|
}
|
|
27785
27970
|
});
|
|
27786
27971
|
function DialogueBox({
|
|
27787
|
-
dialogue,
|
|
27972
|
+
dialogue = DEFAULT_DIALOGUE,
|
|
27788
27973
|
typewriterSpeed = 30,
|
|
27789
27974
|
position = "bottom",
|
|
27790
27975
|
onComplete,
|
|
@@ -27967,17 +28152,27 @@ function DialogueBox({
|
|
|
27967
28152
|
}
|
|
27968
28153
|
);
|
|
27969
28154
|
}
|
|
28155
|
+
var DEFAULT_DIALOGUE;
|
|
27970
28156
|
var init_DialogueBox = __esm({
|
|
27971
28157
|
"components/game/molecules/DialogueBox.tsx"() {
|
|
27972
28158
|
"use client";
|
|
27973
28159
|
init_cn();
|
|
27974
28160
|
init_useEventBus();
|
|
28161
|
+
DEFAULT_DIALOGUE = {
|
|
28162
|
+
speaker: "Village Elder",
|
|
28163
|
+
text: "The ancient ruins hold great power \u2014 and great danger. Choose your path wisely, traveler.",
|
|
28164
|
+
choices: [
|
|
28165
|
+
{ text: "I am ready. Lead the way.", action: "ACCEPT_QUEST" },
|
|
28166
|
+
{ text: "Tell me more about the ruins.", action: "ASK_LORE" },
|
|
28167
|
+
{ text: "Perhaps another time.", action: "DECLINE" }
|
|
28168
|
+
]
|
|
28169
|
+
};
|
|
27975
28170
|
}
|
|
27976
28171
|
});
|
|
27977
28172
|
function InventoryPanel({
|
|
27978
|
-
items,
|
|
27979
|
-
slots,
|
|
27980
|
-
columns,
|
|
28173
|
+
items = DEFAULT_INVENTORY_ITEMS,
|
|
28174
|
+
slots = 12,
|
|
28175
|
+
columns = 4,
|
|
27981
28176
|
selectedSlot,
|
|
27982
28177
|
onSelectSlot,
|
|
27983
28178
|
onUseItem,
|
|
@@ -28125,25 +28320,31 @@ function InventoryPanel({
|
|
|
28125
28320
|
)
|
|
28126
28321
|
] });
|
|
28127
28322
|
}
|
|
28323
|
+
var DEFAULT_INVENTORY_ITEMS;
|
|
28128
28324
|
var init_InventoryPanel = __esm({
|
|
28129
28325
|
"components/game/molecules/InventoryPanel.tsx"() {
|
|
28130
28326
|
"use client";
|
|
28131
28327
|
init_cn();
|
|
28132
28328
|
init_useEventBus();
|
|
28329
|
+
DEFAULT_INVENTORY_ITEMS = [
|
|
28330
|
+
{ id: "item-1", type: "weapon", name: "Iron Sword", quantity: 1, description: "A sturdy iron blade." },
|
|
28331
|
+
{ id: "item-2", type: "potion", name: "Health Potion", quantity: 3, description: "Restores 50 HP." },
|
|
28332
|
+
{ id: "item-3", type: "armor", name: "Leather Helm", quantity: 1, description: "Light head protection." }
|
|
28333
|
+
];
|
|
28133
28334
|
}
|
|
28134
28335
|
});
|
|
28135
28336
|
function GameMenu({
|
|
28136
|
-
title,
|
|
28337
|
+
title = "Epic Quest",
|
|
28137
28338
|
subtitle,
|
|
28138
28339
|
options,
|
|
28139
28340
|
menuItems,
|
|
28140
28341
|
onSelect,
|
|
28141
28342
|
eventBus: eventBusProp,
|
|
28142
28343
|
background,
|
|
28143
|
-
logo,
|
|
28344
|
+
logo = "",
|
|
28144
28345
|
className
|
|
28145
28346
|
}) {
|
|
28146
|
-
const resolvedOptions = options ?? menuItems ??
|
|
28347
|
+
const resolvedOptions = options ?? menuItems ?? DEFAULT_MENU_OPTIONS;
|
|
28147
28348
|
let eventBusFromHook = null;
|
|
28148
28349
|
try {
|
|
28149
28350
|
eventBusFromHook = useEventBus();
|
|
@@ -28224,7 +28425,7 @@ function GameMenu({
|
|
|
28224
28425
|
}
|
|
28225
28426
|
);
|
|
28226
28427
|
}
|
|
28227
|
-
var variantMap3;
|
|
28428
|
+
var variantMap3, DEFAULT_MENU_OPTIONS;
|
|
28228
28429
|
var init_GameMenu = __esm({
|
|
28229
28430
|
"components/game/molecules/GameMenu.tsx"() {
|
|
28230
28431
|
"use client";
|
|
@@ -28235,6 +28436,11 @@ var init_GameMenu = __esm({
|
|
|
28235
28436
|
secondary: "bg-[var(--color-surface,#374151)] hover:bg-muted text-[var(--color-foreground)] border-muted",
|
|
28236
28437
|
ghost: "bg-transparent hover:bg-foreground/10 text-[var(--color-foreground)] border-foreground/20"
|
|
28237
28438
|
};
|
|
28439
|
+
DEFAULT_MENU_OPTIONS = [
|
|
28440
|
+
{ label: "New Game", event: "NEW_GAME", variant: "primary" },
|
|
28441
|
+
{ label: "Continue", event: "CONTINUE", variant: "secondary" },
|
|
28442
|
+
{ label: "Settings", event: "SETTINGS", variant: "ghost" }
|
|
28443
|
+
];
|
|
28238
28444
|
GameMenu.displayName = "GameMenu";
|
|
28239
28445
|
}
|
|
28240
28446
|
});
|
|
@@ -28245,19 +28451,19 @@ function formatTime3(ms) {
|
|
|
28245
28451
|
return `${minutes}:${remainingSeconds.toString().padStart(2, "0")}`;
|
|
28246
28452
|
}
|
|
28247
28453
|
function GameOverScreen({
|
|
28248
|
-
title,
|
|
28454
|
+
title = "Game Over",
|
|
28249
28455
|
message,
|
|
28250
|
-
stats =
|
|
28456
|
+
stats = DEFAULT_GAME_OVER_STATS,
|
|
28251
28457
|
actions,
|
|
28252
28458
|
menuItems,
|
|
28253
28459
|
onAction,
|
|
28254
28460
|
eventBus: eventBusProp,
|
|
28255
|
-
variant = "
|
|
28256
|
-
highScore,
|
|
28257
|
-
currentScore,
|
|
28461
|
+
variant = "defeat",
|
|
28462
|
+
highScore = 2e3,
|
|
28463
|
+
currentScore = 1240,
|
|
28258
28464
|
className
|
|
28259
28465
|
}) {
|
|
28260
|
-
const resolvedActions = actions ?? menuItems ??
|
|
28466
|
+
const resolvedActions = actions ?? menuItems ?? DEFAULT_GAME_OVER_ACTIONS;
|
|
28261
28467
|
let eventBusFromHook = null;
|
|
28262
28468
|
try {
|
|
28263
28469
|
eventBusFromHook = useEventBus();
|
|
@@ -28344,7 +28550,7 @@ function GameOverScreen({
|
|
|
28344
28550
|
}
|
|
28345
28551
|
);
|
|
28346
28552
|
}
|
|
28347
|
-
var variantColors, buttonVariants;
|
|
28553
|
+
var variantColors, buttonVariants, DEFAULT_GAME_OVER_ACTIONS, DEFAULT_GAME_OVER_STATS;
|
|
28348
28554
|
var init_GameOverScreen = __esm({
|
|
28349
28555
|
"components/game/molecules/GameOverScreen.tsx"() {
|
|
28350
28556
|
"use client";
|
|
@@ -28373,21 +28579,35 @@ var init_GameOverScreen = __esm({
|
|
|
28373
28579
|
secondary: "bg-[var(--color-surface,#374151)] hover:bg-muted text-[var(--color-foreground)] border-muted",
|
|
28374
28580
|
ghost: "bg-transparent hover:bg-foreground/10 text-[var(--color-foreground)] border-foreground/20"
|
|
28375
28581
|
};
|
|
28582
|
+
DEFAULT_GAME_OVER_ACTIONS = [
|
|
28583
|
+
{ label: "Play Again", event: "RESTART", variant: "primary" },
|
|
28584
|
+
{ label: "Main Menu", event: "MAIN_MENU", variant: "secondary" }
|
|
28585
|
+
];
|
|
28586
|
+
DEFAULT_GAME_OVER_STATS = [
|
|
28587
|
+
{ label: "Score", value: 1240 },
|
|
28588
|
+
{ label: "Enemies Defeated", value: 8 },
|
|
28589
|
+
{ label: "Time", value: 93e3, format: "time" }
|
|
28590
|
+
];
|
|
28376
28591
|
GameOverScreen.displayName = "GameOverScreen";
|
|
28377
28592
|
}
|
|
28378
28593
|
});
|
|
28379
28594
|
function PlatformerCanvas({
|
|
28380
28595
|
player,
|
|
28381
|
-
platforms = [
|
|
28596
|
+
platforms = [
|
|
28597
|
+
{ x: 0, y: 368, width: 800, height: 32, type: "ground" },
|
|
28598
|
+
{ x: 150, y: 280, width: 160, height: 16, type: "platform" },
|
|
28599
|
+
{ x: 420, y: 220, width: 160, height: 16, type: "platform" },
|
|
28600
|
+
{ x: 620, y: 300, width: 140, height: 16, type: "platform" }
|
|
28601
|
+
],
|
|
28382
28602
|
worldWidth = 800,
|
|
28383
28603
|
worldHeight = 400,
|
|
28384
28604
|
canvasWidth = 800,
|
|
28385
28605
|
canvasHeight = 400,
|
|
28386
28606
|
followCamera = true,
|
|
28387
|
-
bgColor,
|
|
28607
|
+
bgColor = "#5c94fc",
|
|
28388
28608
|
playerSprite = "https://almadar-kflow-assets.web.app/shared/platformer/characters/platformChar_idle.png",
|
|
28389
28609
|
tileSprites,
|
|
28390
|
-
backgroundImage = "
|
|
28610
|
+
backgroundImage = "",
|
|
28391
28611
|
assetBaseUrl = "https://almadar-kflow-assets.web.app/shared/platformer/",
|
|
28392
28612
|
leftEvent = "MOVE_LEFT",
|
|
28393
28613
|
rightEvent = "MOVE_RIGHT",
|
|
@@ -28435,10 +28655,10 @@ function PlatformerCanvas({
|
|
|
28435
28655
|
};
|
|
28436
28656
|
}, []);
|
|
28437
28657
|
const resolvedPlayer = player ?? {
|
|
28438
|
-
x:
|
|
28439
|
-
y:
|
|
28440
|
-
width:
|
|
28441
|
-
height:
|
|
28658
|
+
x: 80,
|
|
28659
|
+
y: 336,
|
|
28660
|
+
width: 32,
|
|
28661
|
+
height: 48,
|
|
28442
28662
|
facingRight: true
|
|
28443
28663
|
};
|
|
28444
28664
|
const handleKeyDown = React83.useCallback((e) => {
|
|
@@ -47117,12 +47337,12 @@ function WorldMapTemplate({
|
|
|
47117
47337
|
entity,
|
|
47118
47338
|
scale = 0.4,
|
|
47119
47339
|
unitScale = 2.5,
|
|
47120
|
-
diamondTopY,
|
|
47340
|
+
diamondTopY = 374,
|
|
47121
47341
|
allowMoveAllHeroes = false,
|
|
47122
|
-
tiles,
|
|
47123
|
-
units,
|
|
47124
|
-
features,
|
|
47125
|
-
assetManifest,
|
|
47342
|
+
tiles = DEFAULT_WORLDMAP_TILES,
|
|
47343
|
+
units = DEFAULT_WORLDMAP_UNITS,
|
|
47344
|
+
features = DEFAULT_WORLDMAP_FEATURES,
|
|
47345
|
+
assetManifest = DEFAULT_WORLDMAP_MANIFEST,
|
|
47126
47346
|
className
|
|
47127
47347
|
}) {
|
|
47128
47348
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -47145,9 +47365,63 @@ function WorldMapTemplate({
|
|
|
47145
47365
|
}
|
|
47146
47366
|
);
|
|
47147
47367
|
}
|
|
47368
|
+
var CDN3, DEFAULT_WORLDMAP_TILES, DEFAULT_WORLDMAP_UNITS, DEFAULT_WORLDMAP_FEATURES, DEFAULT_WORLDMAP_MANIFEST;
|
|
47148
47369
|
var init_WorldMapTemplate = __esm({
|
|
47149
47370
|
"components/game/templates/WorldMapTemplate.tsx"() {
|
|
47150
47371
|
init_WorldMapBoard();
|
|
47372
|
+
CDN3 = "https://almadar-kflow-assets.web.app/shared";
|
|
47373
|
+
DEFAULT_WORLDMAP_TILES = [
|
|
47374
|
+
{ x: 0, y: 0, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
|
|
47375
|
+
{ x: 1, y: 0, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
|
|
47376
|
+
{ x: 2, y: 0, terrain: "water", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_11.png` },
|
|
47377
|
+
{ x: 3, y: 0, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
|
|
47378
|
+
{ x: 4, y: 0, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
|
|
47379
|
+
{ x: 0, y: 1, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
|
|
47380
|
+
{ x: 1, y: 1, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
|
|
47381
|
+
{ x: 2, y: 1, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
|
|
47382
|
+
{ x: 3, y: 1, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
|
|
47383
|
+
{ x: 4, y: 1, terrain: "water", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_11.png` },
|
|
47384
|
+
{ x: 0, y: 2, terrain: "water", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_11.png` },
|
|
47385
|
+
{ x: 1, y: 2, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
|
|
47386
|
+
{ x: 2, y: 2, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_03.png` },
|
|
47387
|
+
{ x: 3, y: 2, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
|
|
47388
|
+
{ x: 4, y: 2, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
|
|
47389
|
+
{ x: 0, y: 3, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
|
|
47390
|
+
{ x: 1, y: 3, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
|
|
47391
|
+
{ x: 2, y: 3, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
|
|
47392
|
+
{ x: 3, y: 3, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_03.png` },
|
|
47393
|
+
{ x: 4, y: 3, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
|
|
47394
|
+
{ x: 0, y: 4, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
|
|
47395
|
+
{ x: 1, y: 4, terrain: "water", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_11.png` },
|
|
47396
|
+
{ x: 2, y: 4, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
|
|
47397
|
+
{ x: 3, y: 4, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
|
|
47398
|
+
{ x: 4, y: 4, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` }
|
|
47399
|
+
];
|
|
47400
|
+
DEFAULT_WORLDMAP_UNITS = [
|
|
47401
|
+
{ 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` },
|
|
47402
|
+
{ 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` }
|
|
47403
|
+
];
|
|
47404
|
+
DEFAULT_WORLDMAP_FEATURES = [
|
|
47405
|
+
{ id: "f1", x: 2, y: 2, type: "capital", sprite: `${CDN3}/scenes/world/capital.png` },
|
|
47406
|
+
{ id: "f2", x: 4, y: 2, type: "power_node", sprite: `${CDN3}/world-map/power_node.png` }
|
|
47407
|
+
];
|
|
47408
|
+
DEFAULT_WORLDMAP_MANIFEST = {
|
|
47409
|
+
baseUrl: CDN3,
|
|
47410
|
+
terrains: {
|
|
47411
|
+
grass: "/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png",
|
|
47412
|
+
water: "/isometric-blocks/PNG/Platformer tiles/platformerTile_11.png",
|
|
47413
|
+
mountain: "/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png",
|
|
47414
|
+
road: "/isometric-blocks/PNG/Platformer tiles/platformerTile_03.png"
|
|
47415
|
+
},
|
|
47416
|
+
units: {
|
|
47417
|
+
hero: "/sprite-sheets/amir-sprite-sheet-se.png",
|
|
47418
|
+
scout: "/sprite-sheets/archivist-sprite-sheet-se.png"
|
|
47419
|
+
},
|
|
47420
|
+
features: {
|
|
47421
|
+
capital: "/scenes/world/capital.png",
|
|
47422
|
+
power_node: "/world-map/power_node.png"
|
|
47423
|
+
}
|
|
47424
|
+
};
|
|
47151
47425
|
WorldMapTemplate.displayName = "WorldMapTemplate";
|
|
47152
47426
|
}
|
|
47153
47427
|
});
|