@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/runtime/index.cjs
CHANGED
|
@@ -7717,7 +7717,7 @@ var init_DamageNumber = __esm({
|
|
|
7717
7717
|
function DialogueBubble({
|
|
7718
7718
|
speaker,
|
|
7719
7719
|
text,
|
|
7720
|
-
portrait = "https://almadar-kflow-assets.web.app/shared/characters/archetypes/
|
|
7720
|
+
portrait = "https://almadar-kflow-assets.web.app/shared/characters/archetypes/04_hero.png",
|
|
7721
7721
|
position = "bottom",
|
|
7722
7722
|
className
|
|
7723
7723
|
}) {
|
|
@@ -10327,7 +10327,7 @@ function IsometricCanvas({
|
|
|
10327
10327
|
// Rendering options
|
|
10328
10328
|
scale = 0.4,
|
|
10329
10329
|
debug: debug2 = false,
|
|
10330
|
-
backgroundImage,
|
|
10330
|
+
backgroundImage = "https://almadar-kflow-assets.web.app/shared/scenes/court.png",
|
|
10331
10331
|
showMinimap = true,
|
|
10332
10332
|
enableCamera = true,
|
|
10333
10333
|
unitScale = 1,
|
|
@@ -10342,7 +10342,7 @@ function IsometricCanvas({
|
|
|
10342
10342
|
// Tuning
|
|
10343
10343
|
diamondTopY: diamondTopYProp,
|
|
10344
10344
|
// Remote asset loading
|
|
10345
|
-
assetBaseUrl,
|
|
10345
|
+
assetBaseUrl = "https://almadar-kflow-assets.web.app/shared/",
|
|
10346
10346
|
assetManifest
|
|
10347
10347
|
}) {
|
|
10348
10348
|
const tilesProp = Array.isArray(_tilesPropRaw) ? _tilesPropRaw : [];
|
|
@@ -11101,6 +11101,10 @@ var init_boardEntity = __esm({
|
|
|
11101
11101
|
});
|
|
11102
11102
|
function BattleBoard({
|
|
11103
11103
|
entity,
|
|
11104
|
+
tiles: propTiles,
|
|
11105
|
+
units: propUnits,
|
|
11106
|
+
features: propFeatures,
|
|
11107
|
+
assetManifest: propAssetManifest,
|
|
11104
11108
|
scale = 0.45,
|
|
11105
11109
|
unitScale = 1,
|
|
11106
11110
|
header,
|
|
@@ -11126,11 +11130,11 @@ function BattleBoard({
|
|
|
11126
11130
|
className
|
|
11127
11131
|
}) {
|
|
11128
11132
|
const board = boardEntity(entity) ?? {};
|
|
11129
|
-
const tiles = Array.isArray(board.tiles) ? board.tiles : [];
|
|
11130
|
-
const features = Array.isArray(board.features) ? board.features : [];
|
|
11133
|
+
const tiles = propTiles ?? (Array.isArray(board.tiles) ? board.tiles : []);
|
|
11134
|
+
const features = propFeatures ?? (Array.isArray(board.features) ? board.features : []);
|
|
11131
11135
|
const boardWidth = num(board.boardWidth, 8);
|
|
11132
11136
|
const boardHeight = num(board.boardHeight, 6);
|
|
11133
|
-
const assetManifest = board.assetManifest;
|
|
11137
|
+
const assetManifest = propAssetManifest ?? board.assetManifest;
|
|
11134
11138
|
const backgroundImage = board.backgroundImage;
|
|
11135
11139
|
const units = rows(board.units);
|
|
11136
11140
|
const selectedUnitId = board.selectedUnitId ?? null;
|
|
@@ -11222,7 +11226,7 @@ function BattleBoard({
|
|
|
11222
11226
|
}, 16);
|
|
11223
11227
|
return () => clearInterval(interval);
|
|
11224
11228
|
}, []);
|
|
11225
|
-
const
|
|
11229
|
+
const derivedIsoUnits = React79.useMemo(() => {
|
|
11226
11230
|
return units.filter((u) => unitHealth(u) > 0).map((unit) => {
|
|
11227
11231
|
const id = str(unit.id);
|
|
11228
11232
|
const pos = movingPositions.get(id) ?? unitPosition(unit);
|
|
@@ -11246,6 +11250,7 @@ function BattleBoard({
|
|
|
11246
11250
|
};
|
|
11247
11251
|
});
|
|
11248
11252
|
}, [units, movingPositions]);
|
|
11253
|
+
const isoUnits = propUnits ?? derivedIsoUnits;
|
|
11249
11254
|
const maxY = Math.max(...tiles.map((t2) => t2.y), 0);
|
|
11250
11255
|
const baseOffsetX = (maxY + 1) * (TILE_WIDTH * scale / 2);
|
|
11251
11256
|
const tileToScreen = React79.useCallback(
|
|
@@ -18449,16 +18454,21 @@ function EmojiEffect({
|
|
|
18449
18454
|
}
|
|
18450
18455
|
);
|
|
18451
18456
|
}
|
|
18452
|
-
function CanvasEffect(
|
|
18457
|
+
function CanvasEffect({
|
|
18458
|
+
effectSpriteUrl = "https://almadar-kflow-assets.web.app/shared/effects/gas/gas00.png",
|
|
18459
|
+
assetBaseUrl = "https://almadar-kflow-assets.web.app/shared/effects/",
|
|
18460
|
+
...props
|
|
18461
|
+
}) {
|
|
18453
18462
|
const eventBus = useEventBus();
|
|
18454
|
-
const {
|
|
18463
|
+
const mergedProps = { effectSpriteUrl, assetBaseUrl, ...props };
|
|
18464
|
+
const { completeEvent, onComplete, ...rest } = mergedProps;
|
|
18455
18465
|
const handleComplete = React79.useCallback(() => {
|
|
18456
18466
|
if (completeEvent) eventBus.emit(`UI:${completeEvent}`, {});
|
|
18457
18467
|
onComplete?.();
|
|
18458
18468
|
}, [completeEvent, eventBus, onComplete]);
|
|
18459
18469
|
const enhancedProps = { ...rest, onComplete: handleComplete };
|
|
18460
|
-
if (
|
|
18461
|
-
return /* @__PURE__ */ jsxRuntime.jsx(CanvasEffectEngine, { ...enhancedProps, assetManifest:
|
|
18470
|
+
if (rest.assetManifest) {
|
|
18471
|
+
return /* @__PURE__ */ jsxRuntime.jsx(CanvasEffectEngine, { ...enhancedProps, assetManifest: rest.assetManifest });
|
|
18462
18472
|
}
|
|
18463
18473
|
return /* @__PURE__ */ jsxRuntime.jsx(EmojiEffect, { ...enhancedProps });
|
|
18464
18474
|
}
|
|
@@ -19243,6 +19253,10 @@ var init_CaseStudyOrganism = __esm({
|
|
|
19243
19253
|
});
|
|
19244
19254
|
function CastleBoard({
|
|
19245
19255
|
entity,
|
|
19256
|
+
tiles: propTiles,
|
|
19257
|
+
units: propUnits,
|
|
19258
|
+
features: propFeatures,
|
|
19259
|
+
assetManifest: propAssetManifest,
|
|
19246
19260
|
scale = 0.45,
|
|
19247
19261
|
header,
|
|
19248
19262
|
sidePanel,
|
|
@@ -19258,10 +19272,10 @@ function CastleBoard({
|
|
|
19258
19272
|
}) {
|
|
19259
19273
|
const eventBus = useEventBus();
|
|
19260
19274
|
const resolved = boardEntity(entity);
|
|
19261
|
-
const tiles = Array.isArray(resolved?.tiles) ? resolved.tiles : [];
|
|
19262
|
-
const features = Array.isArray(resolved?.features) ? resolved.features : [];
|
|
19263
|
-
const units = Array.isArray(resolved?.units) ? resolved.units : [];
|
|
19264
|
-
const assetManifest = resolved?.assetManifest;
|
|
19275
|
+
const tiles = propTiles ?? (Array.isArray(resolved?.tiles) ? resolved.tiles : []);
|
|
19276
|
+
const features = propFeatures ?? (Array.isArray(resolved?.features) ? resolved.features : []);
|
|
19277
|
+
const units = propUnits ?? (Array.isArray(resolved?.units) ? resolved.units : []);
|
|
19278
|
+
const assetManifest = propAssetManifest ?? resolved?.assetManifest;
|
|
19265
19279
|
const backgroundImage = resolved?.backgroundImage;
|
|
19266
19280
|
const [hoveredTile, setHoveredTile] = React79.useState(null);
|
|
19267
19281
|
const [selectedFeature, setSelectedFeature] = React79.useState(null);
|
|
@@ -19364,14 +19378,22 @@ var init_CastleBoard = __esm({
|
|
|
19364
19378
|
function CastleTemplate({
|
|
19365
19379
|
entity,
|
|
19366
19380
|
scale = 0.45,
|
|
19381
|
+
tiles,
|
|
19382
|
+
units,
|
|
19383
|
+
features,
|
|
19384
|
+
assetManifest,
|
|
19367
19385
|
className
|
|
19368
19386
|
}) {
|
|
19369
19387
|
const resolved = entity && typeof entity === "object" && !Array.isArray(entity) ? entity : void 0;
|
|
19370
|
-
if (!resolved) return null;
|
|
19388
|
+
if (!resolved && !tiles && !units && !features && !assetManifest) return null;
|
|
19371
19389
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
19372
19390
|
CastleBoard,
|
|
19373
19391
|
{
|
|
19374
19392
|
entity: resolved,
|
|
19393
|
+
tiles,
|
|
19394
|
+
units,
|
|
19395
|
+
features,
|
|
19396
|
+
assetManifest,
|
|
19375
19397
|
scale,
|
|
19376
19398
|
featureClickEvent: "FEATURE_CLICK",
|
|
19377
19399
|
unitClickEvent: "UNIT_CLICK",
|
|
@@ -26004,8 +26026,8 @@ function GameCanvas2D({
|
|
|
26004
26026
|
tickEvent,
|
|
26005
26027
|
drawEvent,
|
|
26006
26028
|
fps = 60,
|
|
26007
|
-
backgroundImage,
|
|
26008
|
-
assetBaseUrl = "",
|
|
26029
|
+
backgroundImage = "https://almadar-kflow-assets.web.app/shared/scenes/resonators.jpeg",
|
|
26030
|
+
assetBaseUrl = "https://almadar-kflow-assets.web.app/shared/",
|
|
26009
26031
|
className
|
|
26010
26032
|
}) {
|
|
26011
26033
|
const canvasRef = React79__namespace.useRef(null);
|
|
@@ -26069,6 +26091,9 @@ function GameCanvas2D({
|
|
|
26069
26091
|
const bgImg = loadImage(backgroundImageRef.current);
|
|
26070
26092
|
if (bgImg) {
|
|
26071
26093
|
ctx.drawImage(bgImg, 0, 0, widthRef.current, heightRef.current);
|
|
26094
|
+
} else {
|
|
26095
|
+
ctx.fillStyle = "#0f1420";
|
|
26096
|
+
ctx.fillRect(0, 0, widthRef.current, heightRef.current);
|
|
26072
26097
|
}
|
|
26073
26098
|
}
|
|
26074
26099
|
onDrawRef.current?.(ctx, frame);
|
|
@@ -27213,10 +27238,10 @@ function PlatformerCanvas({
|
|
|
27213
27238
|
canvasHeight = 400,
|
|
27214
27239
|
followCamera = true,
|
|
27215
27240
|
bgColor,
|
|
27216
|
-
playerSprite,
|
|
27241
|
+
playerSprite = "https://almadar-kflow-assets.web.app/shared/platformer/characters/platformChar_idle.png",
|
|
27217
27242
|
tileSprites,
|
|
27218
|
-
backgroundImage,
|
|
27219
|
-
assetBaseUrl = "",
|
|
27243
|
+
backgroundImage = "https://almadar-kflow-assets.web.app/shared/scenes/court.png",
|
|
27244
|
+
assetBaseUrl = "https://almadar-kflow-assets.web.app/shared/platformer/",
|
|
27220
27245
|
leftEvent = "MOVE_LEFT",
|
|
27221
27246
|
rightEvent = "MOVE_RIGHT",
|
|
27222
27247
|
jumpEvent = "JUMP",
|
|
@@ -45504,6 +45529,10 @@ function defaultIsInRange(from, to, range) {
|
|
|
45504
45529
|
}
|
|
45505
45530
|
function WorldMapBoard({
|
|
45506
45531
|
entity,
|
|
45532
|
+
tiles: propTiles,
|
|
45533
|
+
units: propUnits,
|
|
45534
|
+
features: propFeatures,
|
|
45535
|
+
assetManifest: propAssetManifest,
|
|
45507
45536
|
isLoading,
|
|
45508
45537
|
scale = 0.4,
|
|
45509
45538
|
unitScale = 2.5,
|
|
@@ -45532,16 +45561,16 @@ function WorldMapBoard({
|
|
|
45532
45561
|
const resolved = boardEntity(entity);
|
|
45533
45562
|
const hexes = rows(resolved?.hexes);
|
|
45534
45563
|
const heroes = rows(resolved?.heroes);
|
|
45535
|
-
const features = Array.isArray(resolved?.features) ? resolved.features : [];
|
|
45564
|
+
const features = propFeatures ?? (Array.isArray(resolved?.features) ? resolved.features : []);
|
|
45536
45565
|
const selectedHeroId = resolved?.selectedHeroId ?? null;
|
|
45537
|
-
const assetManifest = resolved?.assetManifest;
|
|
45566
|
+
const assetManifest = propAssetManifest ?? resolved?.assetManifest;
|
|
45538
45567
|
const backgroundImage = resolved?.backgroundImage;
|
|
45539
45568
|
const [hoveredTile, setHoveredTile] = React79.useState(null);
|
|
45540
45569
|
const selectedHero = React79.useMemo(
|
|
45541
45570
|
() => heroes.find((h) => str(h.id) === selectedHeroId) ?? null,
|
|
45542
45571
|
[heroes, selectedHeroId]
|
|
45543
45572
|
);
|
|
45544
|
-
const
|
|
45573
|
+
const derivedTiles = React79.useMemo(
|
|
45545
45574
|
() => hexes.map((hex) => ({
|
|
45546
45575
|
x: num(hex.x),
|
|
45547
45576
|
y: num(hex.y),
|
|
@@ -45550,8 +45579,9 @@ function WorldMapBoard({
|
|
|
45550
45579
|
})),
|
|
45551
45580
|
[hexes]
|
|
45552
45581
|
);
|
|
45582
|
+
const tiles = propTiles ?? derivedTiles;
|
|
45553
45583
|
const baseUnits = React79.useMemo(
|
|
45554
|
-
() => heroes.map((hero) => ({
|
|
45584
|
+
() => propUnits ?? heroes.map((hero) => ({
|
|
45555
45585
|
id: str(hero.id),
|
|
45556
45586
|
position: heroPosition(hero),
|
|
45557
45587
|
name: str(hero.name),
|
|
@@ -45560,7 +45590,7 @@ function WorldMapBoard({
|
|
|
45560
45590
|
maxHealth: 100,
|
|
45561
45591
|
sprite: hero.sprite == null ? void 0 : str(hero.sprite)
|
|
45562
45592
|
})),
|
|
45563
|
-
[heroes]
|
|
45593
|
+
[heroes, propUnits]
|
|
45564
45594
|
);
|
|
45565
45595
|
const MOVE_SPEED_MS_PER_TILE = 300;
|
|
45566
45596
|
const movementAnimRef = React79.useRef(null);
|
|
@@ -45770,12 +45800,20 @@ function WorldMapTemplate({
|
|
|
45770
45800
|
unitScale = 2.5,
|
|
45771
45801
|
diamondTopY,
|
|
45772
45802
|
allowMoveAllHeroes = false,
|
|
45803
|
+
tiles,
|
|
45804
|
+
units,
|
|
45805
|
+
features,
|
|
45806
|
+
assetManifest,
|
|
45773
45807
|
className
|
|
45774
45808
|
}) {
|
|
45775
45809
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
45776
45810
|
WorldMapBoard,
|
|
45777
45811
|
{
|
|
45778
45812
|
entity,
|
|
45813
|
+
tiles,
|
|
45814
|
+
units,
|
|
45815
|
+
features,
|
|
45816
|
+
assetManifest,
|
|
45779
45817
|
scale,
|
|
45780
45818
|
unitScale,
|
|
45781
45819
|
diamondTopY,
|
package/dist/runtime/index.js
CHANGED
|
@@ -7668,7 +7668,7 @@ var init_DamageNumber = __esm({
|
|
|
7668
7668
|
function DialogueBubble({
|
|
7669
7669
|
speaker,
|
|
7670
7670
|
text,
|
|
7671
|
-
portrait = "https://almadar-kflow-assets.web.app/shared/characters/archetypes/
|
|
7671
|
+
portrait = "https://almadar-kflow-assets.web.app/shared/characters/archetypes/04_hero.png",
|
|
7672
7672
|
position = "bottom",
|
|
7673
7673
|
className
|
|
7674
7674
|
}) {
|
|
@@ -10278,7 +10278,7 @@ function IsometricCanvas({
|
|
|
10278
10278
|
// Rendering options
|
|
10279
10279
|
scale = 0.4,
|
|
10280
10280
|
debug: debug2 = false,
|
|
10281
|
-
backgroundImage,
|
|
10281
|
+
backgroundImage = "https://almadar-kflow-assets.web.app/shared/scenes/court.png",
|
|
10282
10282
|
showMinimap = true,
|
|
10283
10283
|
enableCamera = true,
|
|
10284
10284
|
unitScale = 1,
|
|
@@ -10293,7 +10293,7 @@ function IsometricCanvas({
|
|
|
10293
10293
|
// Tuning
|
|
10294
10294
|
diamondTopY: diamondTopYProp,
|
|
10295
10295
|
// Remote asset loading
|
|
10296
|
-
assetBaseUrl,
|
|
10296
|
+
assetBaseUrl = "https://almadar-kflow-assets.web.app/shared/",
|
|
10297
10297
|
assetManifest
|
|
10298
10298
|
}) {
|
|
10299
10299
|
const tilesProp = Array.isArray(_tilesPropRaw) ? _tilesPropRaw : [];
|
|
@@ -11052,6 +11052,10 @@ var init_boardEntity = __esm({
|
|
|
11052
11052
|
});
|
|
11053
11053
|
function BattleBoard({
|
|
11054
11054
|
entity,
|
|
11055
|
+
tiles: propTiles,
|
|
11056
|
+
units: propUnits,
|
|
11057
|
+
features: propFeatures,
|
|
11058
|
+
assetManifest: propAssetManifest,
|
|
11055
11059
|
scale = 0.45,
|
|
11056
11060
|
unitScale = 1,
|
|
11057
11061
|
header,
|
|
@@ -11077,11 +11081,11 @@ function BattleBoard({
|
|
|
11077
11081
|
className
|
|
11078
11082
|
}) {
|
|
11079
11083
|
const board = boardEntity(entity) ?? {};
|
|
11080
|
-
const tiles = Array.isArray(board.tiles) ? board.tiles : [];
|
|
11081
|
-
const features = Array.isArray(board.features) ? board.features : [];
|
|
11084
|
+
const tiles = propTiles ?? (Array.isArray(board.tiles) ? board.tiles : []);
|
|
11085
|
+
const features = propFeatures ?? (Array.isArray(board.features) ? board.features : []);
|
|
11082
11086
|
const boardWidth = num(board.boardWidth, 8);
|
|
11083
11087
|
const boardHeight = num(board.boardHeight, 6);
|
|
11084
|
-
const assetManifest = board.assetManifest;
|
|
11088
|
+
const assetManifest = propAssetManifest ?? board.assetManifest;
|
|
11085
11089
|
const backgroundImage = board.backgroundImage;
|
|
11086
11090
|
const units = rows(board.units);
|
|
11087
11091
|
const selectedUnitId = board.selectedUnitId ?? null;
|
|
@@ -11173,7 +11177,7 @@ function BattleBoard({
|
|
|
11173
11177
|
}, 16);
|
|
11174
11178
|
return () => clearInterval(interval);
|
|
11175
11179
|
}, []);
|
|
11176
|
-
const
|
|
11180
|
+
const derivedIsoUnits = useMemo(() => {
|
|
11177
11181
|
return units.filter((u) => unitHealth(u) > 0).map((unit) => {
|
|
11178
11182
|
const id = str(unit.id);
|
|
11179
11183
|
const pos = movingPositions.get(id) ?? unitPosition(unit);
|
|
@@ -11197,6 +11201,7 @@ function BattleBoard({
|
|
|
11197
11201
|
};
|
|
11198
11202
|
});
|
|
11199
11203
|
}, [units, movingPositions]);
|
|
11204
|
+
const isoUnits = propUnits ?? derivedIsoUnits;
|
|
11200
11205
|
const maxY = Math.max(...tiles.map((t2) => t2.y), 0);
|
|
11201
11206
|
const baseOffsetX = (maxY + 1) * (TILE_WIDTH * scale / 2);
|
|
11202
11207
|
const tileToScreen = useCallback(
|
|
@@ -18400,16 +18405,21 @@ function EmojiEffect({
|
|
|
18400
18405
|
}
|
|
18401
18406
|
);
|
|
18402
18407
|
}
|
|
18403
|
-
function CanvasEffect(
|
|
18408
|
+
function CanvasEffect({
|
|
18409
|
+
effectSpriteUrl = "https://almadar-kflow-assets.web.app/shared/effects/gas/gas00.png",
|
|
18410
|
+
assetBaseUrl = "https://almadar-kflow-assets.web.app/shared/effects/",
|
|
18411
|
+
...props
|
|
18412
|
+
}) {
|
|
18404
18413
|
const eventBus = useEventBus();
|
|
18405
|
-
const {
|
|
18414
|
+
const mergedProps = { effectSpriteUrl, assetBaseUrl, ...props };
|
|
18415
|
+
const { completeEvent, onComplete, ...rest } = mergedProps;
|
|
18406
18416
|
const handleComplete = useCallback(() => {
|
|
18407
18417
|
if (completeEvent) eventBus.emit(`UI:${completeEvent}`, {});
|
|
18408
18418
|
onComplete?.();
|
|
18409
18419
|
}, [completeEvent, eventBus, onComplete]);
|
|
18410
18420
|
const enhancedProps = { ...rest, onComplete: handleComplete };
|
|
18411
|
-
if (
|
|
18412
|
-
return /* @__PURE__ */ jsx(CanvasEffectEngine, { ...enhancedProps, assetManifest:
|
|
18421
|
+
if (rest.assetManifest) {
|
|
18422
|
+
return /* @__PURE__ */ jsx(CanvasEffectEngine, { ...enhancedProps, assetManifest: rest.assetManifest });
|
|
18413
18423
|
}
|
|
18414
18424
|
return /* @__PURE__ */ jsx(EmojiEffect, { ...enhancedProps });
|
|
18415
18425
|
}
|
|
@@ -19194,6 +19204,10 @@ var init_CaseStudyOrganism = __esm({
|
|
|
19194
19204
|
});
|
|
19195
19205
|
function CastleBoard({
|
|
19196
19206
|
entity,
|
|
19207
|
+
tiles: propTiles,
|
|
19208
|
+
units: propUnits,
|
|
19209
|
+
features: propFeatures,
|
|
19210
|
+
assetManifest: propAssetManifest,
|
|
19197
19211
|
scale = 0.45,
|
|
19198
19212
|
header,
|
|
19199
19213
|
sidePanel,
|
|
@@ -19209,10 +19223,10 @@ function CastleBoard({
|
|
|
19209
19223
|
}) {
|
|
19210
19224
|
const eventBus = useEventBus();
|
|
19211
19225
|
const resolved = boardEntity(entity);
|
|
19212
|
-
const tiles = Array.isArray(resolved?.tiles) ? resolved.tiles : [];
|
|
19213
|
-
const features = Array.isArray(resolved?.features) ? resolved.features : [];
|
|
19214
|
-
const units = Array.isArray(resolved?.units) ? resolved.units : [];
|
|
19215
|
-
const assetManifest = resolved?.assetManifest;
|
|
19226
|
+
const tiles = propTiles ?? (Array.isArray(resolved?.tiles) ? resolved.tiles : []);
|
|
19227
|
+
const features = propFeatures ?? (Array.isArray(resolved?.features) ? resolved.features : []);
|
|
19228
|
+
const units = propUnits ?? (Array.isArray(resolved?.units) ? resolved.units : []);
|
|
19229
|
+
const assetManifest = propAssetManifest ?? resolved?.assetManifest;
|
|
19216
19230
|
const backgroundImage = resolved?.backgroundImage;
|
|
19217
19231
|
const [hoveredTile, setHoveredTile] = useState(null);
|
|
19218
19232
|
const [selectedFeature, setSelectedFeature] = useState(null);
|
|
@@ -19315,14 +19329,22 @@ var init_CastleBoard = __esm({
|
|
|
19315
19329
|
function CastleTemplate({
|
|
19316
19330
|
entity,
|
|
19317
19331
|
scale = 0.45,
|
|
19332
|
+
tiles,
|
|
19333
|
+
units,
|
|
19334
|
+
features,
|
|
19335
|
+
assetManifest,
|
|
19318
19336
|
className
|
|
19319
19337
|
}) {
|
|
19320
19338
|
const resolved = entity && typeof entity === "object" && !Array.isArray(entity) ? entity : void 0;
|
|
19321
|
-
if (!resolved) return null;
|
|
19339
|
+
if (!resolved && !tiles && !units && !features && !assetManifest) return null;
|
|
19322
19340
|
return /* @__PURE__ */ jsx(
|
|
19323
19341
|
CastleBoard,
|
|
19324
19342
|
{
|
|
19325
19343
|
entity: resolved,
|
|
19344
|
+
tiles,
|
|
19345
|
+
units,
|
|
19346
|
+
features,
|
|
19347
|
+
assetManifest,
|
|
19326
19348
|
scale,
|
|
19327
19349
|
featureClickEvent: "FEATURE_CLICK",
|
|
19328
19350
|
unitClickEvent: "UNIT_CLICK",
|
|
@@ -25955,8 +25977,8 @@ function GameCanvas2D({
|
|
|
25955
25977
|
tickEvent,
|
|
25956
25978
|
drawEvent,
|
|
25957
25979
|
fps = 60,
|
|
25958
|
-
backgroundImage,
|
|
25959
|
-
assetBaseUrl = "",
|
|
25980
|
+
backgroundImage = "https://almadar-kflow-assets.web.app/shared/scenes/resonators.jpeg",
|
|
25981
|
+
assetBaseUrl = "https://almadar-kflow-assets.web.app/shared/",
|
|
25960
25982
|
className
|
|
25961
25983
|
}) {
|
|
25962
25984
|
const canvasRef = React79.useRef(null);
|
|
@@ -26020,6 +26042,9 @@ function GameCanvas2D({
|
|
|
26020
26042
|
const bgImg = loadImage(backgroundImageRef.current);
|
|
26021
26043
|
if (bgImg) {
|
|
26022
26044
|
ctx.drawImage(bgImg, 0, 0, widthRef.current, heightRef.current);
|
|
26045
|
+
} else {
|
|
26046
|
+
ctx.fillStyle = "#0f1420";
|
|
26047
|
+
ctx.fillRect(0, 0, widthRef.current, heightRef.current);
|
|
26023
26048
|
}
|
|
26024
26049
|
}
|
|
26025
26050
|
onDrawRef.current?.(ctx, frame);
|
|
@@ -27164,10 +27189,10 @@ function PlatformerCanvas({
|
|
|
27164
27189
|
canvasHeight = 400,
|
|
27165
27190
|
followCamera = true,
|
|
27166
27191
|
bgColor,
|
|
27167
|
-
playerSprite,
|
|
27192
|
+
playerSprite = "https://almadar-kflow-assets.web.app/shared/platformer/characters/platformChar_idle.png",
|
|
27168
27193
|
tileSprites,
|
|
27169
|
-
backgroundImage,
|
|
27170
|
-
assetBaseUrl = "",
|
|
27194
|
+
backgroundImage = "https://almadar-kflow-assets.web.app/shared/scenes/court.png",
|
|
27195
|
+
assetBaseUrl = "https://almadar-kflow-assets.web.app/shared/platformer/",
|
|
27171
27196
|
leftEvent = "MOVE_LEFT",
|
|
27172
27197
|
rightEvent = "MOVE_RIGHT",
|
|
27173
27198
|
jumpEvent = "JUMP",
|
|
@@ -45455,6 +45480,10 @@ function defaultIsInRange(from, to, range) {
|
|
|
45455
45480
|
}
|
|
45456
45481
|
function WorldMapBoard({
|
|
45457
45482
|
entity,
|
|
45483
|
+
tiles: propTiles,
|
|
45484
|
+
units: propUnits,
|
|
45485
|
+
features: propFeatures,
|
|
45486
|
+
assetManifest: propAssetManifest,
|
|
45458
45487
|
isLoading,
|
|
45459
45488
|
scale = 0.4,
|
|
45460
45489
|
unitScale = 2.5,
|
|
@@ -45483,16 +45512,16 @@ function WorldMapBoard({
|
|
|
45483
45512
|
const resolved = boardEntity(entity);
|
|
45484
45513
|
const hexes = rows(resolved?.hexes);
|
|
45485
45514
|
const heroes = rows(resolved?.heroes);
|
|
45486
|
-
const features = Array.isArray(resolved?.features) ? resolved.features : [];
|
|
45515
|
+
const features = propFeatures ?? (Array.isArray(resolved?.features) ? resolved.features : []);
|
|
45487
45516
|
const selectedHeroId = resolved?.selectedHeroId ?? null;
|
|
45488
|
-
const assetManifest = resolved?.assetManifest;
|
|
45517
|
+
const assetManifest = propAssetManifest ?? resolved?.assetManifest;
|
|
45489
45518
|
const backgroundImage = resolved?.backgroundImage;
|
|
45490
45519
|
const [hoveredTile, setHoveredTile] = useState(null);
|
|
45491
45520
|
const selectedHero = useMemo(
|
|
45492
45521
|
() => heroes.find((h) => str(h.id) === selectedHeroId) ?? null,
|
|
45493
45522
|
[heroes, selectedHeroId]
|
|
45494
45523
|
);
|
|
45495
|
-
const
|
|
45524
|
+
const derivedTiles = useMemo(
|
|
45496
45525
|
() => hexes.map((hex) => ({
|
|
45497
45526
|
x: num(hex.x),
|
|
45498
45527
|
y: num(hex.y),
|
|
@@ -45501,8 +45530,9 @@ function WorldMapBoard({
|
|
|
45501
45530
|
})),
|
|
45502
45531
|
[hexes]
|
|
45503
45532
|
);
|
|
45533
|
+
const tiles = propTiles ?? derivedTiles;
|
|
45504
45534
|
const baseUnits = useMemo(
|
|
45505
|
-
() => heroes.map((hero) => ({
|
|
45535
|
+
() => propUnits ?? heroes.map((hero) => ({
|
|
45506
45536
|
id: str(hero.id),
|
|
45507
45537
|
position: heroPosition(hero),
|
|
45508
45538
|
name: str(hero.name),
|
|
@@ -45511,7 +45541,7 @@ function WorldMapBoard({
|
|
|
45511
45541
|
maxHealth: 100,
|
|
45512
45542
|
sprite: hero.sprite == null ? void 0 : str(hero.sprite)
|
|
45513
45543
|
})),
|
|
45514
|
-
[heroes]
|
|
45544
|
+
[heroes, propUnits]
|
|
45515
45545
|
);
|
|
45516
45546
|
const MOVE_SPEED_MS_PER_TILE = 300;
|
|
45517
45547
|
const movementAnimRef = useRef(null);
|
|
@@ -45721,12 +45751,20 @@ function WorldMapTemplate({
|
|
|
45721
45751
|
unitScale = 2.5,
|
|
45722
45752
|
diamondTopY,
|
|
45723
45753
|
allowMoveAllHeroes = false,
|
|
45754
|
+
tiles,
|
|
45755
|
+
units,
|
|
45756
|
+
features,
|
|
45757
|
+
assetManifest,
|
|
45724
45758
|
className
|
|
45725
45759
|
}) {
|
|
45726
45760
|
return /* @__PURE__ */ jsx(
|
|
45727
45761
|
WorldMapBoard,
|
|
45728
45762
|
{
|
|
45729
45763
|
entity,
|
|
45764
|
+
tiles,
|
|
45765
|
+
units,
|
|
45766
|
+
features,
|
|
45767
|
+
assetManifest,
|
|
45730
45768
|
scale,
|
|
45731
45769
|
unitScale,
|
|
45732
45770
|
diamondTopY,
|