@almadar/ui 5.80.0 → 5.82.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 +309 -370
- package/dist/avl/index.js +309 -370
- package/dist/components/core/atoms/Badge.d.ts +3 -0
- package/dist/components/core/atoms/Button.d.ts +3 -1
- package/dist/components/core/molecules/Tabs.d.ts +3 -1
- package/dist/components/game/2d/atoms/GameCard.d.ts +3 -1
- package/dist/components/game/3d/index.cjs +3 -1
- package/dist/components/game/3d/index.js +3 -1
- package/dist/components/index.cjs +279 -340
- package/dist/components/index.js +279 -340
- package/dist/marketing/index.cjs +6 -3
- package/dist/marketing/index.d.cts +5 -1
- package/dist/marketing/index.js +7 -4
- package/dist/providers/index.cjs +309 -370
- package/dist/providers/index.js +309 -370
- package/dist/runtime/index.cjs +309 -370
- package/dist/runtime/index.js +309 -370
- package/package.json +1 -1
package/dist/components/index.js
CHANGED
|
@@ -2122,6 +2122,7 @@ var init_Button = __esm({
|
|
|
2122
2122
|
rightIcon,
|
|
2123
2123
|
icon: iconProp,
|
|
2124
2124
|
iconRight: iconRightProp,
|
|
2125
|
+
iconAsset,
|
|
2125
2126
|
action,
|
|
2126
2127
|
actionPayload,
|
|
2127
2128
|
label,
|
|
@@ -2133,7 +2134,8 @@ var init_Button = __esm({
|
|
|
2133
2134
|
const eventBus = useEventBus();
|
|
2134
2135
|
const leftIconValue = leftIcon || iconProp;
|
|
2135
2136
|
const rightIconValue = rightIcon || iconRightProp;
|
|
2136
|
-
const
|
|
2137
|
+
const px = size === "sm" ? 16 : size === "lg" ? 20 : 16;
|
|
2138
|
+
const resolvedLeftIcon = iconAsset?.url ? /* @__PURE__ */ jsx("img", { src: iconAsset.url, alt: iconAsset.name ?? iconAsset.category ?? "", width: px, height: px, style: { imageRendering: "pixelated", objectFit: "contain", width: px, height: px }, className: "flex-shrink-0" }) : resolveIconProp(leftIconValue, iconSizeStyles[size]);
|
|
2137
2139
|
const resolvedRightIcon = resolveIconProp(rightIconValue, iconSizeStyles[size]);
|
|
2138
2140
|
const handleClick = (e) => {
|
|
2139
2141
|
if (action) {
|
|
@@ -2887,13 +2889,14 @@ var init_Badge = __esm({
|
|
|
2887
2889
|
lg: "px-3 py-1.5 text-base"
|
|
2888
2890
|
};
|
|
2889
2891
|
Badge = React79__default.forwardRef(
|
|
2890
|
-
({ className, variant = "default", size = "sm", amount, label, icon, children, onRemove, removeLabel, ...props }, ref) => {
|
|
2892
|
+
({ className, variant = "default", size = "sm", amount, label, icon, iconAsset, children, onRemove, removeLabel, ...props }, ref) => {
|
|
2891
2893
|
const iconSizes3 = {
|
|
2892
2894
|
sm: "h-icon-default w-icon-default",
|
|
2893
2895
|
md: "h-icon-default w-icon-default",
|
|
2894
2896
|
lg: "h-icon-default w-icon-default"
|
|
2895
2897
|
};
|
|
2896
|
-
const
|
|
2898
|
+
const iconPx = size === "lg" ? 20 : 16;
|
|
2899
|
+
const resolvedIcon = iconAsset?.url ? /* @__PURE__ */ jsx("img", { src: iconAsset.url, alt: iconAsset.name ?? iconAsset.category ?? "", width: iconPx, height: iconPx, style: { imageRendering: "pixelated", objectFit: "contain", width: iconPx, height: iconPx }, className: "flex-shrink-0" }) : typeof icon === "string" ? /* @__PURE__ */ jsx(Icon, { name: icon, className: iconSizes3[size] }) : icon ? /* @__PURE__ */ jsx(Icon, { icon, className: iconSizes3[size] }) : null;
|
|
2897
2900
|
return /* @__PURE__ */ jsxs(
|
|
2898
2901
|
"span",
|
|
2899
2902
|
{
|
|
@@ -7926,6 +7929,38 @@ var init_Accordion = __esm({
|
|
|
7926
7929
|
Accordion.displayName = "Accordion";
|
|
7927
7930
|
}
|
|
7928
7931
|
});
|
|
7932
|
+
function GameIcon({ assetUrl, icon, size = "md", alt, className }) {
|
|
7933
|
+
const px = typeof size === "number" ? size : sizeMap[size];
|
|
7934
|
+
if (assetUrl?.url) {
|
|
7935
|
+
return /* @__PURE__ */ jsx(
|
|
7936
|
+
"img",
|
|
7937
|
+
{
|
|
7938
|
+
src: assetUrl.url,
|
|
7939
|
+
alt: alt ?? assetUrl.category ?? "",
|
|
7940
|
+
width: px,
|
|
7941
|
+
height: px,
|
|
7942
|
+
style: { imageRendering: "pixelated", objectFit: "contain", width: px, height: px },
|
|
7943
|
+
className: cn("flex-shrink-0", className)
|
|
7944
|
+
}
|
|
7945
|
+
);
|
|
7946
|
+
}
|
|
7947
|
+
const I = typeof icon === "string" ? resolveIcon(icon) : icon;
|
|
7948
|
+
return /* @__PURE__ */ jsx(I, { width: px, height: px, className: cn("flex-shrink-0", className) });
|
|
7949
|
+
}
|
|
7950
|
+
var sizeMap;
|
|
7951
|
+
var init_GameIcon = __esm({
|
|
7952
|
+
"components/game/2d/atoms/GameIcon.tsx"() {
|
|
7953
|
+
"use client";
|
|
7954
|
+
init_cn();
|
|
7955
|
+
init_Icon();
|
|
7956
|
+
sizeMap = {
|
|
7957
|
+
sm: 16,
|
|
7958
|
+
md: 24,
|
|
7959
|
+
lg: 32
|
|
7960
|
+
};
|
|
7961
|
+
GameIcon.displayName = "GameIcon";
|
|
7962
|
+
}
|
|
7963
|
+
});
|
|
7929
7964
|
function ActionButton({
|
|
7930
7965
|
assetUrl = DEFAULT_ASSET_URL,
|
|
7931
7966
|
label = "Attack",
|
|
@@ -7940,16 +7975,16 @@ function ActionButton({
|
|
|
7940
7975
|
className
|
|
7941
7976
|
}) {
|
|
7942
7977
|
const eventBus = useEventBus();
|
|
7943
|
-
const sizes =
|
|
7978
|
+
const sizes = sizeMap2[size];
|
|
7944
7979
|
const onCooldown = cooldown > 0;
|
|
7945
7980
|
const isDisabled = disabled || onCooldown;
|
|
7946
7981
|
const cooldownDeg = Math.round(cooldown * 360);
|
|
7947
7982
|
return /* @__PURE__ */ jsxs(
|
|
7948
|
-
|
|
7983
|
+
Button,
|
|
7949
7984
|
{
|
|
7950
|
-
|
|
7985
|
+
variant: variant === "danger" ? "danger" : variant === "secondary" ? "secondary" : "primary",
|
|
7951
7986
|
disabled: isDisabled,
|
|
7952
|
-
onClick: (
|
|
7987
|
+
onClick: () => {
|
|
7953
7988
|
if (action) eventBus.emit(`UI:${action}`, {});
|
|
7954
7989
|
onClick?.();
|
|
7955
7990
|
},
|
|
@@ -7962,9 +7997,10 @@ function ActionButton({
|
|
|
7962
7997
|
),
|
|
7963
7998
|
children: [
|
|
7964
7999
|
onCooldown && /* @__PURE__ */ jsx(
|
|
7965
|
-
|
|
8000
|
+
Box,
|
|
7966
8001
|
{
|
|
7967
|
-
|
|
8002
|
+
position: "absolute",
|
|
8003
|
+
className: "inset-0 bg-foreground/40 pointer-events-none",
|
|
7968
8004
|
style: {
|
|
7969
8005
|
clipPath: `conic-gradient(from 0deg, transparent ${360 - cooldownDeg}deg, black ${360 - cooldownDeg}deg)`,
|
|
7970
8006
|
WebkitClipPath: `conic-gradient(from 0deg, transparent ${360 - cooldownDeg}deg, black ${360 - cooldownDeg}deg)`,
|
|
@@ -7972,27 +8008,18 @@ function ActionButton({
|
|
|
7972
8008
|
}
|
|
7973
8009
|
}
|
|
7974
8010
|
),
|
|
7975
|
-
assetUrl ? /* @__PURE__ */ jsx(
|
|
7976
|
-
"img",
|
|
7977
|
-
{
|
|
7978
|
-
src: assetUrl.url,
|
|
7979
|
-
alt: "",
|
|
7980
|
-
width: 16,
|
|
7981
|
-
height: 16,
|
|
7982
|
-
style: { imageRendering: "pixelated", objectFit: "contain" },
|
|
7983
|
-
className: cn("flex-shrink-0", sizes.icon)
|
|
7984
|
-
}
|
|
7985
|
-
) : icon ? /* @__PURE__ */ jsx("span", { className: cn("flex-shrink-0", sizes.icon), children: typeof icon === "string" ? (() => {
|
|
8011
|
+
assetUrl ? /* @__PURE__ */ jsx(GameIcon, { assetUrl, icon: "image", size: 16, className: cn("flex-shrink-0", sizes.icon) }) : icon ? /* @__PURE__ */ jsx(Box, { as: "span", className: cn("flex-shrink-0", sizes.icon), children: typeof icon === "string" ? (() => {
|
|
7986
8012
|
const I = resolveIcon(icon);
|
|
7987
8013
|
return I ? /* @__PURE__ */ jsx(I, { className: "w-4 h-4" }) : null;
|
|
7988
8014
|
})() : /* @__PURE__ */ (() => {
|
|
7989
8015
|
const I = icon;
|
|
7990
8016
|
return /* @__PURE__ */ jsx(I, { className: "w-4 h-4" });
|
|
7991
8017
|
})() }) : null,
|
|
7992
|
-
/* @__PURE__ */ jsx("span",
|
|
8018
|
+
/* @__PURE__ */ jsx(Typography, { as: "span", className: "relative z-10", children: label }),
|
|
7993
8019
|
hotkey && /* @__PURE__ */ jsx(
|
|
7994
|
-
|
|
8020
|
+
Typography,
|
|
7995
8021
|
{
|
|
8022
|
+
as: "span",
|
|
7996
8023
|
className: cn(
|
|
7997
8024
|
"absolute top-0.5 right-0.5 bg-foreground/30 text-primary-foreground rounded font-mono leading-tight",
|
|
7998
8025
|
sizes.hotkey
|
|
@@ -8004,13 +8031,17 @@ function ActionButton({
|
|
|
8004
8031
|
}
|
|
8005
8032
|
);
|
|
8006
8033
|
}
|
|
8007
|
-
var
|
|
8034
|
+
var sizeMap2, variantStyles7, DEFAULT_ASSET_URL;
|
|
8008
8035
|
var init_ActionButton = __esm({
|
|
8009
8036
|
"components/game/2d/atoms/ActionButton.tsx"() {
|
|
8010
8037
|
init_cn();
|
|
8011
8038
|
init_Icon();
|
|
8012
8039
|
init_useEventBus();
|
|
8013
|
-
|
|
8040
|
+
init_Button();
|
|
8041
|
+
init_Box();
|
|
8042
|
+
init_Typography();
|
|
8043
|
+
init_GameIcon();
|
|
8044
|
+
sizeMap2 = {
|
|
8014
8045
|
sm: { button: "h-button-sm px-3 text-xs", hotkey: "text-[9px] px-1", icon: "text-xs" },
|
|
8015
8046
|
md: { button: "h-button-md px-4 text-sm", hotkey: "text-xs px-1.5", icon: "text-sm" },
|
|
8016
8047
|
lg: { button: "h-button-lg px-5 text-base", hotkey: "text-xs px-2", icon: "text-base" }
|
|
@@ -8743,10 +8774,12 @@ function MiniMap({
|
|
|
8743
8774
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
8744
8775
|
/* @__PURE__ */ jsx("style", { children: `@keyframes minimap-blink{0%,49%{opacity:1}50%,100%{opacity:0}}` }),
|
|
8745
8776
|
/* @__PURE__ */ jsxs(
|
|
8746
|
-
|
|
8777
|
+
Box,
|
|
8747
8778
|
{
|
|
8779
|
+
position: "relative",
|
|
8780
|
+
display: "inline-block",
|
|
8748
8781
|
className: cn(
|
|
8749
|
-
"
|
|
8782
|
+
"border border-border/20 rounded-container",
|
|
8750
8783
|
className
|
|
8751
8784
|
),
|
|
8752
8785
|
children: [
|
|
@@ -8761,10 +8794,10 @@ function MiniMap({
|
|
|
8761
8794
|
}
|
|
8762
8795
|
),
|
|
8763
8796
|
playerLeft !== null && playerTop !== null && /* @__PURE__ */ jsx(
|
|
8764
|
-
|
|
8797
|
+
Box,
|
|
8765
8798
|
{
|
|
8799
|
+
position: "absolute",
|
|
8766
8800
|
style: {
|
|
8767
|
-
position: "absolute",
|
|
8768
8801
|
left: playerLeft,
|
|
8769
8802
|
top: playerTop,
|
|
8770
8803
|
width: 3,
|
|
@@ -8785,6 +8818,7 @@ var init_MiniMap = __esm({
|
|
|
8785
8818
|
"components/game/2d/atoms/MiniMap.tsx"() {
|
|
8786
8819
|
"use client";
|
|
8787
8820
|
init_cn();
|
|
8821
|
+
init_Box();
|
|
8788
8822
|
DEFAULT_TILES = [
|
|
8789
8823
|
{ x: 10, y: 10, color: "#4ade80" },
|
|
8790
8824
|
{ x: 20, y: 15, color: "#4ade80" },
|
|
@@ -8815,12 +8849,13 @@ function HealthBar({
|
|
|
8815
8849
|
frameAsset,
|
|
8816
8850
|
fillAsset
|
|
8817
8851
|
}) {
|
|
8818
|
-
const sizes =
|
|
8852
|
+
const sizes = sizeMap3[size];
|
|
8819
8853
|
const percentage = max > 0 ? Math.max(0, Math.min(100, current / max * 100)) : 0;
|
|
8820
8854
|
if (format === "hearts") {
|
|
8821
|
-
return /* @__PURE__ */ jsx(
|
|
8822
|
-
|
|
8855
|
+
return /* @__PURE__ */ jsx(Box, { className: cn("flex items-center gap-1", className), children: Array.from({ length: max }).map((_, i) => /* @__PURE__ */ jsx(
|
|
8856
|
+
Box,
|
|
8823
8857
|
{
|
|
8858
|
+
as: "span",
|
|
8824
8859
|
className: cn(animated && "transition-transform hover:scale-110"),
|
|
8825
8860
|
children: heartIcon(i < current, sizes.heart)
|
|
8826
8861
|
},
|
|
@@ -8829,10 +8864,12 @@ function HealthBar({
|
|
|
8829
8864
|
}
|
|
8830
8865
|
if (format === "bar") {
|
|
8831
8866
|
return /* @__PURE__ */ jsx(
|
|
8832
|
-
|
|
8867
|
+
Box,
|
|
8833
8868
|
{
|
|
8869
|
+
position: "relative",
|
|
8870
|
+
overflow: "hidden",
|
|
8834
8871
|
className: cn(
|
|
8835
|
-
"
|
|
8872
|
+
"rounded-full",
|
|
8836
8873
|
!frameAsset && "bg-muted",
|
|
8837
8874
|
sizes.bar,
|
|
8838
8875
|
"w-24",
|
|
@@ -8840,10 +8877,11 @@ function HealthBar({
|
|
|
8840
8877
|
),
|
|
8841
8878
|
style: frameAsset ? { backgroundImage: `url(${frameAsset.url})`, backgroundSize: "100% 100%" } : void 0,
|
|
8842
8879
|
children: /* @__PURE__ */ jsx(
|
|
8843
|
-
|
|
8880
|
+
Box,
|
|
8844
8881
|
{
|
|
8882
|
+
position: "absolute",
|
|
8845
8883
|
className: cn(
|
|
8846
|
-
"
|
|
8884
|
+
"inset-y-0 left-0 rounded-full",
|
|
8847
8885
|
!fillAsset && (percentage > 66 ? "bg-success" : percentage > 33 ? "bg-warning" : "bg-error"),
|
|
8848
8886
|
animated && "transition-all duration-300"
|
|
8849
8887
|
),
|
|
@@ -8857,10 +8895,11 @@ function HealthBar({
|
|
|
8857
8895
|
);
|
|
8858
8896
|
}
|
|
8859
8897
|
if (format === "progress") {
|
|
8860
|
-
return /* @__PURE__ */ jsxs(
|
|
8898
|
+
return /* @__PURE__ */ jsxs(Box, { className: cn("flex items-center gap-2", className), children: [
|
|
8861
8899
|
level != null && /* @__PURE__ */ jsxs(
|
|
8862
|
-
|
|
8900
|
+
Typography,
|
|
8863
8901
|
{
|
|
8902
|
+
as: "span",
|
|
8864
8903
|
className: cn(
|
|
8865
8904
|
"flex-shrink-0 rounded-interactive font-bold",
|
|
8866
8905
|
"bg-accent text-accent-foreground border border-accent",
|
|
@@ -8872,21 +8911,23 @@ function HealthBar({
|
|
|
8872
8911
|
]
|
|
8873
8912
|
}
|
|
8874
8913
|
),
|
|
8875
|
-
/* @__PURE__ */ jsxs(
|
|
8914
|
+
/* @__PURE__ */ jsxs(Box, { className: "flex-1 flex flex-col gap-0.5", children: [
|
|
8876
8915
|
/* @__PURE__ */ jsx(
|
|
8877
|
-
|
|
8916
|
+
Box,
|
|
8878
8917
|
{
|
|
8918
|
+
position: "relative",
|
|
8879
8919
|
className: cn(
|
|
8880
|
-
"
|
|
8920
|
+
"w-full overflow-hidden rounded-full",
|
|
8881
8921
|
!frameAsset && "bg-muted border border-muted",
|
|
8882
8922
|
sizes.bar
|
|
8883
8923
|
),
|
|
8884
8924
|
style: frameAsset ? { backgroundImage: `url(${frameAsset.url})`, backgroundSize: "100% 100%" } : void 0,
|
|
8885
8925
|
children: /* @__PURE__ */ jsx(
|
|
8886
|
-
|
|
8926
|
+
Box,
|
|
8887
8927
|
{
|
|
8928
|
+
position: "absolute",
|
|
8888
8929
|
className: cn(
|
|
8889
|
-
"
|
|
8930
|
+
"inset-y-0 left-0 rounded-full",
|
|
8890
8931
|
!fillAsset && "bg-gradient-to-r from-accent to-info",
|
|
8891
8932
|
animated && "transition-all duration-500 ease-out"
|
|
8892
8933
|
),
|
|
@@ -8898,7 +8939,7 @@ function HealthBar({
|
|
|
8898
8939
|
)
|
|
8899
8940
|
}
|
|
8900
8941
|
),
|
|
8901
|
-
showLabel && /* @__PURE__ */ jsxs("span",
|
|
8942
|
+
showLabel && /* @__PURE__ */ jsxs(Typography, { as: "span", className: cn("text-foreground/70 tabular-nums", sizes.label), children: [
|
|
8902
8943
|
current,
|
|
8903
8944
|
" / ",
|
|
8904
8945
|
max,
|
|
@@ -8907,16 +8948,18 @@ function HealthBar({
|
|
|
8907
8948
|
] })
|
|
8908
8949
|
] });
|
|
8909
8950
|
}
|
|
8910
|
-
return /* @__PURE__ */ jsxs("span",
|
|
8951
|
+
return /* @__PURE__ */ jsxs(Typography, { as: "span", className: cn("font-mono font-bold", sizes.text, className), children: [
|
|
8911
8952
|
current,
|
|
8912
8953
|
"/",
|
|
8913
8954
|
max
|
|
8914
8955
|
] });
|
|
8915
8956
|
}
|
|
8916
|
-
var heartIcon,
|
|
8957
|
+
var heartIcon, sizeMap3;
|
|
8917
8958
|
var init_HealthBar = __esm({
|
|
8918
8959
|
"components/game/2d/atoms/HealthBar.tsx"() {
|
|
8919
8960
|
init_cn();
|
|
8961
|
+
init_Box();
|
|
8962
|
+
init_Typography();
|
|
8920
8963
|
heartIcon = (filled, size) => /* @__PURE__ */ jsx(
|
|
8921
8964
|
"svg",
|
|
8922
8965
|
{
|
|
@@ -8928,7 +8971,7 @@ var init_HealthBar = __esm({
|
|
|
8928
8971
|
children: /* @__PURE__ */ jsx("path", { d: "M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" })
|
|
8929
8972
|
}
|
|
8930
8973
|
);
|
|
8931
|
-
|
|
8974
|
+
sizeMap3 = {
|
|
8932
8975
|
sm: { heart: "w-4 h-4", bar: "h-2", text: "text-sm", label: "text-xs", badge: "text-xs px-1.5 py-0.5" },
|
|
8933
8976
|
md: { heart: "w-6 h-6", bar: "h-3", text: "text-base", label: "text-xs", badge: "text-xs px-2 py-0.5" },
|
|
8934
8977
|
lg: { heart: "w-8 h-8", bar: "h-4", text: "text-lg", label: "text-sm", badge: "text-sm px-2.5 py-1" }
|
|
@@ -10716,10 +10759,11 @@ function Canvas2D({
|
|
|
10716
10759
|
}
|
|
10717
10760
|
}
|
|
10718
10761
|
),
|
|
10719
|
-
process.env.NODE_ENV !== "production" && /* @__PURE__ */ jsxs(
|
|
10762
|
+
process.env.NODE_ENV !== "production" && /* @__PURE__ */ jsxs(Box, { "data-game-actions": "", className: "sr-only", "aria-hidden": "true", children: [
|
|
10720
10763
|
tileClickEvent && /* @__PURE__ */ jsx(
|
|
10721
|
-
|
|
10764
|
+
Button,
|
|
10722
10765
|
{
|
|
10766
|
+
variant: "ghost",
|
|
10723
10767
|
"data-event": tileClickEvent,
|
|
10724
10768
|
"data-x": "0",
|
|
10725
10769
|
"data-y": "0",
|
|
@@ -10728,8 +10772,9 @@ function Canvas2D({
|
|
|
10728
10772
|
}
|
|
10729
10773
|
),
|
|
10730
10774
|
unitClickEvent && units && units.length > 0 && /* @__PURE__ */ jsx(
|
|
10731
|
-
|
|
10775
|
+
Button,
|
|
10732
10776
|
{
|
|
10777
|
+
variant: "ghost",
|
|
10733
10778
|
"data-event": unitClickEvent,
|
|
10734
10779
|
"data-unit-id": units[0].id,
|
|
10735
10780
|
onClick: () => eventBus.emit(`UI:${unitClickEvent}`, { unitId: units[0].id }),
|
|
@@ -10738,15 +10783,17 @@ function Canvas2D({
|
|
|
10738
10783
|
)
|
|
10739
10784
|
] }),
|
|
10740
10785
|
unitOverlays.map(({ unit, screenX, screenY }) => /* @__PURE__ */ jsxs(
|
|
10741
|
-
|
|
10786
|
+
Box,
|
|
10742
10787
|
{
|
|
10743
|
-
|
|
10788
|
+
position: "absolute",
|
|
10789
|
+
className: "pointer-events-none",
|
|
10744
10790
|
style: { left: Math.round(screenX), top: Math.round(screenY), transform: "translate(-50%, 0)", zIndex: 5 },
|
|
10745
10791
|
children: [
|
|
10746
10792
|
unit.name && /* @__PURE__ */ jsx(
|
|
10747
|
-
|
|
10793
|
+
Typography,
|
|
10748
10794
|
{
|
|
10749
|
-
|
|
10795
|
+
as: "span",
|
|
10796
|
+
className: "text-white text-xs font-bold px-1.5 py-0.5 rounded mb-0.5 whitespace-nowrap block",
|
|
10750
10797
|
style: { background: unit.team === "player" ? "rgba(59,130,246,0.9)" : unit.team === "enemy" ? "rgba(239,68,68,0.9)" : "rgba(107,114,128,0.9)" },
|
|
10751
10798
|
children: unit.name
|
|
10752
10799
|
}
|
|
@@ -10756,7 +10803,7 @@ function Canvas2D({
|
|
|
10756
10803
|
},
|
|
10757
10804
|
unit.id
|
|
10758
10805
|
)),
|
|
10759
|
-
showMinimap && /* @__PURE__ */ jsx(
|
|
10806
|
+
showMinimap && /* @__PURE__ */ jsx(Box, { position: "absolute", className: "bottom-2 right-2 pointer-events-none", style: { zIndex: 10 }, children: /* @__PURE__ */ jsx(
|
|
10760
10807
|
MiniMap,
|
|
10761
10808
|
{
|
|
10762
10809
|
tiles: miniMapTiles,
|
|
@@ -10778,6 +10825,7 @@ var init_Canvas2D = __esm({
|
|
|
10778
10825
|
init_cn();
|
|
10779
10826
|
init_useEventBus();
|
|
10780
10827
|
init_Box();
|
|
10828
|
+
init_Button();
|
|
10781
10829
|
init_Stack();
|
|
10782
10830
|
init_Icon();
|
|
10783
10831
|
init_Typography();
|
|
@@ -12808,7 +12856,7 @@ var init_Tabs = __esm({
|
|
|
12808
12856
|
isActive ? variant === "pills" ? "text-primary-foreground font-bold" : "text-foreground font-bold" : "text-muted-foreground hover:text-foreground"
|
|
12809
12857
|
),
|
|
12810
12858
|
children: [
|
|
12811
|
-
item.icon && (typeof item.icon === "string" ? /* @__PURE__ */ jsx(Icon, { name: item.icon, size: "sm" }) : /* @__PURE__ */ jsx(Icon, { icon: item.icon, size: "sm" })),
|
|
12859
|
+
item.iconAsset?.url ? /* @__PURE__ */ jsx("img", { src: item.iconAsset.url, alt: item.iconAsset.name ?? item.iconAsset.category ?? "", width: 16, height: 16, style: { imageRendering: "pixelated", objectFit: "contain", width: 16, height: 16 }, className: "flex-shrink-0" }) : item.icon && (typeof item.icon === "string" ? /* @__PURE__ */ jsx(Icon, { name: item.icon, size: "sm" }) : /* @__PURE__ */ jsx(Icon, { icon: item.icon, size: "sm" })),
|
|
12812
12860
|
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: isActive ? "semibold" : "normal", className: "!text-inherit", children: item.label }),
|
|
12813
12861
|
item.badge !== void 0 && /* @__PURE__ */ jsx(Badge, { variant: "default", size: "sm", children: item.badge })
|
|
12814
12862
|
]
|
|
@@ -17155,38 +17203,6 @@ var init_Breadcrumb = __esm({
|
|
|
17155
17203
|
Breadcrumb.displayName = "Breadcrumb";
|
|
17156
17204
|
}
|
|
17157
17205
|
});
|
|
17158
|
-
function GameIcon({ assetUrl, icon, size = "md", alt, className }) {
|
|
17159
|
-
const px = typeof size === "number" ? size : sizeMap3[size];
|
|
17160
|
-
if (assetUrl?.url) {
|
|
17161
|
-
return /* @__PURE__ */ jsx(
|
|
17162
|
-
"img",
|
|
17163
|
-
{
|
|
17164
|
-
src: assetUrl.url,
|
|
17165
|
-
alt: alt ?? assetUrl.category ?? "",
|
|
17166
|
-
width: px,
|
|
17167
|
-
height: px,
|
|
17168
|
-
style: { imageRendering: "pixelated", objectFit: "contain", width: px, height: px },
|
|
17169
|
-
className: cn("flex-shrink-0", className)
|
|
17170
|
-
}
|
|
17171
|
-
);
|
|
17172
|
-
}
|
|
17173
|
-
const I = typeof icon === "string" ? resolveIcon(icon) : icon;
|
|
17174
|
-
return /* @__PURE__ */ jsx(I, { width: px, height: px, className: cn("flex-shrink-0", className) });
|
|
17175
|
-
}
|
|
17176
|
-
var sizeMap3;
|
|
17177
|
-
var init_GameIcon = __esm({
|
|
17178
|
-
"components/game/2d/atoms/GameIcon.tsx"() {
|
|
17179
|
-
"use client";
|
|
17180
|
-
init_cn();
|
|
17181
|
-
init_Icon();
|
|
17182
|
-
sizeMap3 = {
|
|
17183
|
-
sm: 16,
|
|
17184
|
-
md: 24,
|
|
17185
|
-
lg: 32
|
|
17186
|
-
};
|
|
17187
|
-
GameIcon.displayName = "GameIcon";
|
|
17188
|
-
}
|
|
17189
|
-
});
|
|
17190
17206
|
function BuilderBoard({
|
|
17191
17207
|
entity,
|
|
17192
17208
|
completeEvent = "PUZZLE_COMPLETE",
|
|
@@ -19000,6 +19016,7 @@ function GameCard({
|
|
|
19000
19016
|
id,
|
|
19001
19017
|
cost,
|
|
19002
19018
|
art,
|
|
19019
|
+
frameAsset,
|
|
19003
19020
|
attack,
|
|
19004
19021
|
defense,
|
|
19005
19022
|
name,
|
|
@@ -19017,16 +19034,19 @@ function GameCard({
|
|
|
19017
19034
|
if (clickEvent) eventBus.emit(`UI:${clickEvent}`, { cardId: id });
|
|
19018
19035
|
}, [disabled, id, onClick, clickEvent, eventBus]);
|
|
19019
19036
|
const artPx = artPxMap[size];
|
|
19037
|
+
const frameStyle = frameAsset?.url ? { backgroundImage: `url(${frameAsset.url})`, backgroundSize: "100% 100%", backgroundRepeat: "no-repeat" } : {};
|
|
19020
19038
|
return /* @__PURE__ */ jsxs(
|
|
19021
|
-
|
|
19039
|
+
Button,
|
|
19022
19040
|
{
|
|
19023
|
-
|
|
19041
|
+
variant: "ghost",
|
|
19024
19042
|
onClick: handleClick,
|
|
19025
19043
|
disabled,
|
|
19026
19044
|
title: name,
|
|
19045
|
+
style: frameStyle,
|
|
19027
19046
|
className: cn(
|
|
19028
|
-
"relative flex flex-col items-center rounded-interactive
|
|
19047
|
+
"relative flex flex-col items-center rounded-interactive",
|
|
19029
19048
|
"bg-card/90 px-1.5 pt-1.5 pb-1 transition-all duration-150",
|
|
19049
|
+
frameAsset?.url ? "border-0" : "border-2",
|
|
19030
19050
|
cardSizeMap[size],
|
|
19031
19051
|
disabled ? "border-border opacity-50 cursor-not-allowed" : "border-accent hover:brightness-125 hover:-translate-y-1 cursor-pointer",
|
|
19032
19052
|
selected && "ring-2 ring-foreground ring-offset-1 ring-offset-background -translate-y-1",
|
|
@@ -19034,8 +19054,9 @@ function GameCard({
|
|
|
19034
19054
|
),
|
|
19035
19055
|
children: [
|
|
19036
19056
|
cost != null && /* @__PURE__ */ jsx(
|
|
19037
|
-
|
|
19057
|
+
Typography,
|
|
19038
19058
|
{
|
|
19059
|
+
as: "span",
|
|
19039
19060
|
className: cn(
|
|
19040
19061
|
"absolute -top-2 -left-2 flex items-center justify-center",
|
|
19041
19062
|
"min-w-[22px] h-[22px] rounded-full px-1",
|
|
@@ -19044,17 +19065,7 @@ function GameCard({
|
|
|
19044
19065
|
children: cost
|
|
19045
19066
|
}
|
|
19046
19067
|
),
|
|
19047
|
-
/* @__PURE__ */ jsx(Box, { className: "flex-1 flex items-center justify-center w-full", children: art ? /* @__PURE__ */ jsx(
|
|
19048
|
-
"img",
|
|
19049
|
-
{
|
|
19050
|
-
src: art.url,
|
|
19051
|
-
alt: name ?? id,
|
|
19052
|
-
width: artPx,
|
|
19053
|
-
height: artPx,
|
|
19054
|
-
style: { imageRendering: "pixelated", objectFit: "contain" },
|
|
19055
|
-
className: "flex-shrink-0"
|
|
19056
|
-
}
|
|
19057
|
-
) : /* @__PURE__ */ jsx(Box, { className: "rounded bg-muted/40", style: { width: artPx, height: artPx } }) }),
|
|
19068
|
+
/* @__PURE__ */ jsx(Box, { className: "flex-1 flex items-center justify-center w-full", children: art ? /* @__PURE__ */ jsx(GameIcon, { assetUrl: art, icon: "image", size: artPx, alt: name ?? id, className: "flex-shrink-0" }) : /* @__PURE__ */ jsx(Box, { className: "rounded bg-muted/40", style: { width: artPx, height: artPx } }) }),
|
|
19058
19069
|
name != null && /* @__PURE__ */ jsx(
|
|
19059
19070
|
Typography,
|
|
19060
19071
|
{
|
|
@@ -19064,8 +19075,8 @@ function GameCard({
|
|
|
19064
19075
|
}
|
|
19065
19076
|
),
|
|
19066
19077
|
(attack != null || defense != null) && /* @__PURE__ */ jsxs(Box, { className: "flex w-full items-center justify-between px-0.5 text-[10px] font-bold leading-none", children: [
|
|
19067
|
-
/* @__PURE__ */ jsx("span",
|
|
19068
|
-
/* @__PURE__ */ jsx("span",
|
|
19078
|
+
/* @__PURE__ */ jsx(Typography, { as: "span", className: "text-error", children: attack != null ? `\u2694${attack}` : "" }),
|
|
19079
|
+
/* @__PURE__ */ jsx(Typography, { as: "span", className: "text-info", children: defense != null ? `\u{1F6E1}${defense}` : "" })
|
|
19069
19080
|
] })
|
|
19070
19081
|
]
|
|
19071
19082
|
}
|
|
@@ -19078,7 +19089,9 @@ var init_GameCard = __esm({
|
|
|
19078
19089
|
init_cn();
|
|
19079
19090
|
init_useEventBus();
|
|
19080
19091
|
init_Box();
|
|
19092
|
+
init_Button();
|
|
19081
19093
|
init_Typography();
|
|
19094
|
+
init_GameIcon();
|
|
19082
19095
|
cardSizeMap = {
|
|
19083
19096
|
sm: "w-16 h-24",
|
|
19084
19097
|
md: "w-20 h-28",
|
|
@@ -21489,11 +21502,11 @@ function ChoiceButton({
|
|
|
21489
21502
|
}) {
|
|
21490
21503
|
const eventBus = useEventBus();
|
|
21491
21504
|
return /* @__PURE__ */ jsxs(
|
|
21492
|
-
|
|
21505
|
+
Button,
|
|
21493
21506
|
{
|
|
21494
|
-
|
|
21507
|
+
variant: "ghost",
|
|
21495
21508
|
disabled,
|
|
21496
|
-
onClick: (
|
|
21509
|
+
onClick: () => {
|
|
21497
21510
|
if (action) eventBus.emit(`UI:${action}`, {});
|
|
21498
21511
|
onClick?.();
|
|
21499
21512
|
},
|
|
@@ -21506,8 +21519,9 @@ function ChoiceButton({
|
|
|
21506
21519
|
),
|
|
21507
21520
|
children: [
|
|
21508
21521
|
index !== void 0 && /* @__PURE__ */ jsxs(
|
|
21509
|
-
|
|
21522
|
+
Typography,
|
|
21510
21523
|
{
|
|
21524
|
+
as: "span",
|
|
21511
21525
|
className: cn(
|
|
21512
21526
|
"flex-shrink-0 font-mono font-bold text-sm",
|
|
21513
21527
|
selected ? "text-accent" : "text-muted-foreground"
|
|
@@ -21518,24 +21532,14 @@ function ChoiceButton({
|
|
|
21518
21532
|
]
|
|
21519
21533
|
}
|
|
21520
21534
|
),
|
|
21521
|
-
assetUrl ? /* @__PURE__ */ jsx(
|
|
21522
|
-
"img",
|
|
21523
|
-
{
|
|
21524
|
-
src: assetUrl.url,
|
|
21525
|
-
alt: "",
|
|
21526
|
-
width: 16,
|
|
21527
|
-
height: 16,
|
|
21528
|
-
style: { imageRendering: "pixelated", objectFit: "contain" },
|
|
21529
|
-
className: "flex-shrink-0"
|
|
21530
|
-
}
|
|
21531
|
-
) : icon ? /* @__PURE__ */ jsx("span", { className: "flex-shrink-0 text-sm", children: typeof icon === "string" ? (() => {
|
|
21535
|
+
assetUrl ? /* @__PURE__ */ jsx(GameIcon, { assetUrl, icon: "image", size: 16, className: "flex-shrink-0" }) : icon ? /* @__PURE__ */ jsx(Box, { as: "span", className: "flex-shrink-0 text-sm", children: typeof icon === "string" ? (() => {
|
|
21532
21536
|
const I = resolveIcon(icon);
|
|
21533
21537
|
return I ? /* @__PURE__ */ jsx(I, { className: "w-4 h-4" }) : null;
|
|
21534
21538
|
})() : /* @__PURE__ */ (() => {
|
|
21535
21539
|
const I = icon;
|
|
21536
21540
|
return /* @__PURE__ */ jsx(I, { className: "w-4 h-4" });
|
|
21537
21541
|
})() }) : null,
|
|
21538
|
-
/* @__PURE__ */ jsx("span",
|
|
21542
|
+
/* @__PURE__ */ jsx(Typography, { as: "span", className: "text-sm leading-snug", children: text })
|
|
21539
21543
|
]
|
|
21540
21544
|
}
|
|
21541
21545
|
);
|
|
@@ -21545,6 +21549,10 @@ var init_ChoiceButton = __esm({
|
|
|
21545
21549
|
init_cn();
|
|
21546
21550
|
init_Icon();
|
|
21547
21551
|
init_useEventBus();
|
|
21552
|
+
init_Button();
|
|
21553
|
+
init_Box();
|
|
21554
|
+
init_Typography();
|
|
21555
|
+
init_GameIcon();
|
|
21548
21556
|
ChoiceButton.displayName = "ChoiceButton";
|
|
21549
21557
|
}
|
|
21550
21558
|
});
|
|
@@ -22222,7 +22230,7 @@ function ComboCounter({
|
|
|
22222
22230
|
const sizes = sizeMap4[size];
|
|
22223
22231
|
if (combo <= 0) return null;
|
|
22224
22232
|
return /* @__PURE__ */ jsxs(
|
|
22225
|
-
|
|
22233
|
+
Box,
|
|
22226
22234
|
{
|
|
22227
22235
|
className: cn(
|
|
22228
22236
|
"inline-flex flex-col items-center justify-center",
|
|
@@ -22232,24 +22240,14 @@ function ComboCounter({
|
|
|
22232
22240
|
className
|
|
22233
22241
|
),
|
|
22234
22242
|
children: [
|
|
22235
|
-
assetUrl && /* @__PURE__ */ jsx(
|
|
22236
|
-
|
|
22237
|
-
|
|
22238
|
-
|
|
22239
|
-
alt: "combo",
|
|
22240
|
-
width: 24,
|
|
22241
|
-
height: 24,
|
|
22242
|
-
style: { imageRendering: "pixelated", objectFit: "contain" },
|
|
22243
|
-
className: "flex-shrink-0 mb-0.5"
|
|
22244
|
-
}
|
|
22245
|
-
),
|
|
22246
|
-
/* @__PURE__ */ jsx("span", { className: cn("font-black tabular-nums leading-none", sizes.combo, getComboIntensity(combo)), children: combo }),
|
|
22247
|
-
/* @__PURE__ */ jsx("span", { className: cn("font-bold uppercase tracking-wider text-muted-foreground", sizes.label), children: "combo" }),
|
|
22248
|
-
multiplier != null && multiplier > 1 && /* @__PURE__ */ jsxs("span", { className: cn("font-bold text-warning tabular-nums", sizes.multiplier), children: [
|
|
22243
|
+
assetUrl && /* @__PURE__ */ jsx(GameIcon, { assetUrl, icon: "image", size: 24, className: "flex-shrink-0 mb-0.5" }),
|
|
22244
|
+
/* @__PURE__ */ jsx(Typography, { as: "span", className: cn("font-black tabular-nums leading-none", sizes.combo, getComboIntensity(combo)), children: combo }),
|
|
22245
|
+
/* @__PURE__ */ jsx(Typography, { as: "span", className: cn("font-bold uppercase tracking-wider text-muted-foreground", sizes.label), children: "combo" }),
|
|
22246
|
+
multiplier != null && multiplier > 1 && /* @__PURE__ */ jsxs(Typography, { as: "span", className: cn("font-bold text-warning tabular-nums", sizes.multiplier), children: [
|
|
22249
22247
|
"x",
|
|
22250
22248
|
multiplier.toFixed(1)
|
|
22251
22249
|
] }),
|
|
22252
|
-
streak != null && streak > 0 && /* @__PURE__ */ jsxs("span",
|
|
22250
|
+
streak != null && streak > 0 && /* @__PURE__ */ jsxs(Typography, { as: "span", className: cn("text-muted-foreground tabular-nums", sizes.label), children: [
|
|
22253
22251
|
streak,
|
|
22254
22252
|
" streak"
|
|
22255
22253
|
] })
|
|
@@ -22261,6 +22259,9 @@ var DEFAULT_ASSET_URL2, sizeMap4;
|
|
|
22261
22259
|
var init_ComboCounter = __esm({
|
|
22262
22260
|
"components/game/2d/atoms/ComboCounter.tsx"() {
|
|
22263
22261
|
init_cn();
|
|
22262
|
+
init_Box();
|
|
22263
|
+
init_Typography();
|
|
22264
|
+
init_GameIcon();
|
|
22264
22265
|
DEFAULT_ASSET_URL2 = {
|
|
22265
22266
|
url: "https://almadar-kflow-assets.web.app/shared/effects/flash/flash00.png",
|
|
22266
22267
|
role: "effect",
|
|
@@ -22510,9 +22511,9 @@ function ControlButton({
|
|
|
22510
22511
|
[isPressed, releaseEvent, eventBus, onRelease]
|
|
22511
22512
|
);
|
|
22512
22513
|
return /* @__PURE__ */ jsx(
|
|
22513
|
-
|
|
22514
|
+
Button,
|
|
22514
22515
|
{
|
|
22515
|
-
|
|
22516
|
+
variant,
|
|
22516
22517
|
disabled,
|
|
22517
22518
|
onPointerDown: handlePointerDown,
|
|
22518
22519
|
onPointerUp: handlePointerUp,
|
|
@@ -22530,23 +22531,13 @@ function ControlButton({
|
|
|
22530
22531
|
disabled && "opacity-50 cursor-not-allowed",
|
|
22531
22532
|
className
|
|
22532
22533
|
),
|
|
22533
|
-
children: assetUrl ? /* @__PURE__ */ jsx(
|
|
22534
|
-
"img",
|
|
22535
|
-
{
|
|
22536
|
-
src: assetUrl.url,
|
|
22537
|
-
alt: "",
|
|
22538
|
-
width: 24,
|
|
22539
|
-
height: 24,
|
|
22540
|
-
style: { imageRendering: "pixelated", objectFit: "contain" },
|
|
22541
|
-
className: "flex-shrink-0"
|
|
22542
|
-
}
|
|
22543
|
-
) : icon ? /* @__PURE__ */ jsx("span", { className: "text-2xl", children: typeof icon === "string" ? /^[a-zA-Z0-9-]+$/.test(icon) ? (() => {
|
|
22534
|
+
children: assetUrl ? /* @__PURE__ */ jsx(GameIcon, { assetUrl, icon: "image", size: 24, className: "flex-shrink-0" }) : icon ? /* @__PURE__ */ jsx(Box, { as: "span", className: "text-2xl", children: typeof icon === "string" ? /^[a-zA-Z0-9-]+$/.test(icon) ? (() => {
|
|
22544
22535
|
const I = resolveIcon(icon);
|
|
22545
22536
|
return I ? /* @__PURE__ */ jsx(I, { className: "w-6 h-6" }) : null;
|
|
22546
22537
|
})() : icon : /* @__PURE__ */ (() => {
|
|
22547
22538
|
const I = icon;
|
|
22548
22539
|
return /* @__PURE__ */ jsx(I, { className: "w-6 h-6" });
|
|
22549
|
-
})() }) : label ? /* @__PURE__ */ jsx("span",
|
|
22540
|
+
})() }) : label ? /* @__PURE__ */ jsx(Typography, { as: "span", children: label }) : null
|
|
22550
22541
|
}
|
|
22551
22542
|
);
|
|
22552
22543
|
}
|
|
@@ -22557,6 +22548,10 @@ var init_ControlButton = __esm({
|
|
|
22557
22548
|
init_cn();
|
|
22558
22549
|
init_useEventBus();
|
|
22559
22550
|
init_Icon();
|
|
22551
|
+
init_Button();
|
|
22552
|
+
init_Box();
|
|
22553
|
+
init_Typography();
|
|
22554
|
+
init_GameIcon();
|
|
22560
22555
|
sizeMap5 = {
|
|
22561
22556
|
sm: "w-10 h-10 text-sm",
|
|
22562
22557
|
md: "w-14 h-14 text-base",
|
|
@@ -22641,22 +22636,22 @@ function ControlGrid({
|
|
|
22641
22636
|
},
|
|
22642
22637
|
d
|
|
22643
22638
|
);
|
|
22644
|
-
return /* @__PURE__ */ jsxs(
|
|
22645
|
-
/* @__PURE__ */ jsx(
|
|
22639
|
+
return /* @__PURE__ */ jsxs(Box, { className: cn("inline-grid grid-cols-3", ds.gap, ds.container, className), children: [
|
|
22640
|
+
/* @__PURE__ */ jsx(Box, {}),
|
|
22646
22641
|
dir("up"),
|
|
22647
|
-
/* @__PURE__ */ jsx(
|
|
22642
|
+
/* @__PURE__ */ jsx(Box, {}),
|
|
22648
22643
|
dir("left"),
|
|
22649
|
-
/* @__PURE__ */ jsx(
|
|
22644
|
+
/* @__PURE__ */ jsx(Box, { className: "flex items-center justify-center", children: /* @__PURE__ */ jsx(Box, { className: "w-6 h-6 rounded-interactive bg-muted border-2 border-muted-foreground" }) }),
|
|
22650
22645
|
dir("right"),
|
|
22651
|
-
/* @__PURE__ */ jsx(
|
|
22646
|
+
/* @__PURE__ */ jsx(Box, {}),
|
|
22652
22647
|
dir("down"),
|
|
22653
|
-
/* @__PURE__ */ jsx(
|
|
22648
|
+
/* @__PURE__ */ jsx(Box, {})
|
|
22654
22649
|
] });
|
|
22655
22650
|
}
|
|
22656
22651
|
if (layout === "diamond" && buttons.length === 4) {
|
|
22657
22652
|
const [top, right, bottom, left] = buttons;
|
|
22658
|
-
return /* @__PURE__ */ jsxs(
|
|
22659
|
-
/* @__PURE__ */ jsx(
|
|
22653
|
+
return /* @__PURE__ */ jsxs(Box, { className: cn(layoutClass.diamond, className), children: [
|
|
22654
|
+
/* @__PURE__ */ jsx(Box, {}),
|
|
22660
22655
|
/* @__PURE__ */ jsx(
|
|
22661
22656
|
ControlButton,
|
|
22662
22657
|
{
|
|
@@ -22671,7 +22666,7 @@ function ControlGrid({
|
|
|
22671
22666
|
disabled
|
|
22672
22667
|
}
|
|
22673
22668
|
),
|
|
22674
|
-
/* @__PURE__ */ jsx(
|
|
22669
|
+
/* @__PURE__ */ jsx(Box, {}),
|
|
22675
22670
|
/* @__PURE__ */ jsx(
|
|
22676
22671
|
ControlButton,
|
|
22677
22672
|
{
|
|
@@ -22686,7 +22681,7 @@ function ControlGrid({
|
|
|
22686
22681
|
disabled
|
|
22687
22682
|
}
|
|
22688
22683
|
),
|
|
22689
|
-
/* @__PURE__ */ jsx(
|
|
22684
|
+
/* @__PURE__ */ jsx(Box, {}),
|
|
22690
22685
|
/* @__PURE__ */ jsx(
|
|
22691
22686
|
ControlButton,
|
|
22692
22687
|
{
|
|
@@ -22701,7 +22696,7 @@ function ControlGrid({
|
|
|
22701
22696
|
disabled
|
|
22702
22697
|
}
|
|
22703
22698
|
),
|
|
22704
|
-
/* @__PURE__ */ jsx(
|
|
22699
|
+
/* @__PURE__ */ jsx(Box, {}),
|
|
22705
22700
|
/* @__PURE__ */ jsx(
|
|
22706
22701
|
ControlButton,
|
|
22707
22702
|
{
|
|
@@ -22716,10 +22711,10 @@ function ControlGrid({
|
|
|
22716
22711
|
disabled
|
|
22717
22712
|
}
|
|
22718
22713
|
),
|
|
22719
|
-
/* @__PURE__ */ jsx(
|
|
22714
|
+
/* @__PURE__ */ jsx(Box, {})
|
|
22720
22715
|
] });
|
|
22721
22716
|
}
|
|
22722
|
-
return /* @__PURE__ */ jsx(
|
|
22717
|
+
return /* @__PURE__ */ jsx(Box, { className: cn(layoutClass[layout], className), children: buttons.map((button) => /* @__PURE__ */ jsx(
|
|
22723
22718
|
ControlButton,
|
|
22724
22719
|
{
|
|
22725
22720
|
icon: button.icon,
|
|
@@ -22741,6 +22736,7 @@ var init_ControlGrid = __esm({
|
|
|
22741
22736
|
"use client";
|
|
22742
22737
|
init_cn();
|
|
22743
22738
|
init_useEventBus();
|
|
22739
|
+
init_Box();
|
|
22744
22740
|
init_ControlButton();
|
|
22745
22741
|
sizeKey = { sm: "sm", md: "md", lg: "lg" };
|
|
22746
22742
|
layoutClass = {
|
|
@@ -23005,8 +23001,9 @@ function DamageNumber({
|
|
|
23005
23001
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
23006
23002
|
/* @__PURE__ */ jsx("style", { children: floatKeyframes }),
|
|
23007
23003
|
/* @__PURE__ */ jsxs(
|
|
23008
|
-
|
|
23004
|
+
Typography,
|
|
23009
23005
|
{
|
|
23006
|
+
as: "span",
|
|
23010
23007
|
className: cn(
|
|
23011
23008
|
"inline-flex items-center gap-0.5 font-mono select-none pointer-events-none",
|
|
23012
23009
|
sizeMap6[size],
|
|
@@ -23015,17 +23012,7 @@ function DamageNumber({
|
|
|
23015
23012
|
),
|
|
23016
23013
|
style: { animation: "damageFloat 1s ease-out forwards" },
|
|
23017
23014
|
children: [
|
|
23018
|
-
assetUrl && /* @__PURE__ */ jsx(
|
|
23019
|
-
"img",
|
|
23020
|
-
{
|
|
23021
|
-
src: assetUrl.url,
|
|
23022
|
-
alt: "",
|
|
23023
|
-
width: 14,
|
|
23024
|
-
height: 14,
|
|
23025
|
-
style: { imageRendering: "pixelated", objectFit: "contain" },
|
|
23026
|
-
className: "flex-shrink-0"
|
|
23027
|
-
}
|
|
23028
|
-
),
|
|
23015
|
+
assetUrl && /* @__PURE__ */ jsx(GameIcon, { assetUrl, icon: "image", size: 14, className: "flex-shrink-0" }),
|
|
23029
23016
|
displayText
|
|
23030
23017
|
]
|
|
23031
23018
|
}
|
|
@@ -23036,6 +23023,8 @@ var sizeMap6, typeStyles, floatKeyframes, DEFAULT_ASSET_URL4;
|
|
|
23036
23023
|
var init_DamageNumber = __esm({
|
|
23037
23024
|
"components/game/2d/atoms/DamageNumber.tsx"() {
|
|
23038
23025
|
init_cn();
|
|
23026
|
+
init_Typography();
|
|
23027
|
+
init_GameIcon();
|
|
23039
23028
|
sizeMap6 = {
|
|
23040
23029
|
sm: "text-sm",
|
|
23041
23030
|
md: "text-lg",
|
|
@@ -29397,7 +29386,7 @@ function ScoreDisplay({
|
|
|
29397
29386
|
const resolvedValue = typeof value === "number" && !Number.isNaN(value) ? value : typeof score === "number" && !Number.isNaN(score) ? score : 0;
|
|
29398
29387
|
const formattedValue = new Intl.NumberFormat(locale).format(resolvedValue);
|
|
29399
29388
|
return /* @__PURE__ */ jsxs(
|
|
29400
|
-
|
|
29389
|
+
Box,
|
|
29401
29390
|
{
|
|
29402
29391
|
className: cn(
|
|
29403
29392
|
"flex items-center gap-2 font-bold",
|
|
@@ -29405,19 +29394,9 @@ function ScoreDisplay({
|
|
|
29405
29394
|
className
|
|
29406
29395
|
),
|
|
29407
29396
|
children: [
|
|
29408
|
-
assetUrl ? /* @__PURE__ */ jsx(
|
|
29409
|
-
|
|
29410
|
-
|
|
29411
|
-
src: assetUrl.url,
|
|
29412
|
-
alt: "",
|
|
29413
|
-
width: 20,
|
|
29414
|
-
height: 20,
|
|
29415
|
-
style: { imageRendering: "pixelated", objectFit: "contain" },
|
|
29416
|
-
className: "flex-shrink-0"
|
|
29417
|
-
}
|
|
29418
|
-
) : icon ? /* @__PURE__ */ jsx("span", { className: "flex-shrink-0", children: typeof icon === "string" ? /* @__PURE__ */ jsx(Icon, { name: icon }) : /* @__PURE__ */ jsx(Icon, { icon }) }) : null,
|
|
29419
|
-
label && /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: label }),
|
|
29420
|
-
/* @__PURE__ */ jsx("span", { className: "tabular-nums", children: formattedValue })
|
|
29397
|
+
assetUrl ? /* @__PURE__ */ jsx(GameIcon, { assetUrl, icon: "image", size: 20, className: "flex-shrink-0" }) : icon ? /* @__PURE__ */ jsx(Box, { as: "span", className: "flex-shrink-0", children: typeof icon === "string" ? /* @__PURE__ */ jsx(Icon, { name: icon }) : /* @__PURE__ */ jsx(Icon, { icon }) }) : null,
|
|
29398
|
+
label && /* @__PURE__ */ jsx(Typography, { as: "span", className: "text-muted-foreground", children: label }),
|
|
29399
|
+
/* @__PURE__ */ jsx(Typography, { as: "span", className: "tabular-nums", children: formattedValue })
|
|
29421
29400
|
]
|
|
29422
29401
|
}
|
|
29423
29402
|
);
|
|
@@ -29427,6 +29406,9 @@ var init_ScoreDisplay = __esm({
|
|
|
29427
29406
|
"components/game/2d/atoms/ScoreDisplay.tsx"() {
|
|
29428
29407
|
init_cn();
|
|
29429
29408
|
init_Icon();
|
|
29409
|
+
init_Box();
|
|
29410
|
+
init_Typography();
|
|
29411
|
+
init_GameIcon();
|
|
29430
29412
|
sizeMap8 = {
|
|
29431
29413
|
sm: "text-sm",
|
|
29432
29414
|
md: "text-lg",
|
|
@@ -29487,12 +29469,12 @@ function Sprite({
|
|
|
29487
29469
|
onClick?.();
|
|
29488
29470
|
};
|
|
29489
29471
|
return /* @__PURE__ */ jsx(
|
|
29490
|
-
|
|
29472
|
+
Box,
|
|
29491
29473
|
{
|
|
29474
|
+
position: "absolute",
|
|
29492
29475
|
className,
|
|
29493
29476
|
onClick: action || onClick ? handleClick : void 0,
|
|
29494
29477
|
style: {
|
|
29495
|
-
position: "absolute",
|
|
29496
29478
|
width: frameWidth,
|
|
29497
29479
|
height: frameHeight,
|
|
29498
29480
|
backgroundImage: `url(${spritesheet.url})`,
|
|
@@ -29548,6 +29530,7 @@ var init_Sprite = __esm({
|
|
|
29548
29530
|
"components/game/2d/atoms/Sprite.tsx"() {
|
|
29549
29531
|
"use client";
|
|
29550
29532
|
init_useEventBus();
|
|
29533
|
+
init_Box();
|
|
29551
29534
|
init_spriteAnimation();
|
|
29552
29535
|
DEFAULT_SPRITESHEET = {
|
|
29553
29536
|
url: "https://almadar-kflow-assets.web.app/shared/isometric-blocks/Spritesheet/allTiles_sheet.png",
|
|
@@ -29584,17 +29567,7 @@ function StateIndicator({
|
|
|
29584
29567
|
className
|
|
29585
29568
|
),
|
|
29586
29569
|
children: [
|
|
29587
|
-
/* @__PURE__ */ jsx(Box, { as: "span", children: assetUrl ? /* @__PURE__ */ jsx(
|
|
29588
|
-
"img",
|
|
29589
|
-
{
|
|
29590
|
-
src: assetUrl.url,
|
|
29591
|
-
alt: displayLabel,
|
|
29592
|
-
width: 16,
|
|
29593
|
-
height: 16,
|
|
29594
|
-
style: { imageRendering: "pixelated", objectFit: "contain" },
|
|
29595
|
-
className: "flex-shrink-0"
|
|
29596
|
-
}
|
|
29597
|
-
) : typeof config.icon === "string" ? /^[a-zA-Z0-9-]+$/.test(config.icon) ? /* @__PURE__ */ jsx(Icon, { name: config.icon }) : config.icon : /* @__PURE__ */ jsx(Icon, { icon: config.icon }) }),
|
|
29570
|
+
/* @__PURE__ */ jsx(Box, { as: "span", children: assetUrl ? /* @__PURE__ */ jsx(GameIcon, { assetUrl, icon: "image", size: 16, alt: displayLabel, className: "flex-shrink-0" }) : typeof config.icon === "string" ? /^[a-zA-Z0-9-]+$/.test(config.icon) ? /* @__PURE__ */ jsx(Icon, { name: config.icon }) : config.icon : /* @__PURE__ */ jsx(Icon, { icon: config.icon }) }),
|
|
29598
29571
|
/* @__PURE__ */ jsx(Box, { as: "span", children: displayLabel })
|
|
29599
29572
|
]
|
|
29600
29573
|
}
|
|
@@ -29606,6 +29579,7 @@ var init_StateIndicator = __esm({
|
|
|
29606
29579
|
init_Box();
|
|
29607
29580
|
init_Icon();
|
|
29608
29581
|
init_cn();
|
|
29582
|
+
init_GameIcon();
|
|
29609
29583
|
DEFAULT_ASSET_URL6 = {
|
|
29610
29584
|
url: "https://almadar-kflow-assets.web.app/shared/isometric-dungeon/Isometric/chestClosed_E.png",
|
|
29611
29585
|
role: "ui",
|
|
@@ -29659,7 +29633,7 @@ function TimerDisplay({
|
|
|
29659
29633
|
}) {
|
|
29660
29634
|
const isLow = lowThreshold != null && seconds <= lowThreshold && seconds > 0;
|
|
29661
29635
|
return /* @__PURE__ */ jsxs(
|
|
29662
|
-
|
|
29636
|
+
Box,
|
|
29663
29637
|
{
|
|
29664
29638
|
className: cn(
|
|
29665
29639
|
"inline-flex items-center gap-1 justify-center rounded-container",
|
|
@@ -29671,7 +29645,7 @@ function TimerDisplay({
|
|
|
29671
29645
|
className
|
|
29672
29646
|
),
|
|
29673
29647
|
children: [
|
|
29674
|
-
iconAsset && /* @__PURE__ */ jsx(
|
|
29648
|
+
iconAsset && /* @__PURE__ */ jsx(GameIcon, { assetUrl: iconAsset, icon: "image", size: 16, className: "w-4 h-4 object-contain flex-shrink-0" }),
|
|
29675
29649
|
formatTime(seconds, format)
|
|
29676
29650
|
]
|
|
29677
29651
|
}
|
|
@@ -29681,6 +29655,8 @@ var sizeMap9;
|
|
|
29681
29655
|
var init_TimerDisplay = __esm({
|
|
29682
29656
|
"components/game/2d/atoms/TimerDisplay.tsx"() {
|
|
29683
29657
|
init_cn();
|
|
29658
|
+
init_Box();
|
|
29659
|
+
init_GameIcon();
|
|
29684
29660
|
sizeMap9 = {
|
|
29685
29661
|
sm: "text-sm px-2 py-0.5",
|
|
29686
29662
|
md: "text-lg px-3 py-1",
|
|
@@ -29701,7 +29677,7 @@ function ResourceCounter({
|
|
|
29701
29677
|
}) {
|
|
29702
29678
|
const sizes = sizeMap10[size];
|
|
29703
29679
|
return /* @__PURE__ */ jsxs(
|
|
29704
|
-
|
|
29680
|
+
Box,
|
|
29705
29681
|
{
|
|
29706
29682
|
className: cn(
|
|
29707
29683
|
"inline-flex items-center rounded-container",
|
|
@@ -29710,21 +29686,11 @@ function ResourceCounter({
|
|
|
29710
29686
|
className
|
|
29711
29687
|
),
|
|
29712
29688
|
children: [
|
|
29713
|
-
assetUrl ? /* @__PURE__ */ jsx(
|
|
29714
|
-
|
|
29715
|
-
|
|
29716
|
-
src: assetUrl.url,
|
|
29717
|
-
alt: label,
|
|
29718
|
-
width: sizes.img,
|
|
29719
|
-
height: sizes.img,
|
|
29720
|
-
style: { imageRendering: "pixelated", objectFit: "contain" },
|
|
29721
|
-
className: "flex-shrink-0"
|
|
29722
|
-
}
|
|
29723
|
-
) : icon ? /* @__PURE__ */ jsx("span", { className: cn("flex-shrink-0", sizes.icon), children: typeof icon === "string" ? /* @__PURE__ */ jsx(Icon, { name: icon }) : /* @__PURE__ */ jsx(Icon, { icon }) }) : null,
|
|
29724
|
-
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: label }),
|
|
29725
|
-
/* @__PURE__ */ jsxs("span", { className: cn("font-bold tabular-nums", color && (color in colorTokenClasses2 ? colorTokenClasses2[color] : color)), children: [
|
|
29689
|
+
assetUrl ? /* @__PURE__ */ jsx(GameIcon, { assetUrl, icon: "image", size: sizes.img, alt: label, className: "flex-shrink-0" }) : icon ? /* @__PURE__ */ jsx(Box, { as: "span", className: cn("flex-shrink-0", sizes.icon), children: typeof icon === "string" ? /* @__PURE__ */ jsx(Icon, { name: icon }) : /* @__PURE__ */ jsx(Icon, { icon }) }) : null,
|
|
29690
|
+
/* @__PURE__ */ jsx(Typography, { as: "span", className: "text-muted-foreground", children: label }),
|
|
29691
|
+
/* @__PURE__ */ jsxs(Typography, { as: "span", className: cn("font-bold tabular-nums", color && (color in colorTokenClasses2 ? colorTokenClasses2[color] : color)), children: [
|
|
29726
29692
|
value,
|
|
29727
|
-
max != null && /* @__PURE__ */ jsxs("span",
|
|
29693
|
+
max != null && /* @__PURE__ */ jsxs(Typography, { as: "span", className: "text-muted-foreground", children: [
|
|
29728
29694
|
"/",
|
|
29729
29695
|
max
|
|
29730
29696
|
] })
|
|
@@ -29738,6 +29704,9 @@ var init_ResourceCounter = __esm({
|
|
|
29738
29704
|
"components/game/2d/atoms/ResourceCounter.tsx"() {
|
|
29739
29705
|
init_cn();
|
|
29740
29706
|
init_Icon();
|
|
29707
|
+
init_Box();
|
|
29708
|
+
init_Typography();
|
|
29709
|
+
init_GameIcon();
|
|
29741
29710
|
colorTokenClasses2 = {
|
|
29742
29711
|
primary: "text-primary",
|
|
29743
29712
|
secondary: "text-secondary",
|
|
@@ -29776,9 +29745,9 @@ function ItemSlot({
|
|
|
29776
29745
|
const isClickable = onClick != null || action != null;
|
|
29777
29746
|
const px = assetSizeMap[size];
|
|
29778
29747
|
return /* @__PURE__ */ jsx(
|
|
29779
|
-
|
|
29748
|
+
Button,
|
|
29780
29749
|
{
|
|
29781
|
-
|
|
29750
|
+
variant: "ghost",
|
|
29782
29751
|
onClick: () => {
|
|
29783
29752
|
if (action) eventBus.emit(`UI:${action}`, {});
|
|
29784
29753
|
onClick?.();
|
|
@@ -29797,21 +29766,12 @@ function ItemSlot({
|
|
|
29797
29766
|
!isClickable && "cursor-default",
|
|
29798
29767
|
className
|
|
29799
29768
|
),
|
|
29800
|
-
children: empty ? /* @__PURE__ */ jsx("span",
|
|
29801
|
-
assetUrl ? /* @__PURE__ */ jsx(
|
|
29802
|
-
"img",
|
|
29803
|
-
{
|
|
29804
|
-
src: assetUrl?.url,
|
|
29805
|
-
alt: label,
|
|
29806
|
-
width: px,
|
|
29807
|
-
height: px,
|
|
29808
|
-
style: { imageRendering: "pixelated", objectFit: "contain" },
|
|
29809
|
-
className: "flex-shrink-0"
|
|
29810
|
-
}
|
|
29811
|
-
) : icon ? /* @__PURE__ */ jsx("span", { className: "flex-shrink-0", children: typeof icon === "string" ? /* @__PURE__ */ jsx(Icon, { name: icon }) : /* @__PURE__ */ jsx(Icon, { icon }) }) : null,
|
|
29769
|
+
children: empty ? /* @__PURE__ */ jsx(Typography, { as: "span", className: "text-muted-foreground text-base", children: "+" }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
29770
|
+
assetUrl ? /* @__PURE__ */ jsx(GameIcon, { assetUrl, icon: "image", size: px, alt: label, className: "flex-shrink-0" }) : icon ? /* @__PURE__ */ jsx(Box, { as: "span", className: "flex-shrink-0", children: typeof icon === "string" ? /* @__PURE__ */ jsx(Icon, { name: icon }) : /* @__PURE__ */ jsx(Icon, { icon }) }) : null,
|
|
29812
29771
|
quantity != null && quantity > 1 && /* @__PURE__ */ jsx(
|
|
29813
|
-
|
|
29772
|
+
Typography,
|
|
29814
29773
|
{
|
|
29774
|
+
as: "span",
|
|
29815
29775
|
className: cn(
|
|
29816
29776
|
"absolute -bottom-1 -right-1 flex items-center justify-center",
|
|
29817
29777
|
"min-w-[18px] h-[18px] rounded-full px-1",
|
|
@@ -29831,6 +29791,10 @@ var init_ItemSlot = __esm({
|
|
|
29831
29791
|
init_cn();
|
|
29832
29792
|
init_Icon();
|
|
29833
29793
|
init_useEventBus();
|
|
29794
|
+
init_Button();
|
|
29795
|
+
init_Box();
|
|
29796
|
+
init_Typography();
|
|
29797
|
+
init_GameIcon();
|
|
29834
29798
|
sizeMap11 = {
|
|
29835
29799
|
sm: "w-10 h-10 text-lg",
|
|
29836
29800
|
md: "w-14 h-14 text-2xl",
|
|
@@ -29874,7 +29838,7 @@ function TurnIndicator({
|
|
|
29874
29838
|
}) {
|
|
29875
29839
|
const sizes = sizeMap12[size];
|
|
29876
29840
|
return /* @__PURE__ */ jsxs(
|
|
29877
|
-
|
|
29841
|
+
Box,
|
|
29878
29842
|
{
|
|
29879
29843
|
className: cn(
|
|
29880
29844
|
"inline-flex items-center rounded-container",
|
|
@@ -29883,32 +29847,22 @@ function TurnIndicator({
|
|
|
29883
29847
|
className
|
|
29884
29848
|
),
|
|
29885
29849
|
children: [
|
|
29886
|
-
/* @__PURE__ */ jsxs("span",
|
|
29850
|
+
/* @__PURE__ */ jsxs(Typography, { as: "span", className: "font-bold tabular-nums", children: [
|
|
29887
29851
|
"Turn ",
|
|
29888
29852
|
currentTurn,
|
|
29889
|
-
maxTurns != null && /* @__PURE__ */ jsxs("span",
|
|
29853
|
+
maxTurns != null && /* @__PURE__ */ jsxs(Typography, { as: "span", className: "text-muted-foreground", children: [
|
|
29890
29854
|
"/",
|
|
29891
29855
|
maxTurns
|
|
29892
29856
|
] })
|
|
29893
29857
|
] }),
|
|
29894
29858
|
phase && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
29895
|
-
/* @__PURE__ */ jsx("span",
|
|
29896
|
-
/* @__PURE__ */ jsx("span",
|
|
29859
|
+
/* @__PURE__ */ jsx(Typography, { as: "span", className: "text-muted-foreground", children: "|" }),
|
|
29860
|
+
/* @__PURE__ */ jsx(Typography, { as: "span", className: "text-muted-foreground", children: phase })
|
|
29897
29861
|
] }),
|
|
29898
29862
|
activeTeam && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
29899
|
-
/* @__PURE__ */ jsx("span",
|
|
29900
|
-
assetUrl ? /* @__PURE__ */ jsx(
|
|
29901
|
-
|
|
29902
|
-
{
|
|
29903
|
-
src: assetUrl.url,
|
|
29904
|
-
alt: "",
|
|
29905
|
-
width: 12,
|
|
29906
|
-
height: 12,
|
|
29907
|
-
style: { imageRendering: "pixelated", objectFit: "contain" },
|
|
29908
|
-
className: "flex-shrink-0"
|
|
29909
|
-
}
|
|
29910
|
-
) : /* @__PURE__ */ jsx("span", { className: cn("rounded-full bg-success/20", sizes.dot) }),
|
|
29911
|
-
/* @__PURE__ */ jsx("span", { className: "text-success", children: activeTeam })
|
|
29863
|
+
/* @__PURE__ */ jsx(Typography, { as: "span", className: "text-muted-foreground", children: "|" }),
|
|
29864
|
+
assetUrl ? /* @__PURE__ */ jsx(GameIcon, { assetUrl, icon: "image", size: 12, className: "flex-shrink-0" }) : /* @__PURE__ */ jsx(Box, { as: "span", className: cn("rounded-full bg-success/20", sizes.dot) }),
|
|
29865
|
+
/* @__PURE__ */ jsx(Typography, { as: "span", className: "text-success", children: activeTeam })
|
|
29912
29866
|
] })
|
|
29913
29867
|
]
|
|
29914
29868
|
}
|
|
@@ -29918,6 +29872,9 @@ var sizeMap12, DEFAULT_ASSET_URL9;
|
|
|
29918
29872
|
var init_TurnIndicator = __esm({
|
|
29919
29873
|
"components/game/2d/atoms/TurnIndicator.tsx"() {
|
|
29920
29874
|
init_cn();
|
|
29875
|
+
init_Box();
|
|
29876
|
+
init_Typography();
|
|
29877
|
+
init_GameIcon();
|
|
29921
29878
|
sizeMap12 = {
|
|
29922
29879
|
sm: { wrapper: "text-xs gap-1.5 px-2 py-0.5", dot: "w-1.5 h-1.5" },
|
|
29923
29880
|
md: { wrapper: "text-sm gap-2 px-3 py-1", dot: "w-2 h-2" },
|
|
@@ -29941,53 +29898,47 @@ function WaypointMarker({
|
|
|
29941
29898
|
className
|
|
29942
29899
|
}) {
|
|
29943
29900
|
const sizes = sizeMap13[size];
|
|
29944
|
-
return /* @__PURE__ */ jsxs(
|
|
29945
|
-
/* @__PURE__ */ jsxs(
|
|
29901
|
+
return /* @__PURE__ */ jsxs(Box, { className: cn("flex flex-col items-center", className), children: [
|
|
29902
|
+
/* @__PURE__ */ jsxs(Box, { className: "relative flex items-center justify-center", children: [
|
|
29946
29903
|
active && /* @__PURE__ */ jsx(
|
|
29947
|
-
|
|
29904
|
+
Box,
|
|
29948
29905
|
{
|
|
29906
|
+
position: "absolute",
|
|
29949
29907
|
className: cn(
|
|
29950
|
-
"
|
|
29908
|
+
"rounded-full border-2 border-info animate-ping opacity-50",
|
|
29951
29909
|
sizes.ring
|
|
29952
29910
|
)
|
|
29953
29911
|
}
|
|
29954
29912
|
),
|
|
29955
29913
|
active && /* @__PURE__ */ jsx(
|
|
29956
|
-
|
|
29914
|
+
Box,
|
|
29957
29915
|
{
|
|
29916
|
+
position: "absolute",
|
|
29958
29917
|
className: cn(
|
|
29959
|
-
"
|
|
29918
|
+
"rounded-full border-2 border-info",
|
|
29960
29919
|
sizes.ring
|
|
29961
29920
|
)
|
|
29962
29921
|
}
|
|
29963
29922
|
),
|
|
29964
29923
|
/* @__PURE__ */ jsx(
|
|
29965
|
-
|
|
29924
|
+
Box,
|
|
29966
29925
|
{
|
|
29926
|
+
position: "relative",
|
|
29967
29927
|
className: cn(
|
|
29968
|
-
"
|
|
29928
|
+
"flex items-center justify-center rounded-full transition-all duration-200",
|
|
29969
29929
|
sizes.dot,
|
|
29970
29930
|
completed && "bg-success text-foreground",
|
|
29971
29931
|
active && !completed && "bg-info text-foreground",
|
|
29972
29932
|
!active && !completed && "bg-muted"
|
|
29973
29933
|
),
|
|
29974
|
-
children: completed ? checkIcon : assetUrl ? /* @__PURE__ */ jsx(
|
|
29975
|
-
"img",
|
|
29976
|
-
{
|
|
29977
|
-
src: assetUrl.url,
|
|
29978
|
-
alt: label,
|
|
29979
|
-
width: sizes.img,
|
|
29980
|
-
height: sizes.img,
|
|
29981
|
-
style: { imageRendering: "pixelated", objectFit: "contain" },
|
|
29982
|
-
className: "flex-shrink-0"
|
|
29983
|
-
}
|
|
29984
|
-
) : icon ? typeof icon === "string" ? /* @__PURE__ */ jsx(Icon, { name: icon }) : /* @__PURE__ */ jsx(Icon, { icon }) : null
|
|
29934
|
+
children: completed ? checkIcon : assetUrl ? /* @__PURE__ */ jsx(GameIcon, { assetUrl, icon: "image", size: sizes.img, alt: label, className: "flex-shrink-0" }) : icon ? typeof icon === "string" ? /* @__PURE__ */ jsx(Icon, { name: icon }) : /* @__PURE__ */ jsx(Icon, { icon }) : null
|
|
29985
29935
|
}
|
|
29986
29936
|
)
|
|
29987
29937
|
] }),
|
|
29988
29938
|
label && /* @__PURE__ */ jsx(
|
|
29989
|
-
|
|
29939
|
+
Typography,
|
|
29990
29940
|
{
|
|
29941
|
+
as: "span",
|
|
29991
29942
|
className: cn(
|
|
29992
29943
|
"text-center whitespace-nowrap",
|
|
29993
29944
|
sizes.label,
|
|
@@ -30003,6 +29954,9 @@ var init_WaypointMarker = __esm({
|
|
|
30003
29954
|
"components/game/2d/atoms/WaypointMarker.tsx"() {
|
|
30004
29955
|
init_cn();
|
|
30005
29956
|
init_Icon();
|
|
29957
|
+
init_Box();
|
|
29958
|
+
init_Typography();
|
|
29959
|
+
init_GameIcon();
|
|
30006
29960
|
DEFAULT_ASSET_URL10 = {
|
|
30007
29961
|
url: "https://almadar-kflow-assets.web.app/shared/world-map/battle_marker.png",
|
|
30008
29962
|
role: "ui",
|
|
@@ -30034,31 +29988,23 @@ function StatusEffect({
|
|
|
30034
29988
|
className
|
|
30035
29989
|
}) {
|
|
30036
29990
|
const sizes = sizeMap14[size];
|
|
30037
|
-
return /* @__PURE__ */ jsxs("
|
|
29991
|
+
return /* @__PURE__ */ jsxs(Box, { position: "relative", className: cn("inline-flex flex-col items-center", className), children: [
|
|
30038
29992
|
/* @__PURE__ */ jsxs(
|
|
30039
|
-
|
|
29993
|
+
Box,
|
|
30040
29994
|
{
|
|
29995
|
+
position: "relative",
|
|
30041
29996
|
className: cn(
|
|
30042
|
-
"
|
|
29997
|
+
"flex items-center justify-center rounded-interactive border-2",
|
|
30043
29998
|
sizes.container,
|
|
30044
29999
|
variantStyles8[variant]
|
|
30045
30000
|
),
|
|
30046
30001
|
title: label,
|
|
30047
30002
|
children: [
|
|
30048
|
-
/* @__PURE__ */ jsx("span",
|
|
30049
|
-
"img",
|
|
30050
|
-
{
|
|
30051
|
-
src: assetUrl.url,
|
|
30052
|
-
alt: label,
|
|
30053
|
-
width: sizes.img,
|
|
30054
|
-
height: sizes.img,
|
|
30055
|
-
style: { imageRendering: "pixelated", objectFit: "contain" },
|
|
30056
|
-
className: "flex-shrink-0"
|
|
30057
|
-
}
|
|
30058
|
-
) : icon != null && typeof icon === "string" ? /* @__PURE__ */ jsx(Icon, { name: icon, size: "sm" }) : icon != null ? /* @__PURE__ */ jsx(Icon, { icon, size: "sm" }) : null }),
|
|
30003
|
+
/* @__PURE__ */ jsx(Box, { as: "span", className: cn("flex items-center justify-center", sizes.icon), children: assetUrl ? /* @__PURE__ */ jsx(GameIcon, { assetUrl, icon: "image", size: sizes.img, alt: label, className: "flex-shrink-0" }) : icon != null && typeof icon === "string" ? /* @__PURE__ */ jsx(Icon, { name: icon, size: "sm" }) : icon != null ? /* @__PURE__ */ jsx(Icon, { icon, size: "sm" }) : null }),
|
|
30059
30004
|
duration !== void 0 && /* @__PURE__ */ jsx(
|
|
30060
|
-
|
|
30005
|
+
Typography,
|
|
30061
30006
|
{
|
|
30007
|
+
as: "span",
|
|
30062
30008
|
className: cn(
|
|
30063
30009
|
"absolute bottom-0 left-0 right-0 text-center font-mono font-bold text-foreground bg-background/60 leading-tight",
|
|
30064
30010
|
sizes.timer
|
|
@@ -30070,8 +30016,9 @@ function StatusEffect({
|
|
|
30070
30016
|
}
|
|
30071
30017
|
),
|
|
30072
30018
|
stacks !== void 0 && stacks > 1 && /* @__PURE__ */ jsx(
|
|
30073
|
-
|
|
30019
|
+
Typography,
|
|
30074
30020
|
{
|
|
30021
|
+
as: "span",
|
|
30075
30022
|
className: cn(
|
|
30076
30023
|
"absolute flex items-center justify-center rounded-full bg-card text-foreground font-bold leading-none",
|
|
30077
30024
|
sizes.badge
|
|
@@ -30079,7 +30026,7 @@ function StatusEffect({
|
|
|
30079
30026
|
children: stacks
|
|
30080
30027
|
}
|
|
30081
30028
|
),
|
|
30082
|
-
label && /* @__PURE__ */ jsx("span",
|
|
30029
|
+
label && /* @__PURE__ */ jsx(Typography, { as: "span", className: "text-xs text-muted-foreground mt-0.5 text-center whitespace-nowrap", children: label })
|
|
30083
30030
|
] });
|
|
30084
30031
|
}
|
|
30085
30032
|
var DEFAULT_ASSET_URL11, sizeMap14, variantStyles8;
|
|
@@ -30087,6 +30034,9 @@ var init_StatusEffect = __esm({
|
|
|
30087
30034
|
"components/game/2d/atoms/StatusEffect.tsx"() {
|
|
30088
30035
|
init_cn();
|
|
30089
30036
|
init_Icon();
|
|
30037
|
+
init_Box();
|
|
30038
|
+
init_Typography();
|
|
30039
|
+
init_GameIcon();
|
|
30090
30040
|
DEFAULT_ASSET_URL11 = {
|
|
30091
30041
|
url: "https://almadar-kflow-assets.web.app/shared/effects/particles/flame_01.png",
|
|
30092
30042
|
role: "ui",
|
|
@@ -30113,7 +30063,7 @@ function DialogueBubble({
|
|
|
30113
30063
|
className
|
|
30114
30064
|
}) {
|
|
30115
30065
|
return /* @__PURE__ */ jsxs(
|
|
30116
|
-
|
|
30066
|
+
Box,
|
|
30117
30067
|
{
|
|
30118
30068
|
className: cn(
|
|
30119
30069
|
"flex items-start gap-3 rounded-container bg-background/80 backdrop-blur-sm px-4 py-3 border border-border/10",
|
|
@@ -30121,17 +30071,10 @@ function DialogueBubble({
|
|
|
30121
30071
|
className
|
|
30122
30072
|
),
|
|
30123
30073
|
children: [
|
|
30124
|
-
portrait && /* @__PURE__ */ jsx(
|
|
30125
|
-
|
|
30126
|
-
{
|
|
30127
|
-
|
|
30128
|
-
alt: speaker ?? "speaker",
|
|
30129
|
-
className: "w-full h-full object-cover"
|
|
30130
|
-
}
|
|
30131
|
-
) }),
|
|
30132
|
-
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1 min-w-0", children: [
|
|
30133
|
-
speaker && /* @__PURE__ */ jsx("span", { className: "text-sm font-bold text-warning", children: speaker }),
|
|
30134
|
-
/* @__PURE__ */ jsx("span", { className: "text-sm text-foreground leading-relaxed", children: text })
|
|
30074
|
+
portrait && /* @__PURE__ */ jsx(Box, { className: "flex-shrink-0 w-12 h-12 rounded-full overflow-hidden border-2 border-warning/60", children: /* @__PURE__ */ jsx(GameIcon, { assetUrl: portrait, icon: "image", size: 48, alt: speaker ?? "speaker", className: "w-full h-full object-cover" }) }),
|
|
30075
|
+
/* @__PURE__ */ jsxs(Box, { className: "flex flex-col gap-1 min-w-0", children: [
|
|
30076
|
+
speaker && /* @__PURE__ */ jsx(Typography, { as: "span", className: "text-sm font-bold text-warning", children: speaker }),
|
|
30077
|
+
/* @__PURE__ */ jsx(Typography, { as: "span", className: "text-sm text-foreground leading-relaxed", children: text })
|
|
30135
30078
|
] })
|
|
30136
30079
|
]
|
|
30137
30080
|
}
|
|
@@ -30141,6 +30084,9 @@ var DEFAULT_PORTRAIT;
|
|
|
30141
30084
|
var init_DialogueBubble = __esm({
|
|
30142
30085
|
"components/game/2d/atoms/DialogueBubble.tsx"() {
|
|
30143
30086
|
init_cn();
|
|
30087
|
+
init_Box();
|
|
30088
|
+
init_Typography();
|
|
30089
|
+
init_GameIcon();
|
|
30144
30090
|
DEFAULT_PORTRAIT = {
|
|
30145
30091
|
url: "https://almadar-kflow-assets.web.app/shared/characters/archetypes/04_hero.png",
|
|
30146
30092
|
role: "effect",
|
|
@@ -30167,7 +30113,7 @@ function StatBadge({
|
|
|
30167
30113
|
const numValue = typeof value === "number" ? value : parseInt(String(value), 10) || 0;
|
|
30168
30114
|
const resolvedAsset = iconUrl ?? assetUrl;
|
|
30169
30115
|
return /* @__PURE__ */ jsxs(
|
|
30170
|
-
|
|
30116
|
+
Box,
|
|
30171
30117
|
{
|
|
30172
30118
|
className: cn(
|
|
30173
30119
|
"inline-flex items-center gap-2 rounded-container border backdrop-blur-sm",
|
|
@@ -30176,18 +30122,8 @@ function StatBadge({
|
|
|
30176
30122
|
className
|
|
30177
30123
|
),
|
|
30178
30124
|
children: [
|
|
30179
|
-
resolvedAsset ? /* @__PURE__ */ jsx(
|
|
30180
|
-
|
|
30181
|
-
{
|
|
30182
|
-
src: resolvedAsset.url,
|
|
30183
|
-
alt: "",
|
|
30184
|
-
width: 16,
|
|
30185
|
-
height: 16,
|
|
30186
|
-
style: { imageRendering: "pixelated", objectFit: "contain" },
|
|
30187
|
-
className: "flex-shrink-0"
|
|
30188
|
-
}
|
|
30189
|
-
) : icon ? /* @__PURE__ */ jsx("span", { className: "flex-shrink-0 text-lg", children: typeof icon === "string" ? /* @__PURE__ */ jsx(Icon, { name: icon, className: "w-4 h-4" }) : /* @__PURE__ */ jsx(Icon, { icon, className: "w-4 h-4" }) }) : null,
|
|
30190
|
-
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground font-medium", children: label }),
|
|
30125
|
+
resolvedAsset ? /* @__PURE__ */ jsx(GameIcon, { assetUrl: resolvedAsset, icon: "image", size: 16, className: "flex-shrink-0" }) : icon ? /* @__PURE__ */ jsx(Box, { as: "span", className: "flex-shrink-0 text-lg", children: typeof icon === "string" ? /* @__PURE__ */ jsx(Icon, { name: icon, className: "w-4 h-4" }) : /* @__PURE__ */ jsx(Icon, { icon, className: "w-4 h-4" }) }) : null,
|
|
30126
|
+
/* @__PURE__ */ jsx(Typography, { as: "span", className: "text-muted-foreground font-medium", children: label }),
|
|
30191
30127
|
format === "hearts" && max && /* @__PURE__ */ jsx(
|
|
30192
30128
|
HealthBar,
|
|
30193
30129
|
{
|
|
@@ -30213,7 +30149,7 @@ function StatBadge({
|
|
|
30213
30149
|
size: size === "lg" ? "md" : "sm"
|
|
30214
30150
|
}
|
|
30215
30151
|
),
|
|
30216
|
-
format === "text" && /* @__PURE__ */ jsx("span",
|
|
30152
|
+
format === "text" && /* @__PURE__ */ jsx(Typography, { as: "span", className: "font-bold text-foreground", children: value })
|
|
30217
30153
|
]
|
|
30218
30154
|
}
|
|
30219
30155
|
);
|
|
@@ -30223,6 +30159,9 @@ var init_StatBadge = __esm({
|
|
|
30223
30159
|
"components/game/2d/molecules/StatBadge.tsx"() {
|
|
30224
30160
|
init_cn();
|
|
30225
30161
|
init_Icon();
|
|
30162
|
+
init_Box();
|
|
30163
|
+
init_Typography();
|
|
30164
|
+
init_GameIcon();
|
|
30226
30165
|
init_HealthBar();
|
|
30227
30166
|
init_ScoreDisplay();
|
|
30228
30167
|
sizeMap15 = {
|
|
@@ -30400,9 +30339,9 @@ function GameHud({
|
|
|
30400
30339
|
if (position === "corners") {
|
|
30401
30340
|
const leftStats = stats.slice(0, Math.ceil(stats.length / 2));
|
|
30402
30341
|
const rightStats = stats.slice(Math.ceil(stats.length / 2));
|
|
30403
|
-
return /* @__PURE__ */ jsxs(
|
|
30404
|
-
/* @__PURE__ */ jsx(
|
|
30405
|
-
/* @__PURE__ */ jsx(
|
|
30342
|
+
return /* @__PURE__ */ jsxs(Box, { position: "relative", className: cn(positionMap[position], className), children: [
|
|
30343
|
+
/* @__PURE__ */ jsx(Box, { position: "absolute", className: "top-4 left-4 flex flex-col gap-2 pointer-events-auto", children: leftStats.map((stat, i) => /* @__PURE__ */ jsx(StatBadge, { ...stat, size }, i)) }),
|
|
30344
|
+
/* @__PURE__ */ jsx(Box, { position: "absolute", className: "top-4 right-4 flex flex-col gap-2 items-end pointer-events-auto", children: rightStats.map((stat, i) => /* @__PURE__ */ jsx(StatBadge, { ...stat, size }, i)) })
|
|
30406
30345
|
] });
|
|
30407
30346
|
}
|
|
30408
30347
|
if (position === "top" || position === "bottom") {
|
|
@@ -30411,7 +30350,7 @@ function GameHud({
|
|
|
30411
30350
|
const rightStats = stats.slice(mid);
|
|
30412
30351
|
const isTop = position === "top";
|
|
30413
30352
|
return /* @__PURE__ */ jsxs(
|
|
30414
|
-
|
|
30353
|
+
Box,
|
|
30415
30354
|
{
|
|
30416
30355
|
className: cn(
|
|
30417
30356
|
"flex items-center justify-between w-full",
|
|
@@ -30421,17 +30360,18 @@ function GameHud({
|
|
|
30421
30360
|
className
|
|
30422
30361
|
),
|
|
30423
30362
|
children: [
|
|
30424
|
-
/* @__PURE__ */ jsx(
|
|
30425
|
-
rightStats.length > 0 && /* @__PURE__ */ jsx(
|
|
30363
|
+
/* @__PURE__ */ jsx(Box, { className: "flex items-center gap-3 flex-shrink-0", children: leftStats.map((stat, i) => /* @__PURE__ */ jsx(StatBadge, { ...stat, size }, i)) }),
|
|
30364
|
+
rightStats.length > 0 && /* @__PURE__ */ jsx(Box, { className: "flex items-center gap-3 flex-shrink-0", children: rightStats.map((stat, i) => /* @__PURE__ */ jsx(StatBadge, { ...stat, size }, i)) })
|
|
30426
30365
|
]
|
|
30427
30366
|
}
|
|
30428
30367
|
);
|
|
30429
30368
|
}
|
|
30430
30369
|
return /* @__PURE__ */ jsx(
|
|
30431
|
-
|
|
30370
|
+
Box,
|
|
30432
30371
|
{
|
|
30372
|
+
position: "relative",
|
|
30433
30373
|
className: cn(
|
|
30434
|
-
"
|
|
30374
|
+
"z-10 flex items-center gap-4 px-4 py-2",
|
|
30435
30375
|
transparent ? "bg-black/30 backdrop-blur-sm" : "bg-surface/90 backdrop-blur-sm",
|
|
30436
30376
|
className
|
|
30437
30377
|
),
|
|
@@ -30443,6 +30383,7 @@ var positionMap, DEFAULT_HUD_STATS;
|
|
|
30443
30383
|
var init_GameHud = __esm({
|
|
30444
30384
|
"components/game/2d/molecules/GameHud.tsx"() {
|
|
30445
30385
|
init_cn();
|
|
30386
|
+
init_Box();
|
|
30446
30387
|
init_StatBadge();
|
|
30447
30388
|
positionMap = {
|
|
30448
30389
|
corners: "inset-0 pointer-events-none"
|
|
@@ -30483,7 +30424,7 @@ function GameMenu({
|
|
|
30483
30424
|
[eventBus, onSelect]
|
|
30484
30425
|
);
|
|
30485
30426
|
return /* @__PURE__ */ jsxs(
|
|
30486
|
-
|
|
30427
|
+
Box,
|
|
30487
30428
|
{
|
|
30488
30429
|
className: cn(
|
|
30489
30430
|
"min-h-screen w-full flex flex-col items-center justify-center p-8",
|
|
@@ -30493,18 +30434,12 @@ function GameMenu({
|
|
|
30493
30434
|
background: background ?? "linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f0e17 100%)"
|
|
30494
30435
|
},
|
|
30495
30436
|
children: [
|
|
30496
|
-
/* @__PURE__ */ jsxs(
|
|
30497
|
-
logo && /* @__PURE__ */ jsx(
|
|
30498
|
-
"img",
|
|
30499
|
-
{
|
|
30500
|
-
src: logo.url,
|
|
30501
|
-
alt: title,
|
|
30502
|
-
className: "h-24 w-auto mx-auto mb-6 drop-shadow-2xl"
|
|
30503
|
-
}
|
|
30504
|
-
),
|
|
30437
|
+
/* @__PURE__ */ jsxs(Box, { className: "text-center mb-12 animate-fade-in", children: [
|
|
30438
|
+
logo && /* @__PURE__ */ jsx(GameIcon, { assetUrl: logo, icon: "image", size: 96, alt: title, className: "h-24 w-auto mx-auto mb-6 drop-shadow-2xl" }),
|
|
30505
30439
|
/* @__PURE__ */ jsx(
|
|
30506
|
-
|
|
30440
|
+
Typography,
|
|
30507
30441
|
{
|
|
30442
|
+
variant: "h1",
|
|
30508
30443
|
className: "text-5xl md:text-7xl font-bold text-[var(--color-foreground)] tracking-tight",
|
|
30509
30444
|
style: {
|
|
30510
30445
|
textShadow: "0 4px 12px rgba(0,0,0,0.5)"
|
|
@@ -30512,9 +30447,9 @@ function GameMenu({
|
|
|
30512
30447
|
children: title
|
|
30513
30448
|
}
|
|
30514
30449
|
),
|
|
30515
|
-
subtitle && /* @__PURE__ */ jsx("
|
|
30450
|
+
subtitle && /* @__PURE__ */ jsx(Typography, { variant: "body", className: "mt-2 text-lg text-muted-foreground tracking-widest uppercase", children: subtitle })
|
|
30516
30451
|
] }),
|
|
30517
|
-
/* @__PURE__ */ jsx(
|
|
30452
|
+
/* @__PURE__ */ jsx(Box, { className: "flex flex-col gap-4 w-full max-w-md", children: resolvedOptions.map((option, index) => /* @__PURE__ */ jsx(
|
|
30518
30453
|
ChoiceButton,
|
|
30519
30454
|
{
|
|
30520
30455
|
text: option.label,
|
|
@@ -30525,9 +30460,9 @@ function GameMenu({
|
|
|
30525
30460
|
},
|
|
30526
30461
|
index
|
|
30527
30462
|
)) }),
|
|
30528
|
-
/* @__PURE__ */ jsxs(
|
|
30529
|
-
/* @__PURE__ */ jsx(
|
|
30530
|
-
/* @__PURE__ */ jsx(
|
|
30463
|
+
/* @__PURE__ */ jsxs(Box, { position: "absolute", className: "inset-0 pointer-events-none overflow-hidden", children: [
|
|
30464
|
+
/* @__PURE__ */ jsx(Box, { position: "absolute", className: "top-1/4 left-1/4 w-64 h-64 bg-info/10 rounded-container blur-3xl" }),
|
|
30465
|
+
/* @__PURE__ */ jsx(Box, { position: "absolute", className: "bottom-1/4 right-1/4 w-96 h-96 bg-accent/10 rounded-container blur-3xl" })
|
|
30531
30466
|
] })
|
|
30532
30467
|
]
|
|
30533
30468
|
}
|
|
@@ -30539,6 +30474,9 @@ var init_GameMenu = __esm({
|
|
|
30539
30474
|
"use client";
|
|
30540
30475
|
init_cn();
|
|
30541
30476
|
init_useEventBus();
|
|
30477
|
+
init_Box();
|
|
30478
|
+
init_Typography();
|
|
30479
|
+
init_GameIcon();
|
|
30542
30480
|
init_ChoiceButton();
|
|
30543
30481
|
DEFAULT_MENU_OPTIONS = [
|
|
30544
30482
|
{ label: "New Game", event: "NEW_GAME", variant: "primary" },
|
|
@@ -30977,7 +30915,7 @@ function GameAudioToggle({
|
|
|
30977
30915
|
onClick: handleToggle,
|
|
30978
30916
|
className: cn("text-lg leading-none px-2", className),
|
|
30979
30917
|
"aria-pressed": muted,
|
|
30980
|
-
children: activeAsset ? /* @__PURE__ */ jsx(
|
|
30918
|
+
children: activeAsset ? /* @__PURE__ */ jsx(GameIcon, { assetUrl: activeAsset, icon: "image", size: 20, alt: muted ? "Muted" : "Sound on", className: "w-5 h-5 object-contain" }) : muted ? "\u{1F507}" : "\u{1F50A}"
|
|
30981
30919
|
}
|
|
30982
30920
|
);
|
|
30983
30921
|
}
|
|
@@ -30987,6 +30925,7 @@ var init_GameAudioToggle = __esm({
|
|
|
30987
30925
|
init_atoms();
|
|
30988
30926
|
init_cn();
|
|
30989
30927
|
init_GameAudioProvider();
|
|
30928
|
+
init_GameIcon();
|
|
30990
30929
|
GameAudioToggle.displayName = "GameAudioToggle";
|
|
30991
30930
|
}
|
|
30992
30931
|
});
|