@almadar/ui 5.28.2 → 5.28.3
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 +64 -26
- package/dist/avl/index.js +64 -26
- package/dist/components/game/organisms/BattleBoard.d.ts +18 -1
- package/dist/components/game/organisms/CanvasEffect.d.ts +1 -1
- package/dist/components/game/organisms/CastleBoard.d.ts +18 -3
- package/dist/components/game/organisms/WorldMapBoard.d.ts +17 -1
- package/dist/components/game/templates/CastleTemplate.d.ts +11 -1
- package/dist/components/game/templates/WorldMapTemplate.d.ts +11 -1
- package/dist/components/index.cjs +64 -26
- package/dist/components/index.js +64 -26
- package/dist/providers/index.cjs +64 -26
- package/dist/providers/index.js +64 -26
- package/dist/runtime/index.cjs +64 -26
- package/dist/runtime/index.js +64 -26
- package/package.json +1 -1
package/dist/providers/index.cjs
CHANGED
|
@@ -7806,7 +7806,7 @@ var init_DamageNumber = __esm({
|
|
|
7806
7806
|
function DialogueBubble({
|
|
7807
7807
|
speaker,
|
|
7808
7808
|
text,
|
|
7809
|
-
portrait = "https://almadar-kflow-assets.web.app/shared/characters/archetypes/
|
|
7809
|
+
portrait = "https://almadar-kflow-assets.web.app/shared/characters/archetypes/04_hero.png",
|
|
7810
7810
|
position = "bottom",
|
|
7811
7811
|
className
|
|
7812
7812
|
}) {
|
|
@@ -10760,7 +10760,7 @@ function IsometricCanvas({
|
|
|
10760
10760
|
// Rendering options
|
|
10761
10761
|
scale = 0.4,
|
|
10762
10762
|
debug: debug2 = false,
|
|
10763
|
-
backgroundImage,
|
|
10763
|
+
backgroundImage = "https://almadar-kflow-assets.web.app/shared/scenes/court.png",
|
|
10764
10764
|
showMinimap = true,
|
|
10765
10765
|
enableCamera = true,
|
|
10766
10766
|
unitScale = 1,
|
|
@@ -10775,7 +10775,7 @@ function IsometricCanvas({
|
|
|
10775
10775
|
// Tuning
|
|
10776
10776
|
diamondTopY: diamondTopYProp,
|
|
10777
10777
|
// Remote asset loading
|
|
10778
|
-
assetBaseUrl,
|
|
10778
|
+
assetBaseUrl = "https://almadar-kflow-assets.web.app/shared/",
|
|
10779
10779
|
assetManifest
|
|
10780
10780
|
}) {
|
|
10781
10781
|
const tilesProp = Array.isArray(_tilesPropRaw) ? _tilesPropRaw : [];
|
|
@@ -11534,6 +11534,10 @@ var init_boardEntity = __esm({
|
|
|
11534
11534
|
});
|
|
11535
11535
|
function BattleBoard({
|
|
11536
11536
|
entity,
|
|
11537
|
+
tiles: propTiles,
|
|
11538
|
+
units: propUnits,
|
|
11539
|
+
features: propFeatures,
|
|
11540
|
+
assetManifest: propAssetManifest,
|
|
11537
11541
|
scale = 0.45,
|
|
11538
11542
|
unitScale = 1,
|
|
11539
11543
|
header,
|
|
@@ -11559,11 +11563,11 @@ function BattleBoard({
|
|
|
11559
11563
|
className
|
|
11560
11564
|
}) {
|
|
11561
11565
|
const board = boardEntity(entity) ?? {};
|
|
11562
|
-
const tiles = Array.isArray(board.tiles) ? board.tiles : [];
|
|
11563
|
-
const features = Array.isArray(board.features) ? board.features : [];
|
|
11566
|
+
const tiles = propTiles ?? (Array.isArray(board.tiles) ? board.tiles : []);
|
|
11567
|
+
const features = propFeatures ?? (Array.isArray(board.features) ? board.features : []);
|
|
11564
11568
|
const boardWidth = num(board.boardWidth, 8);
|
|
11565
11569
|
const boardHeight = num(board.boardHeight, 6);
|
|
11566
|
-
const assetManifest = board.assetManifest;
|
|
11570
|
+
const assetManifest = propAssetManifest ?? board.assetManifest;
|
|
11567
11571
|
const backgroundImage = board.backgroundImage;
|
|
11568
11572
|
const units = rows(board.units);
|
|
11569
11573
|
const selectedUnitId = board.selectedUnitId ?? null;
|
|
@@ -11655,7 +11659,7 @@ function BattleBoard({
|
|
|
11655
11659
|
}, 16);
|
|
11656
11660
|
return () => clearInterval(interval);
|
|
11657
11661
|
}, []);
|
|
11658
|
-
const
|
|
11662
|
+
const derivedIsoUnits = React80.useMemo(() => {
|
|
11659
11663
|
return units.filter((u) => unitHealth(u) > 0).map((unit) => {
|
|
11660
11664
|
const id = str(unit.id);
|
|
11661
11665
|
const pos = movingPositions.get(id) ?? unitPosition(unit);
|
|
@@ -11679,6 +11683,7 @@ function BattleBoard({
|
|
|
11679
11683
|
};
|
|
11680
11684
|
});
|
|
11681
11685
|
}, [units, movingPositions]);
|
|
11686
|
+
const isoUnits = propUnits ?? derivedIsoUnits;
|
|
11682
11687
|
const maxY = Math.max(...tiles.map((t2) => t2.y), 0);
|
|
11683
11688
|
const baseOffsetX = (maxY + 1) * (TILE_WIDTH * scale / 2);
|
|
11684
11689
|
const tileToScreen = React80.useCallback(
|
|
@@ -18882,16 +18887,21 @@ function EmojiEffect({
|
|
|
18882
18887
|
}
|
|
18883
18888
|
);
|
|
18884
18889
|
}
|
|
18885
|
-
function CanvasEffect(
|
|
18890
|
+
function CanvasEffect({
|
|
18891
|
+
effectSpriteUrl = "https://almadar-kflow-assets.web.app/shared/effects/gas/gas00.png",
|
|
18892
|
+
assetBaseUrl = "https://almadar-kflow-assets.web.app/shared/effects/",
|
|
18893
|
+
...props
|
|
18894
|
+
}) {
|
|
18886
18895
|
const eventBus = useEventBus();
|
|
18887
|
-
const {
|
|
18896
|
+
const mergedProps = { effectSpriteUrl, assetBaseUrl, ...props };
|
|
18897
|
+
const { completeEvent, onComplete, ...rest } = mergedProps;
|
|
18888
18898
|
const handleComplete = React80.useCallback(() => {
|
|
18889
18899
|
if (completeEvent) eventBus.emit(`UI:${completeEvent}`, {});
|
|
18890
18900
|
onComplete?.();
|
|
18891
18901
|
}, [completeEvent, eventBus, onComplete]);
|
|
18892
18902
|
const enhancedProps = { ...rest, onComplete: handleComplete };
|
|
18893
|
-
if (
|
|
18894
|
-
return /* @__PURE__ */ jsxRuntime.jsx(CanvasEffectEngine, { ...enhancedProps, assetManifest:
|
|
18903
|
+
if (rest.assetManifest) {
|
|
18904
|
+
return /* @__PURE__ */ jsxRuntime.jsx(CanvasEffectEngine, { ...enhancedProps, assetManifest: rest.assetManifest });
|
|
18895
18905
|
}
|
|
18896
18906
|
return /* @__PURE__ */ jsxRuntime.jsx(EmojiEffect, { ...enhancedProps });
|
|
18897
18907
|
}
|
|
@@ -19676,6 +19686,10 @@ var init_CaseStudyOrganism = __esm({
|
|
|
19676
19686
|
});
|
|
19677
19687
|
function CastleBoard({
|
|
19678
19688
|
entity,
|
|
19689
|
+
tiles: propTiles,
|
|
19690
|
+
units: propUnits,
|
|
19691
|
+
features: propFeatures,
|
|
19692
|
+
assetManifest: propAssetManifest,
|
|
19679
19693
|
scale = 0.45,
|
|
19680
19694
|
header,
|
|
19681
19695
|
sidePanel,
|
|
@@ -19691,10 +19705,10 @@ function CastleBoard({
|
|
|
19691
19705
|
}) {
|
|
19692
19706
|
const eventBus = useEventBus();
|
|
19693
19707
|
const resolved = boardEntity(entity);
|
|
19694
|
-
const tiles = Array.isArray(resolved?.tiles) ? resolved.tiles : [];
|
|
19695
|
-
const features = Array.isArray(resolved?.features) ? resolved.features : [];
|
|
19696
|
-
const units = Array.isArray(resolved?.units) ? resolved.units : [];
|
|
19697
|
-
const assetManifest = resolved?.assetManifest;
|
|
19708
|
+
const tiles = propTiles ?? (Array.isArray(resolved?.tiles) ? resolved.tiles : []);
|
|
19709
|
+
const features = propFeatures ?? (Array.isArray(resolved?.features) ? resolved.features : []);
|
|
19710
|
+
const units = propUnits ?? (Array.isArray(resolved?.units) ? resolved.units : []);
|
|
19711
|
+
const assetManifest = propAssetManifest ?? resolved?.assetManifest;
|
|
19698
19712
|
const backgroundImage = resolved?.backgroundImage;
|
|
19699
19713
|
const [hoveredTile, setHoveredTile] = React80.useState(null);
|
|
19700
19714
|
const [selectedFeature, setSelectedFeature] = React80.useState(null);
|
|
@@ -19797,14 +19811,22 @@ var init_CastleBoard = __esm({
|
|
|
19797
19811
|
function CastleTemplate({
|
|
19798
19812
|
entity,
|
|
19799
19813
|
scale = 0.45,
|
|
19814
|
+
tiles,
|
|
19815
|
+
units,
|
|
19816
|
+
features,
|
|
19817
|
+
assetManifest,
|
|
19800
19818
|
className
|
|
19801
19819
|
}) {
|
|
19802
19820
|
const resolved = entity && typeof entity === "object" && !Array.isArray(entity) ? entity : void 0;
|
|
19803
|
-
if (!resolved) return null;
|
|
19821
|
+
if (!resolved && !tiles && !units && !features && !assetManifest) return null;
|
|
19804
19822
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
19805
19823
|
CastleBoard,
|
|
19806
19824
|
{
|
|
19807
19825
|
entity: resolved,
|
|
19826
|
+
tiles,
|
|
19827
|
+
units,
|
|
19828
|
+
features,
|
|
19829
|
+
assetManifest,
|
|
19808
19830
|
scale,
|
|
19809
19831
|
featureClickEvent: "FEATURE_CLICK",
|
|
19810
19832
|
unitClickEvent: "UNIT_CLICK",
|
|
@@ -26437,8 +26459,8 @@ function GameCanvas2D({
|
|
|
26437
26459
|
tickEvent,
|
|
26438
26460
|
drawEvent,
|
|
26439
26461
|
fps = 60,
|
|
26440
|
-
backgroundImage,
|
|
26441
|
-
assetBaseUrl = "",
|
|
26462
|
+
backgroundImage = "https://almadar-kflow-assets.web.app/shared/scenes/resonators.jpeg",
|
|
26463
|
+
assetBaseUrl = "https://almadar-kflow-assets.web.app/shared/",
|
|
26442
26464
|
className
|
|
26443
26465
|
}) {
|
|
26444
26466
|
const canvasRef = React80__namespace.useRef(null);
|
|
@@ -26502,6 +26524,9 @@ function GameCanvas2D({
|
|
|
26502
26524
|
const bgImg = loadImage(backgroundImageRef.current);
|
|
26503
26525
|
if (bgImg) {
|
|
26504
26526
|
ctx.drawImage(bgImg, 0, 0, widthRef.current, heightRef.current);
|
|
26527
|
+
} else {
|
|
26528
|
+
ctx.fillStyle = "#0f1420";
|
|
26529
|
+
ctx.fillRect(0, 0, widthRef.current, heightRef.current);
|
|
26505
26530
|
}
|
|
26506
26531
|
}
|
|
26507
26532
|
onDrawRef.current?.(ctx, frame);
|
|
@@ -27646,10 +27671,10 @@ function PlatformerCanvas({
|
|
|
27646
27671
|
canvasHeight = 400,
|
|
27647
27672
|
followCamera = true,
|
|
27648
27673
|
bgColor,
|
|
27649
|
-
playerSprite,
|
|
27674
|
+
playerSprite = "https://almadar-kflow-assets.web.app/shared/platformer/characters/platformChar_idle.png",
|
|
27650
27675
|
tileSprites,
|
|
27651
|
-
backgroundImage,
|
|
27652
|
-
assetBaseUrl = "",
|
|
27676
|
+
backgroundImage = "https://almadar-kflow-assets.web.app/shared/scenes/court.png",
|
|
27677
|
+
assetBaseUrl = "https://almadar-kflow-assets.web.app/shared/platformer/",
|
|
27653
27678
|
leftEvent = "MOVE_LEFT",
|
|
27654
27679
|
rightEvent = "MOVE_RIGHT",
|
|
27655
27680
|
jumpEvent = "JUMP",
|
|
@@ -45918,6 +45943,10 @@ function defaultIsInRange(from, to, range) {
|
|
|
45918
45943
|
}
|
|
45919
45944
|
function WorldMapBoard({
|
|
45920
45945
|
entity,
|
|
45946
|
+
tiles: propTiles,
|
|
45947
|
+
units: propUnits,
|
|
45948
|
+
features: propFeatures,
|
|
45949
|
+
assetManifest: propAssetManifest,
|
|
45921
45950
|
isLoading,
|
|
45922
45951
|
scale = 0.4,
|
|
45923
45952
|
unitScale = 2.5,
|
|
@@ -45946,16 +45975,16 @@ function WorldMapBoard({
|
|
|
45946
45975
|
const resolved = boardEntity(entity);
|
|
45947
45976
|
const hexes = rows(resolved?.hexes);
|
|
45948
45977
|
const heroes = rows(resolved?.heroes);
|
|
45949
|
-
const features = Array.isArray(resolved?.features) ? resolved.features : [];
|
|
45978
|
+
const features = propFeatures ?? (Array.isArray(resolved?.features) ? resolved.features : []);
|
|
45950
45979
|
const selectedHeroId = resolved?.selectedHeroId ?? null;
|
|
45951
|
-
const assetManifest = resolved?.assetManifest;
|
|
45980
|
+
const assetManifest = propAssetManifest ?? resolved?.assetManifest;
|
|
45952
45981
|
const backgroundImage = resolved?.backgroundImage;
|
|
45953
45982
|
const [hoveredTile, setHoveredTile] = React80.useState(null);
|
|
45954
45983
|
const selectedHero = React80.useMemo(
|
|
45955
45984
|
() => heroes.find((h) => str(h.id) === selectedHeroId) ?? null,
|
|
45956
45985
|
[heroes, selectedHeroId]
|
|
45957
45986
|
);
|
|
45958
|
-
const
|
|
45987
|
+
const derivedTiles = React80.useMemo(
|
|
45959
45988
|
() => hexes.map((hex) => ({
|
|
45960
45989
|
x: num(hex.x),
|
|
45961
45990
|
y: num(hex.y),
|
|
@@ -45964,8 +45993,9 @@ function WorldMapBoard({
|
|
|
45964
45993
|
})),
|
|
45965
45994
|
[hexes]
|
|
45966
45995
|
);
|
|
45996
|
+
const tiles = propTiles ?? derivedTiles;
|
|
45967
45997
|
const baseUnits = React80.useMemo(
|
|
45968
|
-
() => heroes.map((hero) => ({
|
|
45998
|
+
() => propUnits ?? heroes.map((hero) => ({
|
|
45969
45999
|
id: str(hero.id),
|
|
45970
46000
|
position: heroPosition(hero),
|
|
45971
46001
|
name: str(hero.name),
|
|
@@ -45974,7 +46004,7 @@ function WorldMapBoard({
|
|
|
45974
46004
|
maxHealth: 100,
|
|
45975
46005
|
sprite: hero.sprite == null ? void 0 : str(hero.sprite)
|
|
45976
46006
|
})),
|
|
45977
|
-
[heroes]
|
|
46007
|
+
[heroes, propUnits]
|
|
45978
46008
|
);
|
|
45979
46009
|
const MOVE_SPEED_MS_PER_TILE = 300;
|
|
45980
46010
|
const movementAnimRef = React80.useRef(null);
|
|
@@ -46184,12 +46214,20 @@ function WorldMapTemplate({
|
|
|
46184
46214
|
unitScale = 2.5,
|
|
46185
46215
|
diamondTopY,
|
|
46186
46216
|
allowMoveAllHeroes = false,
|
|
46217
|
+
tiles,
|
|
46218
|
+
units,
|
|
46219
|
+
features,
|
|
46220
|
+
assetManifest,
|
|
46187
46221
|
className
|
|
46188
46222
|
}) {
|
|
46189
46223
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
46190
46224
|
WorldMapBoard,
|
|
46191
46225
|
{
|
|
46192
46226
|
entity,
|
|
46227
|
+
tiles,
|
|
46228
|
+
units,
|
|
46229
|
+
features,
|
|
46230
|
+
assetManifest,
|
|
46193
46231
|
scale,
|
|
46194
46232
|
unitScale,
|
|
46195
46233
|
diamondTopY,
|
package/dist/providers/index.js
CHANGED
|
@@ -7757,7 +7757,7 @@ var init_DamageNumber = __esm({
|
|
|
7757
7757
|
function DialogueBubble({
|
|
7758
7758
|
speaker,
|
|
7759
7759
|
text,
|
|
7760
|
-
portrait = "https://almadar-kflow-assets.web.app/shared/characters/archetypes/
|
|
7760
|
+
portrait = "https://almadar-kflow-assets.web.app/shared/characters/archetypes/04_hero.png",
|
|
7761
7761
|
position = "bottom",
|
|
7762
7762
|
className
|
|
7763
7763
|
}) {
|
|
@@ -10711,7 +10711,7 @@ function IsometricCanvas({
|
|
|
10711
10711
|
// Rendering options
|
|
10712
10712
|
scale = 0.4,
|
|
10713
10713
|
debug: debug2 = false,
|
|
10714
|
-
backgroundImage,
|
|
10714
|
+
backgroundImage = "https://almadar-kflow-assets.web.app/shared/scenes/court.png",
|
|
10715
10715
|
showMinimap = true,
|
|
10716
10716
|
enableCamera = true,
|
|
10717
10717
|
unitScale = 1,
|
|
@@ -10726,7 +10726,7 @@ function IsometricCanvas({
|
|
|
10726
10726
|
// Tuning
|
|
10727
10727
|
diamondTopY: diamondTopYProp,
|
|
10728
10728
|
// Remote asset loading
|
|
10729
|
-
assetBaseUrl,
|
|
10729
|
+
assetBaseUrl = "https://almadar-kflow-assets.web.app/shared/",
|
|
10730
10730
|
assetManifest
|
|
10731
10731
|
}) {
|
|
10732
10732
|
const tilesProp = Array.isArray(_tilesPropRaw) ? _tilesPropRaw : [];
|
|
@@ -11485,6 +11485,10 @@ var init_boardEntity = __esm({
|
|
|
11485
11485
|
});
|
|
11486
11486
|
function BattleBoard({
|
|
11487
11487
|
entity,
|
|
11488
|
+
tiles: propTiles,
|
|
11489
|
+
units: propUnits,
|
|
11490
|
+
features: propFeatures,
|
|
11491
|
+
assetManifest: propAssetManifest,
|
|
11488
11492
|
scale = 0.45,
|
|
11489
11493
|
unitScale = 1,
|
|
11490
11494
|
header,
|
|
@@ -11510,11 +11514,11 @@ function BattleBoard({
|
|
|
11510
11514
|
className
|
|
11511
11515
|
}) {
|
|
11512
11516
|
const board = boardEntity(entity) ?? {};
|
|
11513
|
-
const tiles = Array.isArray(board.tiles) ? board.tiles : [];
|
|
11514
|
-
const features = Array.isArray(board.features) ? board.features : [];
|
|
11517
|
+
const tiles = propTiles ?? (Array.isArray(board.tiles) ? board.tiles : []);
|
|
11518
|
+
const features = propFeatures ?? (Array.isArray(board.features) ? board.features : []);
|
|
11515
11519
|
const boardWidth = num(board.boardWidth, 8);
|
|
11516
11520
|
const boardHeight = num(board.boardHeight, 6);
|
|
11517
|
-
const assetManifest = board.assetManifest;
|
|
11521
|
+
const assetManifest = propAssetManifest ?? board.assetManifest;
|
|
11518
11522
|
const backgroundImage = board.backgroundImage;
|
|
11519
11523
|
const units = rows(board.units);
|
|
11520
11524
|
const selectedUnitId = board.selectedUnitId ?? null;
|
|
@@ -11606,7 +11610,7 @@ function BattleBoard({
|
|
|
11606
11610
|
}, 16);
|
|
11607
11611
|
return () => clearInterval(interval);
|
|
11608
11612
|
}, []);
|
|
11609
|
-
const
|
|
11613
|
+
const derivedIsoUnits = useMemo(() => {
|
|
11610
11614
|
return units.filter((u) => unitHealth(u) > 0).map((unit) => {
|
|
11611
11615
|
const id = str(unit.id);
|
|
11612
11616
|
const pos = movingPositions.get(id) ?? unitPosition(unit);
|
|
@@ -11630,6 +11634,7 @@ function BattleBoard({
|
|
|
11630
11634
|
};
|
|
11631
11635
|
});
|
|
11632
11636
|
}, [units, movingPositions]);
|
|
11637
|
+
const isoUnits = propUnits ?? derivedIsoUnits;
|
|
11633
11638
|
const maxY = Math.max(...tiles.map((t2) => t2.y), 0);
|
|
11634
11639
|
const baseOffsetX = (maxY + 1) * (TILE_WIDTH * scale / 2);
|
|
11635
11640
|
const tileToScreen = useCallback(
|
|
@@ -18833,16 +18838,21 @@ function EmojiEffect({
|
|
|
18833
18838
|
}
|
|
18834
18839
|
);
|
|
18835
18840
|
}
|
|
18836
|
-
function CanvasEffect(
|
|
18841
|
+
function CanvasEffect({
|
|
18842
|
+
effectSpriteUrl = "https://almadar-kflow-assets.web.app/shared/effects/gas/gas00.png",
|
|
18843
|
+
assetBaseUrl = "https://almadar-kflow-assets.web.app/shared/effects/",
|
|
18844
|
+
...props
|
|
18845
|
+
}) {
|
|
18837
18846
|
const eventBus = useEventBus();
|
|
18838
|
-
const {
|
|
18847
|
+
const mergedProps = { effectSpriteUrl, assetBaseUrl, ...props };
|
|
18848
|
+
const { completeEvent, onComplete, ...rest } = mergedProps;
|
|
18839
18849
|
const handleComplete = useCallback(() => {
|
|
18840
18850
|
if (completeEvent) eventBus.emit(`UI:${completeEvent}`, {});
|
|
18841
18851
|
onComplete?.();
|
|
18842
18852
|
}, [completeEvent, eventBus, onComplete]);
|
|
18843
18853
|
const enhancedProps = { ...rest, onComplete: handleComplete };
|
|
18844
|
-
if (
|
|
18845
|
-
return /* @__PURE__ */ jsx(CanvasEffectEngine, { ...enhancedProps, assetManifest:
|
|
18854
|
+
if (rest.assetManifest) {
|
|
18855
|
+
return /* @__PURE__ */ jsx(CanvasEffectEngine, { ...enhancedProps, assetManifest: rest.assetManifest });
|
|
18846
18856
|
}
|
|
18847
18857
|
return /* @__PURE__ */ jsx(EmojiEffect, { ...enhancedProps });
|
|
18848
18858
|
}
|
|
@@ -19627,6 +19637,10 @@ var init_CaseStudyOrganism = __esm({
|
|
|
19627
19637
|
});
|
|
19628
19638
|
function CastleBoard({
|
|
19629
19639
|
entity,
|
|
19640
|
+
tiles: propTiles,
|
|
19641
|
+
units: propUnits,
|
|
19642
|
+
features: propFeatures,
|
|
19643
|
+
assetManifest: propAssetManifest,
|
|
19630
19644
|
scale = 0.45,
|
|
19631
19645
|
header,
|
|
19632
19646
|
sidePanel,
|
|
@@ -19642,10 +19656,10 @@ function CastleBoard({
|
|
|
19642
19656
|
}) {
|
|
19643
19657
|
const eventBus = useEventBus();
|
|
19644
19658
|
const resolved = boardEntity(entity);
|
|
19645
|
-
const tiles = Array.isArray(resolved?.tiles) ? resolved.tiles : [];
|
|
19646
|
-
const features = Array.isArray(resolved?.features) ? resolved.features : [];
|
|
19647
|
-
const units = Array.isArray(resolved?.units) ? resolved.units : [];
|
|
19648
|
-
const assetManifest = resolved?.assetManifest;
|
|
19659
|
+
const tiles = propTiles ?? (Array.isArray(resolved?.tiles) ? resolved.tiles : []);
|
|
19660
|
+
const features = propFeatures ?? (Array.isArray(resolved?.features) ? resolved.features : []);
|
|
19661
|
+
const units = propUnits ?? (Array.isArray(resolved?.units) ? resolved.units : []);
|
|
19662
|
+
const assetManifest = propAssetManifest ?? resolved?.assetManifest;
|
|
19649
19663
|
const backgroundImage = resolved?.backgroundImage;
|
|
19650
19664
|
const [hoveredTile, setHoveredTile] = useState(null);
|
|
19651
19665
|
const [selectedFeature, setSelectedFeature] = useState(null);
|
|
@@ -19748,14 +19762,22 @@ var init_CastleBoard = __esm({
|
|
|
19748
19762
|
function CastleTemplate({
|
|
19749
19763
|
entity,
|
|
19750
19764
|
scale = 0.45,
|
|
19765
|
+
tiles,
|
|
19766
|
+
units,
|
|
19767
|
+
features,
|
|
19768
|
+
assetManifest,
|
|
19751
19769
|
className
|
|
19752
19770
|
}) {
|
|
19753
19771
|
const resolved = entity && typeof entity === "object" && !Array.isArray(entity) ? entity : void 0;
|
|
19754
|
-
if (!resolved) return null;
|
|
19772
|
+
if (!resolved && !tiles && !units && !features && !assetManifest) return null;
|
|
19755
19773
|
return /* @__PURE__ */ jsx(
|
|
19756
19774
|
CastleBoard,
|
|
19757
19775
|
{
|
|
19758
19776
|
entity: resolved,
|
|
19777
|
+
tiles,
|
|
19778
|
+
units,
|
|
19779
|
+
features,
|
|
19780
|
+
assetManifest,
|
|
19759
19781
|
scale,
|
|
19760
19782
|
featureClickEvent: "FEATURE_CLICK",
|
|
19761
19783
|
unitClickEvent: "UNIT_CLICK",
|
|
@@ -26388,8 +26410,8 @@ function GameCanvas2D({
|
|
|
26388
26410
|
tickEvent,
|
|
26389
26411
|
drawEvent,
|
|
26390
26412
|
fps = 60,
|
|
26391
|
-
backgroundImage,
|
|
26392
|
-
assetBaseUrl = "",
|
|
26413
|
+
backgroundImage = "https://almadar-kflow-assets.web.app/shared/scenes/resonators.jpeg",
|
|
26414
|
+
assetBaseUrl = "https://almadar-kflow-assets.web.app/shared/",
|
|
26393
26415
|
className
|
|
26394
26416
|
}) {
|
|
26395
26417
|
const canvasRef = React80.useRef(null);
|
|
@@ -26453,6 +26475,9 @@ function GameCanvas2D({
|
|
|
26453
26475
|
const bgImg = loadImage(backgroundImageRef.current);
|
|
26454
26476
|
if (bgImg) {
|
|
26455
26477
|
ctx.drawImage(bgImg, 0, 0, widthRef.current, heightRef.current);
|
|
26478
|
+
} else {
|
|
26479
|
+
ctx.fillStyle = "#0f1420";
|
|
26480
|
+
ctx.fillRect(0, 0, widthRef.current, heightRef.current);
|
|
26456
26481
|
}
|
|
26457
26482
|
}
|
|
26458
26483
|
onDrawRef.current?.(ctx, frame);
|
|
@@ -27597,10 +27622,10 @@ function PlatformerCanvas({
|
|
|
27597
27622
|
canvasHeight = 400,
|
|
27598
27623
|
followCamera = true,
|
|
27599
27624
|
bgColor,
|
|
27600
|
-
playerSprite,
|
|
27625
|
+
playerSprite = "https://almadar-kflow-assets.web.app/shared/platformer/characters/platformChar_idle.png",
|
|
27601
27626
|
tileSprites,
|
|
27602
|
-
backgroundImage,
|
|
27603
|
-
assetBaseUrl = "",
|
|
27627
|
+
backgroundImage = "https://almadar-kflow-assets.web.app/shared/scenes/court.png",
|
|
27628
|
+
assetBaseUrl = "https://almadar-kflow-assets.web.app/shared/platformer/",
|
|
27604
27629
|
leftEvent = "MOVE_LEFT",
|
|
27605
27630
|
rightEvent = "MOVE_RIGHT",
|
|
27606
27631
|
jumpEvent = "JUMP",
|
|
@@ -45869,6 +45894,10 @@ function defaultIsInRange(from, to, range) {
|
|
|
45869
45894
|
}
|
|
45870
45895
|
function WorldMapBoard({
|
|
45871
45896
|
entity,
|
|
45897
|
+
tiles: propTiles,
|
|
45898
|
+
units: propUnits,
|
|
45899
|
+
features: propFeatures,
|
|
45900
|
+
assetManifest: propAssetManifest,
|
|
45872
45901
|
isLoading,
|
|
45873
45902
|
scale = 0.4,
|
|
45874
45903
|
unitScale = 2.5,
|
|
@@ -45897,16 +45926,16 @@ function WorldMapBoard({
|
|
|
45897
45926
|
const resolved = boardEntity(entity);
|
|
45898
45927
|
const hexes = rows(resolved?.hexes);
|
|
45899
45928
|
const heroes = rows(resolved?.heroes);
|
|
45900
|
-
const features = Array.isArray(resolved?.features) ? resolved.features : [];
|
|
45929
|
+
const features = propFeatures ?? (Array.isArray(resolved?.features) ? resolved.features : []);
|
|
45901
45930
|
const selectedHeroId = resolved?.selectedHeroId ?? null;
|
|
45902
|
-
const assetManifest = resolved?.assetManifest;
|
|
45931
|
+
const assetManifest = propAssetManifest ?? resolved?.assetManifest;
|
|
45903
45932
|
const backgroundImage = resolved?.backgroundImage;
|
|
45904
45933
|
const [hoveredTile, setHoveredTile] = useState(null);
|
|
45905
45934
|
const selectedHero = useMemo(
|
|
45906
45935
|
() => heroes.find((h) => str(h.id) === selectedHeroId) ?? null,
|
|
45907
45936
|
[heroes, selectedHeroId]
|
|
45908
45937
|
);
|
|
45909
|
-
const
|
|
45938
|
+
const derivedTiles = useMemo(
|
|
45910
45939
|
() => hexes.map((hex) => ({
|
|
45911
45940
|
x: num(hex.x),
|
|
45912
45941
|
y: num(hex.y),
|
|
@@ -45915,8 +45944,9 @@ function WorldMapBoard({
|
|
|
45915
45944
|
})),
|
|
45916
45945
|
[hexes]
|
|
45917
45946
|
);
|
|
45947
|
+
const tiles = propTiles ?? derivedTiles;
|
|
45918
45948
|
const baseUnits = useMemo(
|
|
45919
|
-
() => heroes.map((hero) => ({
|
|
45949
|
+
() => propUnits ?? heroes.map((hero) => ({
|
|
45920
45950
|
id: str(hero.id),
|
|
45921
45951
|
position: heroPosition(hero),
|
|
45922
45952
|
name: str(hero.name),
|
|
@@ -45925,7 +45955,7 @@ function WorldMapBoard({
|
|
|
45925
45955
|
maxHealth: 100,
|
|
45926
45956
|
sprite: hero.sprite == null ? void 0 : str(hero.sprite)
|
|
45927
45957
|
})),
|
|
45928
|
-
[heroes]
|
|
45958
|
+
[heroes, propUnits]
|
|
45929
45959
|
);
|
|
45930
45960
|
const MOVE_SPEED_MS_PER_TILE = 300;
|
|
45931
45961
|
const movementAnimRef = useRef(null);
|
|
@@ -46135,12 +46165,20 @@ function WorldMapTemplate({
|
|
|
46135
46165
|
unitScale = 2.5,
|
|
46136
46166
|
diamondTopY,
|
|
46137
46167
|
allowMoveAllHeroes = false,
|
|
46168
|
+
tiles,
|
|
46169
|
+
units,
|
|
46170
|
+
features,
|
|
46171
|
+
assetManifest,
|
|
46138
46172
|
className
|
|
46139
46173
|
}) {
|
|
46140
46174
|
return /* @__PURE__ */ jsx(
|
|
46141
46175
|
WorldMapBoard,
|
|
46142
46176
|
{
|
|
46143
46177
|
entity,
|
|
46178
|
+
tiles,
|
|
46179
|
+
units,
|
|
46180
|
+
features,
|
|
46181
|
+
assetManifest,
|
|
46144
46182
|
scale,
|
|
46145
46183
|
unitScale,
|
|
46146
46184
|
diamondTopY,
|