genshin-interface 4.0.0 → 4.1.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/index.d.ts +658 -46
- package/dist/index.js +1723 -98
- package/dist/save-1cODLLb1.d.ts +24 -0
- package/dist/save-B6F3omOa.js +41 -0
- package/dist/save.d.ts +2 -0
- package/dist/save.js +1 -0
- package/dist/style.css +2406 -8
- package/package.json +10 -11
package/dist/index.js
CHANGED
|
@@ -1,6 +1,878 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { i as ItemCategory, n as BannerKinds, r as ItemCategories, t as BannerKind } from "./save-B6F3omOa.js";
|
|
2
|
+
import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, mergeModels, nextTick, normalizeClass, normalizeStyle, openBlock, ref, renderList, renderSlot, toDisplayString, unref, useCssVars, useModel, useTemplateRef, vModelSelect, vModelText, watch, withCtx, withDirectives, withModifiers } from "vue";
|
|
3
|
+
//#region src/models/CharacterMenuTab.ts
|
|
4
|
+
let CharacterMenuTab = /* @__PURE__ */ function(CharacterMenuTab) {
|
|
5
|
+
CharacterMenuTab["Artifacts"] = "Artifacts";
|
|
6
|
+
CharacterMenuTab["Attributes"] = "Attributes";
|
|
7
|
+
CharacterMenuTab["Constellation"] = "Constellation";
|
|
8
|
+
CharacterMenuTab["Profile"] = "Profile";
|
|
9
|
+
CharacterMenuTab["Talents"] = "Talents";
|
|
10
|
+
CharacterMenuTab["Weapons"] = "Weapons";
|
|
11
|
+
return CharacterMenuTab;
|
|
12
|
+
}({});
|
|
13
|
+
const CharacterMenuTabs = [
|
|
14
|
+
"Attributes",
|
|
15
|
+
"Weapons",
|
|
16
|
+
"Artifacts",
|
|
17
|
+
"Constellation",
|
|
18
|
+
"Talents",
|
|
19
|
+
"Profile"
|
|
20
|
+
];
|
|
21
|
+
//#endregion
|
|
22
|
+
//#region \0/plugin-vue/export-helper
|
|
23
|
+
var export_helper_default = (sfc, props) => {
|
|
24
|
+
const target = sfc.__vccOpts || sfc;
|
|
25
|
+
for (const [key, val] of props) target[key] = val;
|
|
26
|
+
return target;
|
|
27
|
+
};
|
|
28
|
+
//#endregion
|
|
29
|
+
//#region src/components/CharacterMenu/Index.vue
|
|
30
|
+
const _hoisted_1$25 = ["data-tab"];
|
|
31
|
+
const _hoisted_2$21 = { class: "characters" };
|
|
32
|
+
const _hoisted_3$16 = ["aria-pressed", "onClick"];
|
|
33
|
+
const _hoisted_4$13 = { class: "breadcrumb" };
|
|
34
|
+
const _hoisted_5$11 = { class: "tabs" };
|
|
35
|
+
const _hoisted_6$10 = ["aria-pressed", "onClick"];
|
|
36
|
+
const _hoisted_7$10 = ["aria-label"];
|
|
37
|
+
const _hoisted_8$9 = ["aria-label", "onClick"];
|
|
38
|
+
var Index_default = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
|
|
39
|
+
__name: "Index",
|
|
40
|
+
props: /*@__PURE__*/ mergeModels({
|
|
41
|
+
characters: {},
|
|
42
|
+
tabLabels: {}
|
|
43
|
+
}, {
|
|
44
|
+
"characterId": { required: true },
|
|
45
|
+
"characterIdModifiers": {},
|
|
46
|
+
"tab": { required: true },
|
|
47
|
+
"tabModifiers": {}
|
|
48
|
+
}),
|
|
49
|
+
emits: ["update:characterId", "update:tab"],
|
|
50
|
+
setup(__props) {
|
|
51
|
+
const characterId = useModel(__props, "characterId");
|
|
52
|
+
const tab = useModel(__props, "tab");
|
|
53
|
+
const characterName = computed(() => __props.characters.find(({ id }) => id === characterId.value)?.name ?? "");
|
|
54
|
+
const steps = computed(() => {
|
|
55
|
+
const index = __props.characters.findIndex(({ id }) => id === characterId.value);
|
|
56
|
+
const getStep = (step) => __props.characters[(index + step + __props.characters.length) % __props.characters.length];
|
|
57
|
+
return [{
|
|
58
|
+
character: getStep(-1),
|
|
59
|
+
className: "previous"
|
|
60
|
+
}, {
|
|
61
|
+
character: getStep(1),
|
|
62
|
+
className: "next"
|
|
63
|
+
}];
|
|
64
|
+
});
|
|
65
|
+
return (_ctx, _cache) => {
|
|
66
|
+
return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The character screen's frame: the characters across the top with one chosen, its name at the top left, the tabs\n down the left with the open one lit, and the open tab's panel down the right "), createElementVNode("div", {
|
|
67
|
+
class: "character-menu",
|
|
68
|
+
"data-tab": tab.value
|
|
69
|
+
}, [
|
|
70
|
+
_cache[1] || (_cache[1] = createElementVNode("div", { class: "head" }, null, -1)),
|
|
71
|
+
createElementVNode("ul", _hoisted_2$21, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.characters, ({ id, name }) => {
|
|
72
|
+
return openBlock(), createElementBlock("li", { key: id }, [createElementVNode("button", {
|
|
73
|
+
class: "character",
|
|
74
|
+
"aria-pressed": id === characterId.value,
|
|
75
|
+
type: "button",
|
|
76
|
+
onClick: ($event) => characterId.value = id
|
|
77
|
+
}, toDisplayString(name), 9, _hoisted_3$16)]);
|
|
78
|
+
}), 128))]),
|
|
79
|
+
createElementVNode("p", _hoisted_4$13, toDisplayString(characterName.value), 1),
|
|
80
|
+
createCommentVNode(" The keys stepping through the tabs, W up and S down, beside the first "),
|
|
81
|
+
_cache[2] || (_cache[2] = createElementVNode("div", {
|
|
82
|
+
class: "tab-keys",
|
|
83
|
+
"aria-hidden": "true"
|
|
84
|
+
}, [createElementVNode("kbd", { class: "key" }, "W"), createElementVNode("kbd", { class: "key" }, "S")], -1)),
|
|
85
|
+
createElementVNode("ul", _hoisted_5$11, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(CharacterMenuTabs), (menuTab) => {
|
|
86
|
+
return openBlock(), createElementBlock("li", { key: menuTab }, [createElementVNode("button", {
|
|
87
|
+
class: "tab",
|
|
88
|
+
"aria-pressed": menuTab === tab.value,
|
|
89
|
+
type: "button",
|
|
90
|
+
onClick: ($event) => tab.value = menuTab
|
|
91
|
+
}, toDisplayString(__props.tabLabels[menuTab]), 9, _hoisted_6$10)]);
|
|
92
|
+
}), 128))]),
|
|
93
|
+
createElementVNode("section", {
|
|
94
|
+
class: "panel",
|
|
95
|
+
"aria-label": __props.tabLabels[tab.value]
|
|
96
|
+
}, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 8, _hoisted_7$10),
|
|
97
|
+
__props.characters.length > 1 ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(steps.value, ({ character, className }) => {
|
|
98
|
+
return openBlock(), createElementBlock("button", {
|
|
99
|
+
key: className,
|
|
100
|
+
class: normalizeClass(["step", className]),
|
|
101
|
+
"aria-label": character?.name,
|
|
102
|
+
type: "button",
|
|
103
|
+
onClick: ($event) => characterId.value = character?.id ?? characterId.value
|
|
104
|
+
}, [createCommentVNode(" The arrow's head and the diamond in its notch, in the reference's own pixels "), _cache[0] || (_cache[0] = createElementVNode("svg", {
|
|
105
|
+
viewBox: "0 0 43 55",
|
|
106
|
+
"aria-hidden": "true"
|
|
107
|
+
}, [
|
|
108
|
+
createElementVNode("path", {
|
|
109
|
+
class: "arrow",
|
|
110
|
+
d: "M31 0 L0 27.5 L31 55 L31 42 L16 27.5 L31 13 Z"
|
|
111
|
+
}),
|
|
112
|
+
createElementVNode("path", {
|
|
113
|
+
class: "mark",
|
|
114
|
+
d: "M31 16.5 L42 27.5 L31 38.5 L20 27.5 Z M31 22 L25.5 27.5 L31 33 L36.5 27.5 Z"
|
|
115
|
+
}),
|
|
116
|
+
createElementVNode("path", {
|
|
117
|
+
class: "mark",
|
|
118
|
+
d: "M31 25.5 L33 27.5 L31 29.5 L29 27.5 Z"
|
|
119
|
+
})
|
|
120
|
+
], -1))], 10, _hoisted_8$9);
|
|
121
|
+
}), 128)) : createCommentVNode("v-if", true)
|
|
122
|
+
], 8, _hoisted_1$25)], 2112);
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
}), [["__scopeId", "data-v-6efaddd5"]]);
|
|
126
|
+
//#endregion
|
|
127
|
+
//#region src/components/CharacterMenuButtons/Index.vue
|
|
128
|
+
const _sfc_main$25 = {};
|
|
129
|
+
const _hoisted_1$24 = { class: "buttons" };
|
|
130
|
+
function _sfc_render$2(_ctx, _cache) {
|
|
131
|
+
return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The two buttons beneath a character menu's panel, the game's pills, each the panel's half less the gap between them "), createElementVNode("div", _hoisted_1$24, [..._cache[0] || (_cache[0] = [createElementVNode("span", { class: "button" }, null, -1), createElementVNode("span", { class: "button" }, null, -1)])])], 2112);
|
|
132
|
+
}
|
|
133
|
+
var Index_default$2 = /*#__PURE__*/ export_helper_default(_sfc_main$25, [["render", _sfc_render$2], ["__scopeId", "data-v-d4278b8b"]]);
|
|
134
|
+
//#endregion
|
|
135
|
+
//#region src/components/CharacterMenuArtifacts/Index.vue
|
|
136
|
+
const _hoisted_1$23 = { class: "artifacts" };
|
|
137
|
+
const _hoisted_2$20 = { class: "slots" };
|
|
138
|
+
var Index_default$1 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
|
|
139
|
+
__name: "Index",
|
|
140
|
+
props: { equipped: {} },
|
|
141
|
+
setup(__props) {
|
|
142
|
+
return (_ctx, _cache) => {
|
|
143
|
+
return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The Artifacts tab's panel: the five artifact slots, each a disc lit where the character wears one, then the set\n bonus block and the two buttons beneath. Its words and the set's text are not drawn yet "), createElementVNode("div", _hoisted_1$23, [
|
|
144
|
+
createElementVNode("ul", _hoisted_2$20, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.equipped, (isEquipped, index) => {
|
|
145
|
+
return openBlock(), createElementBlock("li", {
|
|
146
|
+
key: index,
|
|
147
|
+
class: normalizeClass(["slot", { worn: isEquipped }])
|
|
148
|
+
}, null, 2);
|
|
149
|
+
}), 128))]),
|
|
150
|
+
_cache[0] || (_cache[0] = createElementVNode("div", { class: "details" }, null, -1)),
|
|
151
|
+
_cache[1] || (_cache[1] = createElementVNode("div", { class: "set-bonus" }, null, -1)),
|
|
152
|
+
createVNode(Index_default$2)
|
|
153
|
+
])], 2112);
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
}), [["__scopeId", "data-v-d9a02adc"]]);
|
|
157
|
+
//#endregion
|
|
158
|
+
//#region src/services/constants.ts
|
|
159
|
+
const ASCENSION_PHASE_COUNT = 6;
|
|
160
|
+
const GAME_FONT_FAMILY = "\"HYWenHei 85W\", \"HYWenHei-85W\", Signika, ui-sans-serif, sans-serif";
|
|
161
|
+
const GAME_UNIT = "calc(min(100cqh / 1080, 100cqw / 1920) * var(--interface-scale))";
|
|
162
|
+
const GAME_CANVAS_UNIT = "calc(min(100cqh / 900, 100cqw / 1600) * var(--interface-scale))";
|
|
163
|
+
const GAME_CANVAS_INSET = "min(var(--unit) * 71, (100cqw - min(100cqh * 16 / 9, 100cqw)) / 2)";
|
|
164
|
+
const MOBILE_INTERFACE_SCALE = 1.25;
|
|
165
|
+
const GAME_CANVAS_RECT = {
|
|
166
|
+
anchorMax: [1, 1],
|
|
167
|
+
anchorMin: [0, 0],
|
|
168
|
+
pivot: [0, 0],
|
|
169
|
+
position: [0, 0],
|
|
170
|
+
size: [0, 0]
|
|
171
|
+
};
|
|
172
|
+
const GAME_WHITE = "#fdfdfd";
|
|
173
|
+
const GAME_CREAM = "#ece5d8";
|
|
174
|
+
const GAME_INK = "#3b4354";
|
|
175
|
+
const GAME_GOLD = "#d3bc8e";
|
|
176
|
+
const GAME_CURSOR_SIZE = 26;
|
|
177
|
+
const GAME_CURSOR = `url("data:image/svg+xml,${encodeURIComponent(`<svg xmlns="http://www.w3.org/2000/svg" width="${GAME_CURSOR_SIZE}" height="${GAME_CURSOR_SIZE}" viewBox="-2 -2 66 66"><defs><radialGradient id="g" cx="28" cy="28" r="34" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#ffea00"/><stop offset="0.45" stop-color="#ffc800"/><stop offset="1" stop-color="#ffc100"/></radialGradient></defs><path d="M0 0q30.1 11.4 62 15-14.5 21.1-3 44-22.9-11.5-44 3-3.6-31.9-15-62z" fill="none" stroke="#2c3a4e" stroke-opacity="0.75" stroke-width="3" stroke-linejoin="round"/><path d="M0 0q30.1 11.4 62 15-14.5 21.1-3 44z" fill="#fff"/><path d="M0 0L59 59Q36.1 47.5 15 62Q11.4 30.1 0 0Z" fill="#f4f5e0"/><path d="M26 26q21.5 6 36-11-14.5 21.1-3 44-22.9-11.5-44 3 17-14.5 11-36z" fill="url(#g)"/></svg>`)}") 1 1, auto`;
|
|
178
|
+
const ORNAMENT_MIDDLE_PATH = "M179.5 39h6l5.5 4.5 2 5 10 12 2 5 10 10 4 8v5l-4.5 5.5-13 7-4 1-3.5-2.5-3.5-4.5-2-1h-10l-7.5 5.5-15.5 17.5-2.5 1.5-6.5 7.5-10 9-3 2h-2l-21 15q-6.27 1.73-10 6l-9 2-4.5 3.5q-.5 4 2.5 4.5l9 4 4 4 17 8 8 6 9 4 14.5 12.5 6.5 7.5q2.25-.75 1.5 1.5l6.5 7.5 4.5 3.5q.63 3.87 3.5 5.5l5 3h9q1-2.5 3.5-2 .71-4.89 4.5-8l3-1 26.5-24.5 2.5-4.5 5-2 9-7 5-2 13.5-9.5 1.5-2.5q5.5-2 8.5-6.5v-3l-5-5v-3l3.5-4.5q2.25.75 1.5-1.5l5.5-6.5 6-3h11l26 14 5 5h3l6 2 3.5 3.5-1 4.5-4.5 2-5 1-7 6-4 1-12 7-5 5-10 3-8 7-4 1-5 4h-1.5l-1.5 3-24 16-5.5 5.5q.75 2.25-1.5 1.5l-20.5 18.5-2 4-13 14-9 13-3 6.5-2.5 1h-3l-1 1h-3l-6.5-3.5-4-11q-8.37-6.84-13-16.5l-3-1.5-4-5v-1.5h-2q1.13-2.67-1.5-2l-13-15-3.5-1v-1.5l-6.5-6.5-3-1-11-9-13-6-6-5-4-2-11-2-5-4-15-5-6-4-18-6h-30.5v-31h31.5l4-2h9l4.5-2q-1.13-2.67 1.5-2l7-4 8-1 9-3 7-6 12-4 3-3 16-8 4.5-3.5 3.5-4.5 4-2 12.5-12.5 5.5-7.5 3.5-2.5q4.3-7.7 11-13l7-12 13.5-16.5 2-1zm115 1h9q1.25 3.5 4.5 3l5 10.5 16 18 9.5 13.5q2.25-.75 1.5 1.5l6.5 7.5 5.5 4.5 2 4.5q9.2 2.9 14.5 11l6 3h2l9 7 12 4 10 7h2l3 2 10 2 2 2 6 3h2l2 2q3.25-.75 4 1h7l6 2h28.5v31h-13.5l-1-1h-6l-9 3h-5l-4 2h-4l-8 6-3 1h-7l-6 3h-2l-13 8-10 2-7 6-10 4-4.5 4.5-1.5 2.5-9 4-4.5 4.5-4.5 5.5-2.5 1.5-10.5 12.5-2.5 1.5q.75 2.25-1.5 1.5l-4 5-2.5 1.5-5 9-7 9v2l-7.5 9.5h-10l-5.5-5.5-1-3-8-10-1-3-12-13-3-8v-5l1-3 3.5-3.5 4.5-3.5 2.5-3.5 3-1h7.5q.65 5.4 5.5 8l3 1h7q5.5-2 8.5-6.5l2-4.5h1.5l12-12h1.5v-1.5l8.5-8.5 11-9 10-3 7-7 12-5 7-5 7-2 4.5-4.5v-3l-3.5-3.5-11-3-6-6-14-6-11-8-3-1-13.5-12.5-5.5-6.5-3.5-2.5-16.5-18.5-4-2-6-1q-.75 1.75-4 1l-4.5 4.5q-.25 4.75-3.5 6.5-6.5 2.5-10 8h-1.5q1.13 2.67-1.5 2l-11 12-10 9-9.5 5.5-1.5 2.5h-1.5q1.13 2.67-1.5 2-4.41 4.09-11 6l-13.5 11.5-1 3 1 1v7l-5.5 7.5-9 8-9 1-18-10-3-3-6-2-4-4-9-3-3.5-3.5 2.5-4.5 11-5 8-5h2l8-4 5-5 12-5 9-8 9-3 3.5-2.5 4.5-5.5 5-3 9-8 4-2 4.5-4.5 4.5-5.5 3-1 5.5-4.5 2-4.5 3-1.5 7-10 20-22 5-10.5 2.5-1z";
|
|
179
|
+
const ORNAMENT_END_PATH = "M210.5 53h6l7.5 6.5 3.5 5.5 10.5 8.5 4.5 5.5 7 3q3.17 4.83 9 7h4l1 1 6 1 15 7h10l1 1h8l1 1h7l1 1h7.5v30.5q-.12 1.13-5.5.5l-1 1h-6l-1 1h-17q-1 2-5 1l-15 7-3 1h-6q-6.5 2.5-10 8l-15 9-9.5 9.5-4.5 7.5-7 3h-6l-3-1-12.5-10.5q.75-2.25-1.5-1.5l-6-5q-8.22-1.78-13-7l-13-4-3-3-8-3-17-3-6-4-9-1-6-3-9-1-11-4h-7l-4-2h-4l-1-1-14-2-5-2h-11q-1.25-2.25-6-1l-6.5-3.5 1-3.5 5.5-2h3l1-1h12l1-1h4l6-2 9-1 1-1h3l4-2h4l9-3h8l16-6h4l7-4q4 1 5-1h7l1-1h4l6-2 10-7 9-2 16-11 3-1 7-7 12-6z";
|
|
180
|
+
const CHECK_MARK_PATH = "M237.5 26q5.25-1.75 3.5 3.5l-6 11-5 5-4 7-4 4-9 14-3 3-1 3-4 4-1 3-12 17-7 12-9 11-5 9-14 19-1 3-4 4-7 12-8 10-1 3-4 4-2 5-3 3v2l-3.5 4.5-6 2-11-6-2.5-2.5-3.5-4.5-16-11-13.5-12.5q-1.25-5.75-5.5-8.5l-7-2-5-3-13-12-8-3h-6l-3-1-2.5-2.5v-2l3-6 26.5-36.5 5-3h5l5.5 4.5q-.75 2.25 1.5 1.5l16.5 17.5 1 3 13 13 5.5 9.5 7 1 18-13 12-12 21-18 10-10 8-6 19.5-18.5 2.5-3.5 12-9q10.85-12.15 24-22z";
|
|
181
|
+
const SERVER_MARK_DIAMOND_PATH = "M23.44 6.62l1 .63 1.44 1.31.43.56 1.69 1.44.56.69.32.19.56.68.81.69q-.09.28.19.19l1.75 2 .5.38h.19v.18l.62.75 2.94 2.94.68.56 1.32 1.44.44.31.56.69.44.31.68.82q.28-.1.19.18.54.28.37 1.25l-1.18 1.31-1.06.94-.82.94-2.18 2.06-4.32 4.56-.68.44-3.07 3.19-.93.81-2.44 2.56-.5.26h-.88l-.37-.13-.44-.44-.56-.69q-.28.1-.19-.18l-2.38-2.25-.18-.31-.69-.57-.56-.69-.31-.18-.19-.32-.94-.68-.69-.82q-.28.1-.18-.18l-2.32-2.44-2.81-2.56-1.44-1.56-.69-.57-2-2.12-.37-.5v-.5l.25-.5 1.69-1.69q.28.09.19-.19.43-.15.37-.56h.19l.5-.37 2.06-2.07.12-.43h.19l.81-.69.69-.81.31-.19 1.19-1.31.81-.69.19-.31.81-.69.32-.57.56-.24v-.19l.56-.57.56-.43.32-.44.68-.56.44-.57.56-.43.26-.57h.18l2.13-2 .75-.5z";
|
|
182
|
+
const SERVER_MARK_TICK_PATH = "M30.12 16.88l-.24.12-.38.62-2.5 2.63-1.75 1.63-1.25 1.37-.25.5h-.13l-.87.87q.13.26-.13.13l-.74.87-1.26 1-.37-.12-.63-.5-.5-.5-.5-.5-.5-.5-1.37-1.25-.75-.25h-.38l-.62.25q-.75.37-1 1.25v1.12l.25.63.5.63.37.12 2.63 3 .5.75 1.63 1.25h1l1-.75.37-.5.63-.5.37-.5.63-.5.5-.63.37-.24.63-.76.5-.37.37-.5.63-.5.24-.37.88-.76.38-.62.5-.38.37-.5.37-.24q.38-.38.63-.88l.75-.5.12-.25.76-.63 1.12-1.12q.25-.25.12-.75l.13-.13-.13-.74-.5-.63-.74-.75q-.63.12-.63-.12h-1.13z";
|
|
183
|
+
const SETTINGS_RING_CENTRE = [24.05, 24.9];
|
|
184
|
+
const SETTINGS_RING_RADIUS = 9.85;
|
|
185
|
+
const SETTINGS_RING_WIDTH = 1.9;
|
|
186
|
+
const FIXTURE_VARIANT_SEPARATOR = "-";
|
|
187
|
+
const INTERACTION_KEY_LABEL = "F";
|
|
188
|
+
const CONSTELLATION_NODE_PLACES = [
|
|
189
|
+
{
|
|
190
|
+
left: 15.25,
|
|
191
|
+
top: 116
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
left: 69.25,
|
|
195
|
+
top: 227
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
left: 105.25,
|
|
199
|
+
top: 338.75
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
left: 105.25,
|
|
203
|
+
top: 449.75
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
left: 69.25,
|
|
207
|
+
top: 560.75
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
left: -2.75,
|
|
211
|
+
top: 671.75
|
|
212
|
+
}
|
|
213
|
+
];
|
|
214
|
+
const INTERACTION_HOVER_MS = 50;
|
|
215
|
+
const INTERACTION_REST_MS = 100;
|
|
216
|
+
const INTERACTION_PILL_REST_MS = 200;
|
|
217
|
+
const INTERACTION_PRESS_MS = 167;
|
|
218
|
+
const GAME_SMOOTHSTEP_EASING = "cubic-bezier(0.333, 0, 0.667, 1)";
|
|
219
|
+
const GAME_ROW_HOVER = "rgb(255 255 255 / 0.2)";
|
|
220
|
+
const GAME_ROW_PRESS = "rgb(255 255 255 / 0.3)";
|
|
221
|
+
const GAME_REPLY_REST = "rgb(0 0 0 / 0.22)";
|
|
222
|
+
const GAME_REPLY_HOVER = "rgb(255 255 255 / 0.85)";
|
|
223
|
+
const GAME_REPLY_HOVER_INK = "#3b4255";
|
|
224
|
+
//#endregion
|
|
225
|
+
//#region src/components/CharacterMenuConstellation/Index.vue
|
|
226
|
+
const _hoisted_1$22 = { class: "constellations" };
|
|
227
|
+
const _hoisted_2$19 = { class: "nodes" };
|
|
228
|
+
var Index_default$3 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
|
|
229
|
+
__name: "Index",
|
|
230
|
+
props: { activated: {} },
|
|
231
|
+
setup(__props) {
|
|
232
|
+
const nodeStyles = CONSTELLATION_NODE_PLACES.map(({ left, top }) => ({
|
|
233
|
+
left: `calc(var(--unit) * ${left})`,
|
|
234
|
+
top: `calc(var(--unit) * ${top})`
|
|
235
|
+
}));
|
|
236
|
+
return (_ctx, _cache) => {
|
|
237
|
+
return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The Constellation tab's panel: the six constellations down its right, each a ring lit once activated. The\n game's star map is its own art and its names are not decoded yet, so neither is drawn "), createElementVNode("div", _hoisted_1$22, [createElementVNode("ul", _hoisted_2$19, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.activated, (isActivated, index) => {
|
|
238
|
+
return openBlock(), createElementBlock("li", {
|
|
239
|
+
key: index,
|
|
240
|
+
class: normalizeClass(["node", { lit: isActivated }]),
|
|
241
|
+
style: normalizeStyle(unref(nodeStyles)[index])
|
|
242
|
+
}, null, 6);
|
|
243
|
+
}), 128))])])], 2112);
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
}), [["__scopeId", "data-v-59aca725"]]);
|
|
247
|
+
//#endregion
|
|
248
|
+
//#region src/components/CharacterMenuProfile/Index.vue
|
|
249
|
+
const _hoisted_1$21 = { class: "profile" };
|
|
250
|
+
const _hoisted_2$18 = { class: "entries-column" };
|
|
251
|
+
const _hoisted_3$15 = { class: "entries" };
|
|
252
|
+
const _hoisted_4$12 = [
|
|
253
|
+
"aria-pressed",
|
|
254
|
+
"data-locked",
|
|
255
|
+
"onClick"
|
|
256
|
+
];
|
|
257
|
+
const _hoisted_5$10 = {
|
|
258
|
+
key: 0,
|
|
259
|
+
class: "namecard"
|
|
260
|
+
};
|
|
261
|
+
const _hoisted_6$9 = {
|
|
262
|
+
key: 0,
|
|
263
|
+
class: "story"
|
|
264
|
+
};
|
|
265
|
+
const _hoisted_7$9 = { class: "title" };
|
|
266
|
+
const _hoisted_8$8 = { class: "text" };
|
|
267
|
+
var Index_default$4 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
|
|
268
|
+
__name: "Index",
|
|
269
|
+
props: {
|
|
270
|
+
entries: {},
|
|
271
|
+
namecardName: { default: "" }
|
|
272
|
+
},
|
|
273
|
+
setup(__props) {
|
|
274
|
+
const entryIndex = ref(0);
|
|
275
|
+
const selectedEntry = computed(() => __props.entries[entryIndex.value]);
|
|
276
|
+
return (_ctx, _cache) => {
|
|
277
|
+
return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The Profile tab's panel: the stories down its left, each by its title, and the chosen one's title and text down its\n right. A locked story shows its unlock line in place of its text. The namecard the Friendship holds is a plate of its\n name under the stories, its art not drawn yet "), createElementVNode("div", _hoisted_1$21, [createElementVNode("div", _hoisted_2$18, [createElementVNode("ul", _hoisted_3$15, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.entries, (entry, index) => {
|
|
278
|
+
return openBlock(), createElementBlock("li", { key: index }, [createElementVNode("button", {
|
|
279
|
+
class: "entry",
|
|
280
|
+
"aria-pressed": index === entryIndex.value,
|
|
281
|
+
"data-locked": entry.isLocked,
|
|
282
|
+
type: "button",
|
|
283
|
+
onClick: ($event) => entryIndex.value = index
|
|
284
|
+
}, toDisplayString(entry.title), 9, _hoisted_4$12)]);
|
|
285
|
+
}), 128))]), __props.namecardName ? (openBlock(), createElementBlock("p", _hoisted_5$10, toDisplayString(__props.namecardName), 1)) : createCommentVNode("v-if", true)]), selectedEntry.value ? (openBlock(), createElementBlock("article", _hoisted_6$9, [createElementVNode("h2", _hoisted_7$9, toDisplayString(selectedEntry.value.title), 1), createElementVNode("p", _hoisted_8$8, toDisplayString(selectedEntry.value.text), 1)])) : createCommentVNode("v-if", true)])], 2112);
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
}), [["__scopeId", "data-v-d064a750"]]);
|
|
289
|
+
//#endregion
|
|
290
|
+
//#region src/components/CharacterMenuTalents/Index.vue
|
|
291
|
+
const _hoisted_1$20 = { class: "talents" };
|
|
292
|
+
const _hoisted_2$17 = { class: "talent-list" };
|
|
293
|
+
const _hoisted_3$14 = { class: "level" };
|
|
294
|
+
var Index_default$5 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
|
|
295
|
+
__name: "Index",
|
|
296
|
+
props: { levels: {} },
|
|
297
|
+
setup(__props) {
|
|
298
|
+
return (_ctx, _cache) => {
|
|
299
|
+
return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The Talents tab's panel: the three combat talents down its right, each with its level. The passives under them\n and the talents' names are not drawn yet, since the game's text for them is not decoded "), createElementVNode("div", _hoisted_1$20, [createElementVNode("ul", _hoisted_2$17, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.levels, (level, index) => {
|
|
300
|
+
return openBlock(), createElementBlock("li", {
|
|
301
|
+
key: index,
|
|
302
|
+
class: "talent"
|
|
303
|
+
}, [createElementVNode("span", _hoisted_3$14, toDisplayString(level), 1), _cache[0] || (_cache[0] = createElementVNode("span", { class: "icon" }, null, -1))]);
|
|
304
|
+
}), 128))])])], 2112);
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
}), [["__scopeId", "data-v-c095bfc3"]]);
|
|
308
|
+
//#endregion
|
|
309
|
+
//#region src/components/CharacterMenuWeapons/Index.vue
|
|
310
|
+
const _hoisted_1$19 = { class: "weapons" };
|
|
311
|
+
const _hoisted_2$16 = { class: "name" };
|
|
312
|
+
const _hoisted_3$13 = { class: "stars" };
|
|
313
|
+
const _hoisted_4$11 = { class: "stats" };
|
|
314
|
+
const _hoisted_5$9 = { class: "stat" };
|
|
315
|
+
const _hoisted_6$8 = { class: "stat" };
|
|
316
|
+
const _hoisted_7$8 = { class: "level" };
|
|
317
|
+
const _hoisted_8$7 = { class: "level-text" };
|
|
318
|
+
const _hoisted_9$7 = { class: "refinement" };
|
|
319
|
+
var Index_default$6 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
|
|
320
|
+
__name: "Index",
|
|
321
|
+
props: {
|
|
322
|
+
ascension: {},
|
|
323
|
+
baseAttack: {},
|
|
324
|
+
levelText: {},
|
|
325
|
+
name: {},
|
|
326
|
+
rarity: {},
|
|
327
|
+
refinement: {},
|
|
328
|
+
subStatValue: {}
|
|
329
|
+
},
|
|
330
|
+
setup(__props) {
|
|
331
|
+
return (_ctx, _cache) => {
|
|
332
|
+
return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The Weapons tab's panel: the weapon's name and stars, its base ATK and secondary attribute, its level with the\n ascension phases reached, its refinement rank, and the two buttons beneath "), createElementVNode("div", _hoisted_1$19, [
|
|
333
|
+
createElementVNode("p", _hoisted_2$16, toDisplayString(__props.name), 1),
|
|
334
|
+
createElementVNode("p", _hoisted_3$13, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.rarity, (star) => {
|
|
335
|
+
return openBlock(), createElementBlock("span", {
|
|
336
|
+
key: star,
|
|
337
|
+
class: "star"
|
|
338
|
+
});
|
|
339
|
+
}), 128))]),
|
|
340
|
+
createElementVNode("ul", _hoisted_4$11, [createElementVNode("li", _hoisted_5$9, toDisplayString(__props.baseAttack), 1), createElementVNode("li", _hoisted_6$8, toDisplayString(__props.subStatValue), 1)]),
|
|
341
|
+
createElementVNode("p", _hoisted_7$8, [createElementVNode("span", _hoisted_8$7, toDisplayString(__props.levelText), 1), (openBlock(true), createElementBlock(Fragment, null, renderList(unref(6), (phase) => {
|
|
342
|
+
return openBlock(), createElementBlock("span", {
|
|
343
|
+
key: phase,
|
|
344
|
+
class: normalizeClass(["spark", { lit: phase <= __props.ascension }])
|
|
345
|
+
}, null, 2);
|
|
346
|
+
}), 128))]),
|
|
347
|
+
createElementVNode("p", _hoisted_9$7, toDisplayString(__props.refinement), 1),
|
|
348
|
+
createVNode(Index_default$2)
|
|
349
|
+
])], 2112);
|
|
350
|
+
};
|
|
351
|
+
}
|
|
352
|
+
}), [["__scopeId", "data-v-bf484c68"]]);
|
|
353
|
+
//#endregion
|
|
354
|
+
//#region src/components/CraftingScreen/Index.vue
|
|
355
|
+
const _hoisted_1$18 = { class: "crafting-screen" };
|
|
356
|
+
const _hoisted_2$15 = { class: "head" };
|
|
357
|
+
const _hoisted_3$12 = {
|
|
358
|
+
class: "title",
|
|
359
|
+
role: "heading",
|
|
360
|
+
"aria-level": "1"
|
|
361
|
+
};
|
|
362
|
+
const _hoisted_4$10 = { class: "coins" };
|
|
363
|
+
const _hoisted_5$8 = ["aria-label"];
|
|
364
|
+
const _hoisted_6$7 = { class: "tabs" };
|
|
365
|
+
const _hoisted_7$7 = ["aria-pressed", "onClick"];
|
|
366
|
+
const _hoisted_8$6 = { class: "tab-name" };
|
|
367
|
+
const _hoisted_9$6 = { class: "list" };
|
|
368
|
+
const _hoisted_10$6 = { class: "recipes" };
|
|
369
|
+
const _hoisted_11$4 = ["aria-pressed", "onClick"];
|
|
370
|
+
const _hoisted_12$4 = { class: "recipe-name" };
|
|
371
|
+
const _hoisted_13$4 = { class: "detail" };
|
|
372
|
+
const _hoisted_14$4 = { class: "recipe-title" };
|
|
373
|
+
const _hoisted_15$4 = { class: "crafters" };
|
|
374
|
+
const _hoisted_16$4 = ["aria-pressed", "onClick"];
|
|
375
|
+
const _hoisted_17$4 = { class: "crafter-name" };
|
|
376
|
+
const _hoisted_18$4 = ["aria-label", "max"];
|
|
377
|
+
const _hoisted_19$4 = { class: "crafted" };
|
|
378
|
+
const _hoisted_20$4 = { class: "required" };
|
|
379
|
+
const _hoisted_21$3 = { class: "materials-label" };
|
|
380
|
+
const _hoisted_22$3 = { class: "materials" };
|
|
381
|
+
var Index_default$7 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
|
|
382
|
+
__name: "Index",
|
|
383
|
+
props: /*@__PURE__*/ mergeModels({
|
|
384
|
+
amountLabel: {},
|
|
385
|
+
amountMaximum: {},
|
|
386
|
+
closeLabel: {},
|
|
387
|
+
coins: {},
|
|
388
|
+
craftedLabel: {},
|
|
389
|
+
crafters: {},
|
|
390
|
+
craftingMaterialsLabel: {},
|
|
391
|
+
craftLabel: {},
|
|
392
|
+
materials: {},
|
|
393
|
+
recipes: {},
|
|
394
|
+
requiredCoins: {},
|
|
395
|
+
requiredLabel: {},
|
|
396
|
+
tabs: {},
|
|
397
|
+
title: {}
|
|
398
|
+
}, {
|
|
399
|
+
"amount": { default: 1 },
|
|
400
|
+
"amountModifiers": {},
|
|
401
|
+
"crafterId": { default: 0 },
|
|
402
|
+
"crafterIdModifiers": {},
|
|
403
|
+
"recipeId": { default: 0 },
|
|
404
|
+
"recipeIdModifiers": {},
|
|
405
|
+
"tabId": { default: 0 },
|
|
406
|
+
"tabIdModifiers": {}
|
|
407
|
+
}),
|
|
408
|
+
emits: /*@__PURE__*/ mergeModels(["close", "craft"], [
|
|
409
|
+
"update:amount",
|
|
410
|
+
"update:crafterId",
|
|
411
|
+
"update:recipeId",
|
|
412
|
+
"update:tabId"
|
|
413
|
+
]),
|
|
414
|
+
setup(__props, { emit: __emit }) {
|
|
415
|
+
const amount = useModel(__props, "amount");
|
|
416
|
+
const crafterId = useModel(__props, "crafterId");
|
|
417
|
+
const recipeId = useModel(__props, "recipeId");
|
|
418
|
+
const tabId = useModel(__props, "tabId");
|
|
419
|
+
const emit = __emit;
|
|
420
|
+
return (_ctx, _cache) => {
|
|
421
|
+
return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The Craft screen, its pieces placed in the game's own pixels at 1080 high (`--unit` a pixel of that frame): the title\n and the coins across the head, the way out at the head's right, and the recipe tabs under the title. The screen takes its\n place from the game's layout, not a two-column grid, since its recipe list is narrower than its detail "), createElementVNode("div", _hoisted_1$18, [
|
|
422
|
+
createElementVNode("header", _hoisted_2$15, [
|
|
423
|
+
createElementVNode("p", _hoisted_3$12, toDisplayString(__props.title), 1),
|
|
424
|
+
createElementVNode("p", _hoisted_4$10, [_cache[3] || (_cache[3] = createElementVNode("span", {
|
|
425
|
+
class: "coin",
|
|
426
|
+
"aria-hidden": "true"
|
|
427
|
+
}, null, -1)), createTextVNode(" " + toDisplayString(__props.coins), 1)]),
|
|
428
|
+
createElementVNode("button", {
|
|
429
|
+
class: "close",
|
|
430
|
+
"aria-label": __props.closeLabel,
|
|
431
|
+
type: "button",
|
|
432
|
+
onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
|
|
433
|
+
}, [..._cache[4] || (_cache[4] = [createElementVNode("svg", {
|
|
434
|
+
viewBox: "0 0 24 24",
|
|
435
|
+
"aria-hidden": "true"
|
|
436
|
+
}, [createElementVNode("path", { d: "M6 6 18 18M18 6 6 18" })], -1)])], 8, _hoisted_5$8)
|
|
437
|
+
]),
|
|
438
|
+
createElementVNode("ul", _hoisted_6$7, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.tabs, (tab) => {
|
|
439
|
+
return openBlock(), createElementBlock("li", { key: tab.id }, [createElementVNode("button", {
|
|
440
|
+
class: "tab",
|
|
441
|
+
"aria-pressed": tab.id === tabId.value,
|
|
442
|
+
type: "button",
|
|
443
|
+
onClick: ($event) => tabId.value = tab.id
|
|
444
|
+
}, [createElementVNode("span", _hoisted_8$6, toDisplayString(tab.name), 1)], 8, _hoisted_7$7)]);
|
|
445
|
+
}), 128))]),
|
|
446
|
+
createElementVNode("div", _hoisted_9$6, [createElementVNode("ul", _hoisted_10$6, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.recipes, (recipe) => {
|
|
447
|
+
return openBlock(), createElementBlock("li", { key: recipe.id }, [createElementVNode("button", {
|
|
448
|
+
class: "recipe",
|
|
449
|
+
"aria-pressed": recipe.id === recipeId.value,
|
|
450
|
+
type: "button",
|
|
451
|
+
onClick: ($event) => recipeId.value = recipe.id
|
|
452
|
+
}, [createElementVNode("span", _hoisted_12$4, toDisplayString(recipe.name), 1)], 8, _hoisted_11$4)]);
|
|
453
|
+
}), 128))])]),
|
|
454
|
+
createElementVNode("div", _hoisted_13$4, [
|
|
455
|
+
_cache[5] || (_cache[5] = createElementVNode("div", {
|
|
456
|
+
class: "materials-band",
|
|
457
|
+
"aria-hidden": "true"
|
|
458
|
+
}, null, -1)),
|
|
459
|
+
createElementVNode("p", _hoisted_14$4, toDisplayString(__props.recipes.find((recipe) => recipe.id === recipeId.value)?.name), 1),
|
|
460
|
+
createElementVNode("ul", _hoisted_15$4, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.crafters, (crafter) => {
|
|
461
|
+
return openBlock(), createElementBlock("li", { key: crafter.id }, [createElementVNode("button", {
|
|
462
|
+
class: "crafter",
|
|
463
|
+
"aria-pressed": crafter.id === crafterId.value,
|
|
464
|
+
type: "button",
|
|
465
|
+
onClick: ($event) => crafterId.value = crafter.id
|
|
466
|
+
}, [createElementVNode("span", _hoisted_17$4, toDisplayString(crafter.name), 1)], 8, _hoisted_16$4)]);
|
|
467
|
+
}), 128))]),
|
|
468
|
+
withDirectives(createElementVNode("input", {
|
|
469
|
+
"onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => amount.value = $event),
|
|
470
|
+
"aria-label": __props.amountLabel,
|
|
471
|
+
class: "amount",
|
|
472
|
+
max: __props.amountMaximum,
|
|
473
|
+
min: "1",
|
|
474
|
+
type: "range"
|
|
475
|
+
}, null, 8, _hoisted_18$4), [[
|
|
476
|
+
vModelText,
|
|
477
|
+
amount.value,
|
|
478
|
+
void 0,
|
|
479
|
+
{ number: true }
|
|
480
|
+
]]),
|
|
481
|
+
createElementVNode("p", _hoisted_19$4, toDisplayString(__props.craftedLabel), 1),
|
|
482
|
+
createElementVNode("p", _hoisted_20$4, toDisplayString(__props.requiredLabel) + " " + toDisplayString(__props.requiredCoins), 1),
|
|
483
|
+
createElementVNode("p", _hoisted_21$3, toDisplayString(__props.craftingMaterialsLabel), 1),
|
|
484
|
+
createElementVNode("ul", _hoisted_22$3, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.materials, (material) => {
|
|
485
|
+
return openBlock(), createElementBlock("li", {
|
|
486
|
+
key: material.id,
|
|
487
|
+
class: "material"
|
|
488
|
+
}, toDisplayString(material.owned) + " / " + toDisplayString(material.required), 1);
|
|
489
|
+
}), 128))]),
|
|
490
|
+
createElementVNode("button", {
|
|
491
|
+
class: "craft",
|
|
492
|
+
type: "button",
|
|
493
|
+
onClick: _cache[2] || (_cache[2] = ($event) => emit("craft"))
|
|
494
|
+
}, toDisplayString(__props.craftLabel), 1)
|
|
495
|
+
])
|
|
496
|
+
])], 2112);
|
|
497
|
+
};
|
|
498
|
+
}
|
|
499
|
+
}), [["__scopeId", "data-v-501eda08"]]);
|
|
500
|
+
//#endregion
|
|
501
|
+
//#region src/components/GameButton/Index.vue
|
|
502
|
+
const _hoisted_1$17 = ["data-kind"];
|
|
503
|
+
const _hoisted_2$14 = {
|
|
504
|
+
key: 0,
|
|
505
|
+
class: "tip"
|
|
506
|
+
};
|
|
507
|
+
var Index_default$10 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
|
|
508
|
+
__name: "Index",
|
|
509
|
+
props: {
|
|
510
|
+
kind: {},
|
|
511
|
+
tip: {}
|
|
512
|
+
},
|
|
513
|
+
setup(__props, { expose: __expose }) {
|
|
514
|
+
useCssVars((_ctx) => ({
|
|
515
|
+
"v8de8a9a0": restDuration,
|
|
516
|
+
"v4f7d0248": hoverDuration,
|
|
517
|
+
"v5ff883e5": unref(GAME_GOLD),
|
|
518
|
+
"c23e4506": unref(GAME_CREAM),
|
|
519
|
+
"v7defe8be": unref(GAME_INK),
|
|
520
|
+
"v78a9c41c": unref(GAME_ROW_HOVER),
|
|
521
|
+
"v77c60e0e": unref(GAME_ROW_PRESS),
|
|
522
|
+
"v7a0541ee": pillRestDuration,
|
|
523
|
+
"v307a3362": pressDuration,
|
|
524
|
+
"v0673242b": unref(GAME_SMOOTHSTEP_EASING),
|
|
525
|
+
"v40afb3ee": unref(GAME_REPLY_REST),
|
|
526
|
+
"v5683177c": unref(GAME_REPLY_HOVER),
|
|
527
|
+
"a79a636e": unref(GAME_REPLY_HOVER_INK)
|
|
528
|
+
}));
|
|
529
|
+
const button = useTemplateRef("button");
|
|
530
|
+
const hoverDuration = `50ms`;
|
|
531
|
+
const restDuration = `100ms`;
|
|
532
|
+
const pillRestDuration = `200ms`;
|
|
533
|
+
const pressDuration = `167ms`;
|
|
534
|
+
__expose({ focus: () => button.value?.focus() });
|
|
535
|
+
return (_ctx, _cache) => {
|
|
536
|
+
return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" One of the game's buttons, placed by its parent, in its kind's look for each state: at rest, hovered (or focused\n From the keyboard, which the game draws as a hover), pressed and disabled. The look is the button's own, and its content\n Takes the colour it sets "), createElementVNode("button", {
|
|
537
|
+
ref_key: "button",
|
|
538
|
+
ref: button,
|
|
539
|
+
class: "game-button",
|
|
540
|
+
"data-kind": __props.kind,
|
|
541
|
+
type: "button"
|
|
542
|
+
}, [renderSlot(_ctx.$slots, "default"), __props.tip ? (openBlock(), createElementBlock("span", _hoisted_2$14, toDisplayString(__props.tip), 1)) : createCommentVNode("v-if", true)], 8, _hoisted_1$17)], 2112);
|
|
543
|
+
};
|
|
544
|
+
}
|
|
545
|
+
}), [["__scopeId", "data-v-cab29bfa"]]);
|
|
546
|
+
//#endregion
|
|
547
|
+
//#region src/models/GameButtonKind.ts
|
|
548
|
+
let GameButtonKind = /* @__PURE__ */ function(GameButtonKind) {
|
|
549
|
+
GameButtonKind["Disc"] = "Disc";
|
|
550
|
+
GameButtonKind["Pill"] = "Pill";
|
|
551
|
+
GameButtonKind["Plain"] = "Plain";
|
|
552
|
+
GameButtonKind["Reply"] = "Reply";
|
|
553
|
+
GameButtonKind["Row"] = "Row";
|
|
554
|
+
return GameButtonKind;
|
|
555
|
+
}({});
|
|
556
|
+
//#endregion
|
|
557
|
+
//#region src/models/DialogueChoiceIcon.ts
|
|
558
|
+
let DialogueChoiceIcon = /* @__PURE__ */ function(DialogueChoiceIcon) {
|
|
559
|
+
DialogueChoiceIcon["Quest"] = "Quest";
|
|
560
|
+
DialogueChoiceIcon["StoryQuest"] = "StoryQuest";
|
|
561
|
+
DialogueChoiceIcon["Talk"] = "Talk";
|
|
562
|
+
return DialogueChoiceIcon;
|
|
563
|
+
}({});
|
|
564
|
+
//#endregion
|
|
565
|
+
//#region src/services/DialogueChoiceIconPathMap.ts
|
|
566
|
+
const DialogueChoiceIconPathMap = {
|
|
567
|
+
["Quest"]: {
|
|
568
|
+
d: "m140.5 22h19l1 1h8l1 1h5l1 1 11 2 9 3 3 2h2l12 6 14 9 22.5 21.5 13 19 6 12v2l2 3 3 9v3l3 9v5l1 1v8l1 1v19l-1 1v8l-1 1v5l-1 1-2 11-3 9-2 3v2l-6 12-13 19-17.5 17.5-19 13-12 6h-2l-3 2-9 3h-3l-9 3h-5l-1 1h-8l-1 1h-19l-1-1h-8l-1-1h-5l-1-1-11-2-9-3-3-2h-2l-12-6-19-13-17.5-17.5-13-19-6-12v-2l-2-3-3-9v-3l-3-9v-5l-1-1v-8l-1-1v-19l1-1v-8l1-1v-5l1-1 2-11 3-9 2-3v-2l6-12 13-19 17.5-17.5 14-10 17-9h2l3-2 9-3h3l9-3q4.75 1.25 6-1h8l1-1z",
|
|
569
|
+
viewBox: "0 0 300 300"
|
|
570
|
+
},
|
|
571
|
+
["StoryQuest"]: {
|
|
572
|
+
d: "m63.5 18h2l45.5 45.5v2l-45.5 45.5h-2l-45.5-45.5v-2l45.5-45.5z",
|
|
573
|
+
viewBox: "0 0 128 128"
|
|
574
|
+
},
|
|
575
|
+
["Talk"]: {
|
|
576
|
+
d: "m65 0h46.5q.88.04.5 3h1.5l1 1 9 1 4 3 6 1 3 3h2l5 4 3 1 6.5 5.5q-.75 2.25 1.5 1.5 3 1.12 2.5 4l3 1.5 8 10q.35 5.15 4 7l1 7 1 2.5 2 .5v35.5q-2.67-1.12-2 1.5l-1 1-1 6q-3.18 2.32-4 7-6.72 9.78-15.5 17.5l-5 4h-1.5v2.5l3 5 8 9 1 3-1 3 1 2-2.5 3.5-2.5 1.5-.5 1.5h-29.5q1.13-2.67-1.5-2l-7-3-8-8-6-1-1 1h-23l-6-2-12-1-5-3-6-1-4-3-4-1-15-11-8.5-8.5-7-9-1-4-3-3-2-8.5q-2.96.38-3-.5v-35.5h3v-1.5l1-1 1-7q3.65-1.85 4-7l9.5-11.5q2.25.75 1.5-1.5 1.12-3 4-2.5l1.5-3 11-8 4-1 3-3 6-1 4-3 9-1 2.5-1v-3zm22 8-1 1h-13l-6 3-9 1-4 3-6 1-3 3-4 1-11 8-2 3-3 1v2l-8 9q0 5-4 7l-1 7-3 5v23l3 5 1 6 3 3 1 4 8 10 13 10q4 1 6 4l6 2 2 2 6 1 6 3 12 1q1 2 6 1l1 1h12q1-2 6-1l1-1h8l3 5 8 6 10 4h18v-2l-5-5-6-9-2-5v-4l14-11 10-12 1-4 3-3 1-6 3-5v-23l-3-5-1-7-3-3-1-4-8-9q1-3-1-2l-2-2-12-10-4-1-3-3-6-1-4-3-9-1-6-3h-13q-2-2-5-1zm-39.5 58h3l5.5 3.5 2 4v4l-4.5 6.5h-8l-4.5-4.5v-9l1.5-1.5 5-3zm39 0h4q1.85 2.85 5.5 3-.75 2.58 1 3.5v6l-2 4.5q-3 2-10.5 1l-2.5-1-2-5.5v-5q1.75-.92 1-3.5 3.65-.15 5.5-3zm40 0h3l6.5 4.5v9l-4.5 4.5h-8l-2.5-2.5-2-4v-4l3.5-5.5 4-2z",
|
|
577
|
+
viewBox: "0 0 176 160"
|
|
578
|
+
}
|
|
579
|
+
};
|
|
580
|
+
//#endregion
|
|
581
|
+
//#region src/components/DialogueScreen/Index.vue
|
|
582
|
+
const _hoisted_1$16 = {
|
|
583
|
+
key: 0,
|
|
584
|
+
class: "speaker"
|
|
585
|
+
};
|
|
586
|
+
const _hoisted_2$13 = {
|
|
587
|
+
key: 1,
|
|
588
|
+
class: "role"
|
|
589
|
+
};
|
|
590
|
+
const _hoisted_3$11 = { class: "line" };
|
|
591
|
+
const _hoisted_4$9 = { "aria-hidden": "true" };
|
|
592
|
+
const _hoisted_5$7 = {
|
|
593
|
+
class: "unrevealed",
|
|
594
|
+
"aria-hidden": "true"
|
|
595
|
+
};
|
|
596
|
+
const _hoisted_6$6 = { class: "spoken" };
|
|
597
|
+
const _hoisted_7$6 = {
|
|
598
|
+
key: 0,
|
|
599
|
+
class: "choices"
|
|
600
|
+
};
|
|
601
|
+
const _hoisted_8$5 = ["data-interaction-state"];
|
|
602
|
+
const _hoisted_9$5 = ["viewBox"];
|
|
603
|
+
const _hoisted_10$5 = ["d"];
|
|
604
|
+
var Index_default$8 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
|
|
605
|
+
__name: "Index",
|
|
606
|
+
props: {
|
|
607
|
+
choices: {},
|
|
608
|
+
line: {},
|
|
609
|
+
revealedLength: {},
|
|
610
|
+
selectedChoiceId: {},
|
|
611
|
+
speakerName: {},
|
|
612
|
+
speakerRole: {}
|
|
613
|
+
},
|
|
614
|
+
emits: ["advance", "choose"],
|
|
615
|
+
setup(__props, { emit: __emit }) {
|
|
616
|
+
const emit = __emit;
|
|
617
|
+
const lineParts = computed(() => {
|
|
618
|
+
const characters = [...__props.line];
|
|
619
|
+
return {
|
|
620
|
+
revealed: characters.slice(0, __props.revealedLength).join(""),
|
|
621
|
+
unrevealed: characters.slice(__props.revealedLength).join("")
|
|
622
|
+
};
|
|
623
|
+
});
|
|
624
|
+
return (_ctx, _cache) => {
|
|
625
|
+
return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The game's dialogue over the world: a click anywhere goes on, the speaker's name over the line at the foot of the\n Screen, and the replies down the right. Sized and placed off the English client's recording of its dialogue\n choices; the selected reply's look and a narration's place wait on recordings still owed "), createElementVNode("div", {
|
|
626
|
+
class: "dialogue-screen",
|
|
627
|
+
onClick: _cache[0] || (_cache[0] = ($event) => emit("advance"))
|
|
628
|
+
}, [createElementVNode("div", {
|
|
629
|
+
class: normalizeClass(["band", { narration: !__props.speakerName }]),
|
|
630
|
+
"aria-live": "polite"
|
|
631
|
+
}, [
|
|
632
|
+
__props.speakerName ? (openBlock(), createElementBlock("p", _hoisted_1$16, toDisplayString(__props.speakerName), 1)) : createCommentVNode("v-if", true),
|
|
633
|
+
__props.speakerRole ? (openBlock(), createElementBlock("p", _hoisted_2$13, toDisplayString(__props.speakerRole), 1)) : createCommentVNode("v-if", true),
|
|
634
|
+
createElementVNode("p", _hoisted_3$11, [
|
|
635
|
+
createElementVNode("span", _hoisted_4$9, toDisplayString(lineParts.value.revealed), 1),
|
|
636
|
+
createElementVNode("span", _hoisted_5$7, toDisplayString(lineParts.value.unrevealed), 1),
|
|
637
|
+
createElementVNode("span", _hoisted_6$6, toDisplayString(__props.line), 1)
|
|
638
|
+
])
|
|
639
|
+
], 2), __props.choices.length > 0 ? (openBlock(), createElementBlock("ul", _hoisted_7$6, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.choices, ({ icon, id, text }) => {
|
|
640
|
+
return openBlock(), createElementBlock("li", {
|
|
641
|
+
key: id,
|
|
642
|
+
"data-interaction-state": id === __props.selectedChoiceId ? "Hover" : void 0
|
|
643
|
+
}, [createVNode(Index_default$10, {
|
|
644
|
+
class: "choice",
|
|
645
|
+
"data-icon": icon,
|
|
646
|
+
kind: unref(GameButtonKind).Reply,
|
|
647
|
+
onClick: withModifiers(($event) => emit("choose", id), ["stop"])
|
|
648
|
+
}, {
|
|
649
|
+
default: withCtx(() => [(openBlock(), createElementBlock("svg", {
|
|
650
|
+
class: "icon",
|
|
651
|
+
"aria-hidden": "true",
|
|
652
|
+
viewBox: unref(DialogueChoiceIconPathMap)[icon].viewBox
|
|
653
|
+
}, [createElementVNode("path", {
|
|
654
|
+
d: unref(DialogueChoiceIconPathMap)[icon].d,
|
|
655
|
+
fill: "currentColor"
|
|
656
|
+
}, null, 8, _hoisted_10$5)], 8, _hoisted_9$5)), createTextVNode(" " + toDisplayString(text), 1)]),
|
|
657
|
+
_: 2
|
|
658
|
+
}, 1032, [
|
|
659
|
+
"data-icon",
|
|
660
|
+
"kind",
|
|
661
|
+
"onClick"
|
|
662
|
+
])], 8, _hoisted_8$5);
|
|
663
|
+
}), 128))])) : createCommentVNode("v-if", true)])], 2112);
|
|
664
|
+
};
|
|
665
|
+
}
|
|
666
|
+
}), [["__scopeId", "data-v-da022ee0"]]);
|
|
667
|
+
//#endregion
|
|
668
|
+
//#region src/components/TwoColumnScreen/Index.vue
|
|
669
|
+
const _hoisted_1$15 = { class: "two-column-screen" };
|
|
670
|
+
var Index_default$23 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
|
|
671
|
+
__name: "Index",
|
|
672
|
+
setup(__props) {
|
|
673
|
+
return (_ctx, _cache) => {
|
|
674
|
+
return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" A screen drawn as two columns under a head row, its head spanning both. A screen of this shape takes its root from\n here, so a class on it names the screen and never restates the layout "), createElementVNode("div", _hoisted_1$15, [renderSlot(_ctx.$slots, "default", {}, void 0, true)])], 2112);
|
|
675
|
+
};
|
|
676
|
+
}
|
|
677
|
+
}), [["__scopeId", "data-v-d9df7bbc"]]);
|
|
678
|
+
//#endregion
|
|
679
|
+
//#region src/models/ForgeQueueState.ts
|
|
680
|
+
let ForgeQueueState = /* @__PURE__ */ function(ForgeQueueState) {
|
|
681
|
+
ForgeQueueState["Complete"] = "Complete";
|
|
682
|
+
ForgeQueueState["Forging"] = "Forging";
|
|
683
|
+
ForgeQueueState["Idle"] = "Idle";
|
|
684
|
+
ForgeQueueState["Locked"] = "Locked";
|
|
685
|
+
return ForgeQueueState;
|
|
686
|
+
}({});
|
|
687
|
+
//#endregion
|
|
688
|
+
//#region src/models/ForgeTab.ts
|
|
689
|
+
let ForgeTab = /* @__PURE__ */ function(ForgeTab) {
|
|
690
|
+
ForgeTab["Materials"] = "Materials";
|
|
691
|
+
ForgeTab["Queues"] = "Queues";
|
|
692
|
+
return ForgeTab;
|
|
693
|
+
}({});
|
|
694
|
+
//#endregion
|
|
695
|
+
//#region src/components/ForgeScreen/Index.vue
|
|
696
|
+
const _hoisted_1$14 = { class: "head" };
|
|
697
|
+
const _hoisted_2$12 = {
|
|
698
|
+
class: "title",
|
|
699
|
+
role: "heading",
|
|
700
|
+
"aria-level": "1"
|
|
701
|
+
};
|
|
702
|
+
const _hoisted_3$10 = { class: "tabs" };
|
|
703
|
+
const _hoisted_4$8 = ["aria-pressed"];
|
|
704
|
+
const _hoisted_5$6 = ["aria-pressed"];
|
|
705
|
+
const _hoisted_6$5 = { class: "coins" };
|
|
706
|
+
const _hoisted_7$5 = ["aria-label"];
|
|
707
|
+
const _hoisted_8$4 = { class: "recipes" };
|
|
708
|
+
const _hoisted_9$4 = [
|
|
709
|
+
"aria-pressed",
|
|
710
|
+
"disabled",
|
|
711
|
+
"onClick"
|
|
712
|
+
];
|
|
713
|
+
const _hoisted_10$4 = { class: "recipe-name" };
|
|
714
|
+
const _hoisted_11$3 = { class: "recipe-time" };
|
|
715
|
+
const _hoisted_12$3 = { class: "detail" };
|
|
716
|
+
const _hoisted_13$3 = ["aria-label", "max"];
|
|
717
|
+
const _hoisted_14$3 = { class: "total-time" };
|
|
718
|
+
const _hoisted_15$3 = { class: "item-icon" };
|
|
719
|
+
const _hoisted_16$3 = { class: "item-count" };
|
|
720
|
+
const _hoisted_17$3 = { class: "amount-label" };
|
|
721
|
+
const _hoisted_18$3 = { class: "amount-end amount-max" };
|
|
722
|
+
const _hoisted_19$3 = { class: "materials-box" };
|
|
723
|
+
const _hoisted_20$3 = { class: "materials-head" };
|
|
724
|
+
const _hoisted_21$2 = { class: "materials-title" };
|
|
725
|
+
const _hoisted_22$2 = { class: "support-title" };
|
|
726
|
+
const _hoisted_23$2 = { class: "required" };
|
|
727
|
+
const _hoisted_24$2 = {
|
|
728
|
+
key: 1,
|
|
729
|
+
class: "queues"
|
|
730
|
+
};
|
|
731
|
+
const _hoisted_25$2 = ["data-state"];
|
|
732
|
+
const _hoisted_26$2 = { class: "queue-name" };
|
|
733
|
+
const _hoisted_27$2 = { class: "queue-progress" };
|
|
734
|
+
const _hoisted_28$1 = { class: "queue-time" };
|
|
735
|
+
const _hoisted_29$1 = ["onClick"];
|
|
736
|
+
var Index_default$9 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
|
|
737
|
+
__name: "Index",
|
|
738
|
+
props: /*@__PURE__*/ mergeModels({
|
|
739
|
+
amountLabel: {},
|
|
740
|
+
amountMaximum: {},
|
|
741
|
+
closeLabel: {},
|
|
742
|
+
coins: {},
|
|
743
|
+
materialsBoxLabel: {},
|
|
744
|
+
materialsLabel: {},
|
|
745
|
+
obtainLabel: {},
|
|
746
|
+
queues: {},
|
|
747
|
+
queuesLabel: {},
|
|
748
|
+
recipes: {},
|
|
749
|
+
requiredCoins: {},
|
|
750
|
+
startLabel: {},
|
|
751
|
+
supportLabel: {},
|
|
752
|
+
title: {},
|
|
753
|
+
totalTimeLabel: {},
|
|
754
|
+
yieldCount: {}
|
|
755
|
+
}, {
|
|
756
|
+
"amount": { default: 1 },
|
|
757
|
+
"amountModifiers": {},
|
|
758
|
+
"recipeId": { default: 0 },
|
|
759
|
+
"recipeIdModifiers": {},
|
|
760
|
+
"tab": { default: "Materials" },
|
|
761
|
+
"tabModifiers": {}
|
|
762
|
+
}),
|
|
763
|
+
emits: /*@__PURE__*/ mergeModels([
|
|
764
|
+
"close",
|
|
765
|
+
"obtain",
|
|
766
|
+
"start"
|
|
767
|
+
], [
|
|
768
|
+
"update:amount",
|
|
769
|
+
"update:recipeId",
|
|
770
|
+
"update:tab"
|
|
771
|
+
]),
|
|
772
|
+
setup(__props, { emit: __emit }) {
|
|
773
|
+
const amount = useModel(__props, "amount");
|
|
774
|
+
const recipeId = useModel(__props, "recipeId");
|
|
775
|
+
const tab = useModel(__props, "tab");
|
|
776
|
+
const emit = __emit;
|
|
777
|
+
return (_ctx, _cache) => {
|
|
778
|
+
return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The forge, the blacksmith's screen: its two tabs across the head with the coins and the way out, the recipes on the\n left with the chosen one's amount and cost beside them, or the queues each holding an order that forges over real\n time and is obtained when it is done. Provisional: every place, size and colour here waits on the forge screen's\n passes against the public clip of the Wagner forge (references/forge-screen) and the owed order-queue recording "), createVNode(Index_default$23, { class: "forge-screen" }, {
|
|
779
|
+
default: withCtx(() => [createElementVNode("header", _hoisted_1$14, [
|
|
780
|
+
createElementVNode("p", _hoisted_2$12, toDisplayString(__props.title), 1),
|
|
781
|
+
createElementVNode("div", _hoisted_3$10, [createElementVNode("button", {
|
|
782
|
+
class: "tab",
|
|
783
|
+
"aria-pressed": tab.value === unref(ForgeTab).Materials,
|
|
784
|
+
type: "button",
|
|
785
|
+
onClick: _cache[0] || (_cache[0] = ($event) => tab.value = unref(ForgeTab).Materials)
|
|
786
|
+
}, toDisplayString(__props.materialsLabel), 9, _hoisted_4$8), createElementVNode("button", {
|
|
787
|
+
class: "tab",
|
|
788
|
+
"aria-pressed": tab.value === unref(ForgeTab).Queues,
|
|
789
|
+
type: "button",
|
|
790
|
+
onClick: _cache[1] || (_cache[1] = ($event) => tab.value = unref(ForgeTab).Queues)
|
|
791
|
+
}, toDisplayString(__props.queuesLabel), 9, _hoisted_5$6)]),
|
|
792
|
+
createElementVNode("p", _hoisted_6$5, toDisplayString(__props.coins), 1),
|
|
793
|
+
createElementVNode("button", {
|
|
794
|
+
class: "close",
|
|
795
|
+
"aria-label": __props.closeLabel,
|
|
796
|
+
type: "button",
|
|
797
|
+
onClick: _cache[2] || (_cache[2] = ($event) => emit("close"))
|
|
798
|
+
}, "×", 8, _hoisted_7$5)
|
|
799
|
+
]), tab.value === unref(ForgeTab).Materials ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createElementVNode("ul", _hoisted_8$4, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.recipes, (recipe) => {
|
|
800
|
+
return openBlock(), createElementBlock("li", { key: recipe.id }, [createElementVNode("button", {
|
|
801
|
+
class: "recipe",
|
|
802
|
+
"aria-pressed": recipe.id === recipeId.value,
|
|
803
|
+
disabled: !recipe.isLearned,
|
|
804
|
+
type: "button",
|
|
805
|
+
onClick: ($event) => recipeId.value = recipe.id
|
|
806
|
+
}, [
|
|
807
|
+
_cache[5] || (_cache[5] = createElementVNode("span", {
|
|
808
|
+
class: "recipe-tile",
|
|
809
|
+
"aria-hidden": "true"
|
|
810
|
+
}, null, -1)),
|
|
811
|
+
createElementVNode("span", _hoisted_10$4, toDisplayString(recipe.name), 1),
|
|
812
|
+
createElementVNode("span", _hoisted_11$3, toDisplayString(recipe.forgeTimeLabel), 1)
|
|
813
|
+
], 8, _hoisted_9$4)]);
|
|
814
|
+
}), 128))]), createElementVNode("div", _hoisted_12$3, [
|
|
815
|
+
withDirectives(createElementVNode("input", {
|
|
816
|
+
"onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => amount.value = $event),
|
|
817
|
+
"aria-label": __props.amountLabel,
|
|
818
|
+
class: "amount",
|
|
819
|
+
max: __props.amountMaximum,
|
|
820
|
+
min: "1",
|
|
821
|
+
type: "range"
|
|
822
|
+
}, null, 8, _hoisted_13$3), [[
|
|
823
|
+
vModelText,
|
|
824
|
+
amount.value,
|
|
825
|
+
void 0,
|
|
826
|
+
{ number: true }
|
|
827
|
+
]]),
|
|
828
|
+
createElementVNode("p", _hoisted_14$3, toDisplayString(__props.totalTimeLabel), 1),
|
|
829
|
+
createElementVNode("div", _hoisted_15$3, [createElementVNode("span", _hoisted_16$3, toDisplayString(__props.yieldCount), 1)]),
|
|
830
|
+
createElementVNode("p", _hoisted_17$3, toDisplayString(__props.amountLabel), 1),
|
|
831
|
+
_cache[10] || (_cache[10] = createElementVNode("span", {
|
|
832
|
+
"aria-hidden": "true",
|
|
833
|
+
class: "amount-step amount-minus"
|
|
834
|
+
}, "−", -1)),
|
|
835
|
+
_cache[11] || (_cache[11] = createElementVNode("span", { class: "amount-end amount-min" }, "1", -1)),
|
|
836
|
+
createElementVNode("span", _hoisted_18$3, toDisplayString(__props.amountMaximum), 1),
|
|
837
|
+
_cache[12] || (_cache[12] = createElementVNode("span", {
|
|
838
|
+
"aria-hidden": "true",
|
|
839
|
+
class: "amount-step amount-plus"
|
|
840
|
+
}, "+", -1)),
|
|
841
|
+
createElementVNode("section", _hoisted_19$3, [
|
|
842
|
+
createElementVNode("header", _hoisted_20$3, [createElementVNode("p", _hoisted_21$2, toDisplayString(__props.materialsBoxLabel), 1), createElementVNode("p", _hoisted_22$2, toDisplayString(__props.supportLabel), 1)]),
|
|
843
|
+
_cache[6] || (_cache[6] = createElementVNode("span", { class: "slot slot-first" }, null, -1)),
|
|
844
|
+
_cache[7] || (_cache[7] = createElementVNode("span", { class: "slot slot-second" }, null, -1)),
|
|
845
|
+
_cache[8] || (_cache[8] = createElementVNode("span", { class: "slot slot-third" }, null, -1)),
|
|
846
|
+
_cache[9] || (_cache[9] = createElementVNode("span", { class: "support-portrait" }, null, -1))
|
|
847
|
+
]),
|
|
848
|
+
createElementVNode("p", _hoisted_23$2, toDisplayString(__props.requiredCoins), 1),
|
|
849
|
+
createElementVNode("button", {
|
|
850
|
+
class: "start",
|
|
851
|
+
type: "button",
|
|
852
|
+
onClick: _cache[4] || (_cache[4] = ($event) => emit("start"))
|
|
853
|
+
}, toDisplayString(__props.startLabel), 1)
|
|
854
|
+
])], 64)) : (openBlock(), createElementBlock("ul", _hoisted_24$2, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.queues, (queue) => {
|
|
855
|
+
return openBlock(), createElementBlock("li", {
|
|
856
|
+
key: queue.id,
|
|
857
|
+
class: "queue",
|
|
858
|
+
"data-state": queue.state
|
|
859
|
+
}, [
|
|
860
|
+
createElementVNode("span", _hoisted_26$2, toDisplayString(queue.name), 1),
|
|
861
|
+
createElementVNode("span", _hoisted_27$2, toDisplayString(queue.progressLabel), 1),
|
|
862
|
+
createElementVNode("span", _hoisted_28$1, toDisplayString(queue.timeLabel), 1),
|
|
863
|
+
queue.state === unref(ForgeQueueState).Complete ? (openBlock(), createElementBlock("button", {
|
|
864
|
+
key: 0,
|
|
865
|
+
class: "obtain",
|
|
866
|
+
type: "button",
|
|
867
|
+
onClick: ($event) => emit("obtain", queue.id)
|
|
868
|
+
}, toDisplayString(__props.obtainLabel), 9, _hoisted_29$1)) : createCommentVNode("v-if", true)
|
|
869
|
+
], 8, _hoisted_25$2);
|
|
870
|
+
}), 128))]))]),
|
|
871
|
+
_: 1
|
|
872
|
+
})], 2112);
|
|
873
|
+
};
|
|
874
|
+
}
|
|
875
|
+
}), [["__scopeId", "data-v-c1d8f7f3"]]);
|
|
4
876
|
//#endregion
|
|
5
877
|
//#region src/services/toCanvasRect.ts
|
|
6
878
|
const toPair = ([x = 0, y = 0]) => [x, y];
|
|
@@ -40,66 +912,410 @@ const toCanvasRectStyle = (rect, isOnCanvas = false) => {
|
|
|
40
912
|
//#region src/components/GameRect/Index.vue
|
|
41
913
|
const _sfc_main = /*@__PURE__*/ defineComponent({
|
|
42
914
|
__name: "Index",
|
|
43
|
-
props: {
|
|
915
|
+
props: {
|
|
916
|
+
parent: { default: () => GAME_CANVAS_RECT },
|
|
917
|
+
rect: {}
|
|
918
|
+
},
|
|
44
919
|
setup(__props) {
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
920
|
+
const canvasRect = computed(() => toCanvasRect(__props.rect));
|
|
921
|
+
const style = computed(() => {
|
|
922
|
+
const [pivotX, pivotY] = canvasRect.value.pivot;
|
|
923
|
+
return {
|
|
924
|
+
...toCanvasRectStyle(canvasRect.value, __props.parent === GAME_CANVAS_RECT),
|
|
925
|
+
scale: __props.rect.scale?.join(" "),
|
|
926
|
+
transformOrigin: `${pivotX * 100}% ${(1 - pivotY) * 100}%`
|
|
927
|
+
};
|
|
928
|
+
});
|
|
51
929
|
return (_ctx, _cache) => {
|
|
52
|
-
return openBlock(), createElementBlock("div", { style: normalizeStyle(style.value) }, [renderSlot(_ctx.$slots, "default")], 4);
|
|
930
|
+
return openBlock(), createElementBlock("div", { style: normalizeStyle(style.value) }, [renderSlot(_ctx.$slots, "default", { rect: canvasRect.value })], 4);
|
|
53
931
|
};
|
|
54
932
|
}
|
|
55
933
|
});
|
|
56
934
|
//#endregion
|
|
57
|
-
//#region src/services/constants.ts
|
|
58
|
-
const GAME_FONT_FAMILY = "\"HYWenHei 85W\", \"HYWenHei-85W\", Signika, ui-sans-serif, sans-serif";
|
|
59
|
-
const GAME_UNIT = "min(100cqh / 1080, 100cqw / 1920)";
|
|
60
|
-
const GAME_CANVAS_UNIT = "min(100cqh / 900, 100cqw / 1600)";
|
|
61
|
-
const GAME_CANVAS_INSET = "min(var(--unit) * 71, (100cqw - var(--unit) * 1920) / 2)";
|
|
62
|
-
const GAME_WHITE = "#fdfdfd";
|
|
63
|
-
const GAME_CURSOR_SIZE = 26;
|
|
64
|
-
const GAME_CURSOR = `url("data:image/svg+xml,${encodeURIComponent(`<svg xmlns="http://www.w3.org/2000/svg" width="${GAME_CURSOR_SIZE}" height="${GAME_CURSOR_SIZE}" viewBox="-2 -2 66 66"><defs><radialGradient id="g" cx="28" cy="28" r="34" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#ffea00"/><stop offset="0.45" stop-color="#ffc800"/><stop offset="1" stop-color="#ffc100"/></radialGradient></defs><path d="M0 0Q30.1 11.4 62 15Q47.5 36.1 59 59Q36.1 47.5 15 62Q11.4 30.1 0 0Z" fill="none" stroke="#2c3a4e" stroke-opacity="0.75" stroke-width="3" stroke-linejoin="round"/><path d="M0 0Q30.1 11.4 62 15Q47.5 36.1 59 59Z" fill="#fff"/><path d="M0 0L59 59Q36.1 47.5 15 62Q11.4 30.1 0 0Z" fill="#f4f5e0"/><path d="M26 26Q47.5 32 62 15Q47.5 36.1 59 59Q36.1 47.5 15 62Q32 47.5 26 26Z" fill="url(#g)"/></svg>`)}") 1 1, auto`;
|
|
65
|
-
const ORNAMENT_MIDDLE_PATH = "M 179.5 39 L 185.5 39 L 191 43.5 L 193 48.5 L 203 60.5 L 205 65.5 L 215 75.5 L 219 83.5 L 219 88.5 L 214.5 94 L 201.5 101 L 197.5 102 L 194 99.5 L 190.5 95 L 188.5 94 L 178.5 94 L 171 99.5 L 155.5 117 L 153 118.5 L 146.5 126 L 136.5 135 L 133.5 137 L 131.5 137 L 110.5 152 Q 104.23 153.73 100.5 158 L 91.5 160 L 87 163.5 Q 86.5 167.5 89.5 168 L 98.5 172 L 102.5 176 L 119.5 184 L 127.5 190 L 136.5 194 L 151 206.5 L 157.5 214 Q 159.75 213.25 159 215.5 L 165.5 223 L 170 226.5 Q 170.63 230.37 173.5 232 L 178.5 235 L 187.5 235 Q 188.5 232.5 191 233 Q 191.71 228.11 195.5 225 L 198.5 224 L 225 199.5 L 227.5 195 L 232.5 193 L 241.5 186 L 246.5 184 L 260 174.5 L 261.5 172 Q 267 170 270 165.5 L 270 162.5 L 265 157.5 L 265 154.5 L 268.5 150 Q 270.75 150.75 270 148.5 L 275.5 142 L 281.5 139 L 292.5 139 L 318.5 153 L 323.5 158 L 326.5 158 L 332.5 160 L 336 163.5 L 335 168 L 330.5 170 L 325.5 171 L 318.5 177 L 314.5 178 L 302.5 185 L 297.5 190 L 287.5 193 L 279.5 200 L 275.5 201 L 270.5 205 L 269 205 L 267.5 208 L 243.5 224 L 238 229.5 Q 238.75 231.75 236.5 231 L 216 249.5 L 214 253.5 L 201 267.5 L 192 280.5 L 189 287 L 186.5 288 L 183.5 288 L 182.5 289 L 179.5 289 L 173 285.5 L 169 274.5 Q 160.63 267.66 156 258 L 153 256.5 L 149 251.5 L 149 250 L 147 250 Q 148.13 247.33 145.5 248 L 132.5 233 L 129 232 L 129 230.5 L 122.5 224 L 119.5 223 L 108.5 214 L 95.5 208 L 89.5 203 L 85.5 201 L 74.5 199 L 69.5 195 L 54.5 190 L 48.5 186 L 30.5 180 L 0 180 L 0 149 L 31.5 149 L 35.5 147 L 44.5 147 L 49 145 Q 47.87 142.33 50.5 143 L 57.5 139 L 65.5 138 L 74.5 135 L 81.5 129 L 93.5 125 L 96.5 122 L 112.5 114 L 117 110.5 L 120.5 106 L 124.5 104 L 137 91.5 L 142.5 84 L 146 81.5 Q 150.3 73.8 157 68.5 L 164 56.5 L 177.5 40 L 179.5 39 Z M 294.5 40 L 303.5 40 Q 304.75 43.5 308 43 L 313 53.5 L 329 71.5 L 338.5 85 Q 340.75 84.25 340 86.5 L 346.5 94 L 352 98.5 L 354 103 Q 363.2 105.9 368.5 114 L 374.5 117 L 376.5 117 L 385.5 124 L 397.5 128 L 407.5 135 L 409.5 135 L 412.5 137 L 422.5 139 L 424.5 141 L 430.5 144 L 432.5 144 L 434.5 146 Q 437.75 145.25 438.5 147 L 445.5 147 L 451.5 149 L 480 149 L 480 180 L 466.5 180 L 465.5 179 L 459.5 179 L 450.5 182 L 445.5 182 L 441.5 184 L 437.5 184 L 429.5 190 L 426.5 191 L 419.5 191 L 413.5 194 L 411.5 194 L 398.5 202 L 388.5 204 L 381.5 210 L 371.5 214 L 367 218.5 L 365.5 221 L 356.5 225 L 352 229.5 L 347.5 235 L 345 236.5 L 334.5 249 L 332 250.5 Q 332.75 252.75 330.5 252 L 326.5 257 L 324 258.5 L 319 267.5 L 312 276.5 L 312 278.5 L 304.5 288 L 294.5 288 L 289 282.5 L 288 279.5 L 280 269.5 L 279 266.5 L 267 253.5 L 264 245.5 L 264 240.5 L 265 237.5 L 268.5 234 L 273 230.5 L 275.5 227 L 278.5 226 L 286 226 Q 286.65 231.4 291.5 234 L 294.5 235 L 301.5 235 Q 307 233 310 228.5 L 312 224 L 313.5 224 L 325.5 212 L 327 212 L 327 210.5 L 335.5 202 L 346.5 193 L 356.5 190 L 363.5 183 L 375.5 178 L 382.5 173 L 389.5 171 L 394 166.5 L 394 163.5 L 390.5 160 L 379.5 157 L 373.5 151 L 359.5 145 L 348.5 137 L 345.5 136 L 332 123.5 L 326.5 117 L 323 114.5 L 306.5 96 L 302.5 94 L 296.5 93 Q 295.75 94.75 292.5 94 L 288 98.5 Q 287.75 103.25 284.5 105 Q 278 107.5 274.5 113 L 273 113 Q 274.13 115.67 271.5 115 L 260.5 127 L 250.5 136 L 241 141.5 L 239.5 144 L 238 144 Q 239.13 146.67 236.5 146 Q 232.09 150.09 225.5 152 L 212 163.5 L 211 166.5 L 212 167.5 L 212 174.5 L 206.5 182 L 197.5 190 L 188.5 191 L 170.5 181 L 167.5 178 L 161.5 176 L 157.5 172 L 148.5 169 L 145 165.5 L 147.5 161 L 158.5 156 L 166.5 151 L 168.5 151 L 176.5 147 L 181.5 142 L 193.5 137 L 202.5 129 L 211.5 126 L 215 123.5 L 219.5 118 L 224.5 115 L 233.5 107 L 237.5 105 L 242 100.5 L 246.5 95 L 249.5 94 L 255 89.5 L 257 85 L 260 83.5 L 267 73.5 L 287 51.5 L 292 41 L 294.5 40 Z ";
|
|
66
|
-
const ORNAMENT_END_PATH = "M 210.5 53 L 216.5 53 L 224 59.5 L 227.5 65 L 238 73.5 L 242.5 79 L 249.5 82 Q 252.67 86.83 258.5 89 L 262.5 89 L 263.5 90 L 269.5 91 L 284.5 98 L 294.5 98 L 295.5 99 L 303.5 99 L 304.5 100 L 311.5 100 L 312.5 101 L 320 101 L 320 131.5 Q 319.88 132.63 314.5 132 L 313.5 133 L 307.5 133 L 306.5 134 L 289.5 134 Q 288.5 136 284.5 135 L 269.5 142 L 266.5 143 L 260.5 143 Q 254 145.5 250.5 151 L 235.5 160 L 226 169.5 L 221.5 177 L 214.5 180 L 208.5 180 L 205.5 179 L 193 168.5 Q 193.75 166.25 191.5 167 L 185.5 162 Q 177.28 160.22 172.5 155 L 159.5 151 L 156.5 148 L 148.5 145 L 131.5 142 L 125.5 138 L 116.5 137 L 110.5 134 L 101.5 133 L 90.5 129 L 83.5 129 L 79.5 127 L 75.5 127 L 74.5 126 L 60.5 124 L 55.5 122 L 44.5 122 Q 43.25 119.75 38.5 121 L 32 117.5 L 33 114 L 38.5 112 L 41.5 112 L 42.5 111 L 54.5 111 L 55.5 110 L 59.5 110 L 65.5 108 L 74.5 107 L 75.5 106 L 78.5 106 L 82.5 104 L 86.5 104 L 95.5 101 L 103.5 101 L 119.5 95 L 123.5 95 L 130.5 91 Q 134.5 92 135.5 90 L 142.5 90 L 143.5 89 L 147.5 89 L 153.5 87 L 163.5 80 L 172.5 78 L 188.5 67 L 191.5 66 L 198.5 59 L 210.5 53 Z ";
|
|
67
|
-
const SERVER_MARK_DIAMOND_PATH = "M 23.44 6.62 L 24.44 7.25 L 25.88 8.56 L 26.31 9.12 L 28 10.56 L 28.56 11.25 L 28.88 11.44 L 29.44 12.12 L 30.25 12.81 Q 30.16 13.09 30.44 13 L 32.19 15 L 32.69 15.38 L 32.88 15.38 L 32.88 15.56 L 33.5 16.31 L 36.44 19.25 L 37.12 19.81 L 38.44 21.25 L 38.88 21.56 L 39.44 22.25 L 39.88 22.56 L 40.56 23.38 Q 40.84 23.28 40.75 23.56 Q 41.29 23.84 41.12 24.81 L 39.94 26.12 L 38.88 27.06 L 38.06 28 L 35.88 30.06 L 31.56 34.62 L 30.88 35.06 L 27.81 38.25 L 26.88 39.06 L 24.44 41.62 L 23.94 41.88 L 23.06 41.88 L 22.69 41.75 L 22.25 41.31 L 21.69 40.62 Q 21.41 40.72 21.5 40.44 L 19.12 38.19 L 18.94 37.88 L 18.25 37.31 L 17.69 36.62 L 17.38 36.44 L 17.19 36.12 L 16.25 35.44 L 15.56 34.62 Q 15.28 34.72 15.38 34.44 L 13.06 32 L 10.25 29.44 L 8.81 27.88 L 8.12 27.31 L 6.12 25.19 L 5.75 24.69 L 5.75 24.19 L 6 23.69 L 7.69 22 Q 7.97 22.09 7.88 21.81 Q 8.31 21.66 8.25 21.25 L 8.44 21.25 L 8.94 20.88 L 11 18.81 L 11.12 18.38 L 11.31 18.38 L 12.12 17.69 L 12.81 16.88 L 13.12 16.69 L 14.31 15.38 L 15.12 14.69 L 15.31 14.38 L 16.12 13.69 L 16.44 13.12 L 17 12.88 L 17 12.69 L 17.56 12.12 L 18.12 11.69 L 18.44 11.25 L 19.12 10.69 L 19.56 10.12 L 20.12 9.69 L 20.38 9.12 L 20.56 9.12 L 22.69 7.12 L 23.44 6.62 Z";
|
|
68
|
-
const SERVER_MARK_TICK_PATH = "M 30.12 16.88 L 29.88 17 L 29.5 17.62 L 27 20.25 L 25.25 21.88 L 24 23.25 L 23.75 23.75 L 23.62 23.75 L 22.75 24.62 Q 22.88 24.88 22.62 24.75 L 21.88 25.62 L 20.62 26.62 L 20.25 26.5 L 19.62 26 L 19.12 25.5 L 18.62 25 L 18.12 24.5 L 16.75 23.25 L 16 23 L 15.62 23 L 15 23.25 Q 14.25 23.62 14 24.5 L 14 25.62 L 14.25 26.25 L 14.75 26.88 L 15.12 27 L 17.75 30 L 18.25 30.75 L 19.88 32 L 20.88 32 L 21.88 31.25 L 22.25 30.75 L 22.88 30.25 L 23.25 29.75 L 23.88 29.25 L 24.38 28.62 L 24.75 28.38 L 25.38 27.62 L 25.88 27.25 L 26.25 26.75 L 26.88 26.25 L 27.12 25.88 L 28 25.12 L 28.38 24.5 L 28.88 24.12 L 29.25 23.62 L 29.62 23.38 Q 30 23 30.25 22.5 L 31 22 L 31.12 21.75 L 31.88 21.12 L 33 20 Q 33.25 19.75 33.12 19.25 L 33.25 19.12 L 33.12 18.38 L 32.62 17.75 L 31.88 17 Q 31.25 17.12 31.25 16.88 L 30.12 16.88 Z";
|
|
69
|
-
const SETTINGS_RING_CENTRE = [24.05, 24.9];
|
|
70
|
-
const SETTINGS_RING_RADIUS = 9.85;
|
|
71
|
-
const SETTINGS_RING_WIDTH = 1.9;
|
|
72
|
-
const FIXTURE_VARIANT_SEPARATOR = "-";
|
|
73
|
-
//#endregion
|
|
74
|
-
//#region \0/plugin-vue/export-helper
|
|
75
|
-
var export_helper_default = (sfc, props) => {
|
|
76
|
-
const target = sfc.__vccOpts || sfc;
|
|
77
|
-
for (const [key, val] of props) target[key] = val;
|
|
78
|
-
return target;
|
|
79
|
-
};
|
|
80
|
-
//#endregion
|
|
81
935
|
//#region src/components/GameScreen/Index.vue
|
|
82
|
-
const _hoisted_1$
|
|
83
|
-
var Index_default = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
|
|
936
|
+
const _hoisted_1$13 = ["data-interaction-state"];
|
|
937
|
+
var Index_default$11 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
|
|
84
938
|
__name: "Index",
|
|
939
|
+
props: {
|
|
940
|
+
interactionState: {},
|
|
941
|
+
isTouch: { type: Boolean }
|
|
942
|
+
},
|
|
85
943
|
setup(__props) {
|
|
86
944
|
useCssVars((_ctx) => ({
|
|
87
|
-
"
|
|
88
|
-
"
|
|
89
|
-
"
|
|
90
|
-
"
|
|
91
|
-
"
|
|
92
|
-
"
|
|
945
|
+
"b3ebfd60": unref(GAME_CANVAS_INSET),
|
|
946
|
+
"v687962d1": unref(GAME_CANVAS_UNIT),
|
|
947
|
+
"v440f997e": unref(GAME_UNIT),
|
|
948
|
+
"v3dfd0b4f": unref(GAME_WHITE),
|
|
949
|
+
"v603eb8d0": unref(GAME_CURSOR),
|
|
950
|
+
"v62ea67cc": unref(GAME_FONT_FAMILY),
|
|
951
|
+
"v7e9afa3a": unref(MOBILE_INTERFACE_SCALE)
|
|
93
952
|
}));
|
|
953
|
+
const style = computed(() => __props.isTouch === void 0 ? void 0 : { "--interface-scale": __props.isTouch ? MOBILE_INTERFACE_SCALE : 1 });
|
|
954
|
+
return (_ctx, _cache) => {
|
|
955
|
+
return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The root every screen of the game's is drawn in: the window's own container, whose `--unit` is a pixel of the\n Game's 1920 by 1080 screen, `--canvas-unit` a unit of its interface's 1600 by 900 canvas, both times\n `--interface-scale`, the mobile client's on a touch screen, `--canvas-inset` how far the canvas stands in from\n Each side and `--white` the white its opening is drawn on, in the game's face and pointer. Each resolves where a\n Child uses it, against this container "), createElementVNode("div", {
|
|
956
|
+
class: "game-screen",
|
|
957
|
+
"data-interaction-state": __props.interactionState,
|
|
958
|
+
style: normalizeStyle(style.value)
|
|
959
|
+
}, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 12, _hoisted_1$13)], 2112);
|
|
960
|
+
};
|
|
961
|
+
}
|
|
962
|
+
}), [["__scopeId", "data-v-b0f87b0b"]]);
|
|
963
|
+
//#endregion
|
|
964
|
+
//#region src/components/InteractionPrompts/Index.vue
|
|
965
|
+
const _hoisted_1$12 = ["aria-current", "data-kind"];
|
|
966
|
+
const _hoisted_2$11 = {
|
|
967
|
+
key: 0,
|
|
968
|
+
class: "key",
|
|
969
|
+
"aria-hidden": "true"
|
|
970
|
+
};
|
|
971
|
+
const _hoisted_3$9 = ["onClick"];
|
|
972
|
+
const _hoisted_4$7 = { class: "name" };
|
|
973
|
+
var Index_default$12 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
|
|
974
|
+
__name: "Index",
|
|
975
|
+
props: {
|
|
976
|
+
isTouch: {
|
|
977
|
+
type: Boolean,
|
|
978
|
+
default: false
|
|
979
|
+
},
|
|
980
|
+
prompts: {},
|
|
981
|
+
selectedId: {}
|
|
982
|
+
},
|
|
983
|
+
emits: ["press"],
|
|
984
|
+
setup(__props, { emit: __emit }) {
|
|
985
|
+
useCssVars((_ctx) => ({ "v0b0e8f3c": selectionDuration }));
|
|
986
|
+
const emit = __emit;
|
|
987
|
+
const selectionDuration = `50ms`;
|
|
94
988
|
return (_ctx, _cache) => {
|
|
95
|
-
return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The
|
|
989
|
+
return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The prompts beside the character: a row for each thing in reach, its kind's icon before its name in a pill, and the\n Key's cap before the row F acts on, with the pointer that leads from it into the pill. Measured off the English\n PC client's three-row pickup at 1080 high: each pill 63 high on a 72 pitch, its left edge 59 past the cap's, the\n cap 40 wide and 33 high, the icon 34 across. Each pill is a button of its own, as the game lets a row be pressed\n without the key "), createElementVNode("ul", { class: normalizeClass(["interaction-prompts", { touch: __props.isTouch }]) }, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.prompts, ({ id, kind, name }) => {
|
|
990
|
+
return openBlock(), createElementBlock("li", {
|
|
991
|
+
key: id,
|
|
992
|
+
class: "prompt",
|
|
993
|
+
"aria-current": !__props.isTouch && id === __props.selectedId || void 0,
|
|
994
|
+
"data-kind": kind
|
|
995
|
+
}, [!__props.isTouch ? (openBlock(), createElementBlock("kbd", _hoisted_2$11, toDisplayString(id === __props.selectedId ? unref("F") : ""), 1)) : createCommentVNode("v-if", true), createElementVNode("button", {
|
|
996
|
+
class: "pill",
|
|
997
|
+
type: "button",
|
|
998
|
+
onClick: ($event) => emit("press", id)
|
|
999
|
+
}, [_cache[0] || (_cache[0] = createElementVNode("span", {
|
|
1000
|
+
class: "icon",
|
|
1001
|
+
"aria-hidden": "true"
|
|
1002
|
+
}, null, -1)), createElementVNode("span", _hoisted_4$7, toDisplayString(name), 1)], 8, _hoisted_3$9)], 8, _hoisted_1$12);
|
|
1003
|
+
}), 128))], 2)], 2112);
|
|
96
1004
|
};
|
|
97
1005
|
}
|
|
98
|
-
}), [["__scopeId", "data-v-
|
|
1006
|
+
}), [["__scopeId", "data-v-49059f1b"]]);
|
|
1007
|
+
//#endregion
|
|
1008
|
+
//#region src/models/InventorySort.ts
|
|
1009
|
+
let InventorySort = /* @__PURE__ */ function(InventorySort) {
|
|
1010
|
+
InventorySort["Level"] = "Level";
|
|
1011
|
+
InventorySort["Quality"] = "Quality";
|
|
1012
|
+
return InventorySort;
|
|
1013
|
+
}({});
|
|
1014
|
+
const InventorySorts = Object.values(InventorySort);
|
|
1015
|
+
//#endregion
|
|
1016
|
+
//#region src/components/InventoryScreen/Index.vue
|
|
1017
|
+
const _hoisted_1$11 = { class: "inventory-screen" };
|
|
1018
|
+
const _hoisted_2$10 = ["inert"];
|
|
1019
|
+
const _hoisted_3$8 = {
|
|
1020
|
+
class: "title",
|
|
1021
|
+
role: "heading",
|
|
1022
|
+
"aria-level": "1"
|
|
1023
|
+
};
|
|
1024
|
+
const _hoisted_4$6 = { class: "tabs" };
|
|
1025
|
+
const _hoisted_5$5 = [
|
|
1026
|
+
"aria-label",
|
|
1027
|
+
"aria-pressed",
|
|
1028
|
+
"data-category",
|
|
1029
|
+
"onClick"
|
|
1030
|
+
];
|
|
1031
|
+
const _hoisted_6$4 = { class: "capacity" };
|
|
1032
|
+
const _hoisted_7$4 = ["aria-label"];
|
|
1033
|
+
const _hoisted_8$3 = { class: "grid" };
|
|
1034
|
+
const _hoisted_9$3 = [
|
|
1035
|
+
"aria-label",
|
|
1036
|
+
"aria-pressed",
|
|
1037
|
+
"data-rarity",
|
|
1038
|
+
"data-selected",
|
|
1039
|
+
"onClick"
|
|
1040
|
+
];
|
|
1041
|
+
const _hoisted_10$3 = { class: "caption" };
|
|
1042
|
+
const _hoisted_11$2 = ["data-rarity"];
|
|
1043
|
+
const _hoisted_12$2 = { class: "detail-name" };
|
|
1044
|
+
const _hoisted_13$2 = { class: "detail-caption" };
|
|
1045
|
+
const _hoisted_14$2 = ["aria-label", "aria-pressed"];
|
|
1046
|
+
const _hoisted_15$2 = {
|
|
1047
|
+
key: 1,
|
|
1048
|
+
class: "destroy"
|
|
1049
|
+
};
|
|
1050
|
+
const _hoisted_16$2 = { class: "destroy-tip" };
|
|
1051
|
+
const _hoisted_17$2 = {
|
|
1052
|
+
key: 0,
|
|
1053
|
+
class: "destroy-cannot"
|
|
1054
|
+
};
|
|
1055
|
+
const _hoisted_18$2 = { class: "quick-selects" };
|
|
1056
|
+
const _hoisted_19$2 = ["data-rarity", "onClick"];
|
|
1057
|
+
const _hoisted_20$2 = { class: "destroy-count" };
|
|
1058
|
+
const _hoisted_21$1 = ["disabled"];
|
|
1059
|
+
const _hoisted_22$1 = { class: "sort" };
|
|
1060
|
+
const _hoisted_23$1 = ["value"];
|
|
1061
|
+
const _hoisted_24$1 = ["aria-label", "data-descending"];
|
|
1062
|
+
const _hoisted_25$1 = {
|
|
1063
|
+
key: 3,
|
|
1064
|
+
class: "currencies"
|
|
1065
|
+
};
|
|
1066
|
+
const _hoisted_26$1 = ["data-currency"];
|
|
1067
|
+
const _hoisted_27$1 = { class: "currency-name" };
|
|
1068
|
+
const _hoisted_28 = {
|
|
1069
|
+
key: 0,
|
|
1070
|
+
class: "top-up"
|
|
1071
|
+
};
|
|
1072
|
+
const _hoisted_29 = ["aria-label"];
|
|
1073
|
+
const _hoisted_30 = { class: "confirm-title" };
|
|
1074
|
+
const _hoisted_31 = { class: "confirm-list-label" };
|
|
1075
|
+
const _hoisted_32 = { class: "confirm-names" };
|
|
1076
|
+
const _hoisted_33 = { class: "confirm-warning" };
|
|
1077
|
+
const _hoisted_34 = {
|
|
1078
|
+
key: 0,
|
|
1079
|
+
class: "confirm-warning"
|
|
1080
|
+
};
|
|
1081
|
+
const _hoisted_35 = { class: "confirm-list-label" };
|
|
1082
|
+
const _hoisted_36 = { class: "confirm-names" };
|
|
1083
|
+
const _hoisted_37 = { class: "confirm-buttons" };
|
|
1084
|
+
const _hoisted_38 = ["disabled"];
|
|
1085
|
+
var Index_default$13 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
|
|
1086
|
+
__name: "Index",
|
|
1087
|
+
props: /*@__PURE__*/ mergeModels({
|
|
1088
|
+
backLabel: {},
|
|
1089
|
+
cancelLabel: {},
|
|
1090
|
+
capacity: {},
|
|
1091
|
+
cells: {},
|
|
1092
|
+
currencies: {},
|
|
1093
|
+
destroyButtonLabel: {},
|
|
1094
|
+
destroyCannotLabel: {},
|
|
1095
|
+
destroyConfirmButtonLabel: {},
|
|
1096
|
+
destroyConfirmListLabel: {},
|
|
1097
|
+
destroyConfirmTitle: {},
|
|
1098
|
+
destroyConfirmWarningLabel: {},
|
|
1099
|
+
destroyFullLabel: {},
|
|
1100
|
+
destroyLabel: {},
|
|
1101
|
+
destroyNames: {},
|
|
1102
|
+
destroyRecoveredLabel: {},
|
|
1103
|
+
destroyRecoveredNames: {},
|
|
1104
|
+
destroySelectedLabel: {},
|
|
1105
|
+
destroyTipLabel: {},
|
|
1106
|
+
isConfirming: { type: Boolean },
|
|
1107
|
+
isDestroyFull: { type: Boolean },
|
|
1108
|
+
isDestroying: { type: Boolean },
|
|
1109
|
+
isSortable: { type: Boolean },
|
|
1110
|
+
orderLabel: {},
|
|
1111
|
+
quickSelects: {},
|
|
1112
|
+
sortLabels: {},
|
|
1113
|
+
tabLabels: {},
|
|
1114
|
+
title: {}
|
|
1115
|
+
}, {
|
|
1116
|
+
"category": { required: true },
|
|
1117
|
+
"categoryModifiers": {},
|
|
1118
|
+
"sort": { required: true },
|
|
1119
|
+
"sortModifiers": {},
|
|
1120
|
+
"isDescending": {
|
|
1121
|
+
type: Boolean,
|
|
1122
|
+
required: true
|
|
1123
|
+
},
|
|
1124
|
+
"isDescendingModifiers": {},
|
|
1125
|
+
"selectedId": { required: true },
|
|
1126
|
+
"selectedIdModifiers": {}
|
|
1127
|
+
}),
|
|
1128
|
+
emits: /*@__PURE__*/ mergeModels([
|
|
1129
|
+
"cancelDestroy",
|
|
1130
|
+
"choose",
|
|
1131
|
+
"close",
|
|
1132
|
+
"confirmDestroy",
|
|
1133
|
+
"destroy",
|
|
1134
|
+
"quickSelect",
|
|
1135
|
+
"toggleDestroy"
|
|
1136
|
+
], [
|
|
1137
|
+
"update:category",
|
|
1138
|
+
"update:sort",
|
|
1139
|
+
"update:isDescending",
|
|
1140
|
+
"update:selectedId"
|
|
1141
|
+
]),
|
|
1142
|
+
setup(__props, { emit: __emit }) {
|
|
1143
|
+
const category = useModel(__props, "category");
|
|
1144
|
+
const sort = useModel(__props, "sort");
|
|
1145
|
+
const isDescending = useModel(__props, "isDescending");
|
|
1146
|
+
const selectedId = useModel(__props, "selectedId");
|
|
1147
|
+
const emit = __emit;
|
|
1148
|
+
const selectedCell = computed(() => __props.cells.find(({ id }) => id === selectedId.value) ?? __props.cells[0]);
|
|
1149
|
+
const cancelButton = useTemplateRef("cancelButton");
|
|
1150
|
+
const trashButton = useTemplateRef("trashButton");
|
|
1151
|
+
let returnFocus;
|
|
1152
|
+
watch(() => __props.isConfirming, async (isOpen) => {
|
|
1153
|
+
if (isOpen) returnFocus = window.document.activeElement instanceof HTMLElement ? window.document.activeElement : void 0;
|
|
1154
|
+
await nextTick();
|
|
1155
|
+
if (isOpen) cancelButton.value?.focus();
|
|
1156
|
+
else (returnFocus?.isConnected ? returnFocus : trashButton.value)?.focus();
|
|
1157
|
+
});
|
|
1158
|
+
return (_ctx, _cache) => {
|
|
1159
|
+
return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The bag, the B key's: its nine tabs across the head in the game's order, the open tab's room beside the way back,\n Its grid of four columns, the entry chosen with its detail panel, and the sort along the foot. Provisional: the\n Tabs' icons and the grid's entries' icons wait on the glyph pass, and the sort, the wallet's place and the\n Panel's stats and footer wait on the bag's other recordings "), createElementVNode("div", _hoisted_1$11, [
|
|
1160
|
+
createElementVNode("div", {
|
|
1161
|
+
class: "bag",
|
|
1162
|
+
inert: __props.isConfirming
|
|
1163
|
+
}, [
|
|
1164
|
+
createElementVNode("p", _hoisted_3$8, toDisplayString(__props.title), 1),
|
|
1165
|
+
createElementVNode("ul", _hoisted_4$6, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(ItemCategories), (itemCategory) => {
|
|
1166
|
+
return openBlock(), createElementBlock("li", { key: itemCategory }, [createElementVNode("button", {
|
|
1167
|
+
class: "tab",
|
|
1168
|
+
"aria-label": __props.tabLabels[itemCategory],
|
|
1169
|
+
"aria-pressed": itemCategory === category.value,
|
|
1170
|
+
"data-category": itemCategory,
|
|
1171
|
+
type: "button",
|
|
1172
|
+
onClick: ($event) => category.value = itemCategory
|
|
1173
|
+
}, null, 8, _hoisted_5$5)]);
|
|
1174
|
+
}), 128))]),
|
|
1175
|
+
createElementVNode("p", _hoisted_6$4, toDisplayString(__props.capacity), 1),
|
|
1176
|
+
createElementVNode("button", {
|
|
1177
|
+
class: "back",
|
|
1178
|
+
"aria-label": __props.backLabel,
|
|
1179
|
+
type: "button",
|
|
1180
|
+
onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
|
|
1181
|
+
}, null, 8, _hoisted_7$4),
|
|
1182
|
+
createElementVNode("ul", _hoisted_8$3, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.cells, (cell) => {
|
|
1183
|
+
return openBlock(), createElementBlock("li", { key: cell.id }, [createElementVNode("button", {
|
|
1184
|
+
class: "cell",
|
|
1185
|
+
"aria-label": cell.name,
|
|
1186
|
+
"aria-pressed": __props.isDestroying ? Boolean(cell.isSelected) : cell.id === selectedCell.value?.id,
|
|
1187
|
+
"data-rarity": cell.rarity,
|
|
1188
|
+
"data-selected": cell.isSelected,
|
|
1189
|
+
type: "button",
|
|
1190
|
+
onClick: ($event) => __props.isDestroying && cell.isDestroyable ? emit("choose", cell.id) : selectedId.value = cell.id
|
|
1191
|
+
}, [createElementVNode("span", _hoisted_10$3, toDisplayString(cell.caption), 1)], 8, _hoisted_9$3)]);
|
|
1192
|
+
}), 128))]),
|
|
1193
|
+
selectedCell.value ? (openBlock(), createElementBlock("section", {
|
|
1194
|
+
key: 0,
|
|
1195
|
+
class: "detail",
|
|
1196
|
+
"data-rarity": selectedCell.value.rarity
|
|
1197
|
+
}, [createElementVNode("p", _hoisted_12$2, toDisplayString(selectedCell.value.name), 1), createElementVNode("p", _hoisted_13$2, toDisplayString(selectedCell.value.caption), 1)], 8, _hoisted_11$2)) : createCommentVNode("v-if", true),
|
|
1198
|
+
createElementVNode("button", {
|
|
1199
|
+
ref_key: "trashButton",
|
|
1200
|
+
ref: trashButton,
|
|
1201
|
+
class: "trash",
|
|
1202
|
+
"aria-label": __props.destroyLabel,
|
|
1203
|
+
"aria-pressed": __props.isDestroying,
|
|
1204
|
+
type: "button",
|
|
1205
|
+
onClick: _cache[1] || (_cache[1] = ($event) => emit("toggleDestroy"))
|
|
1206
|
+
}, null, 8, _hoisted_14$2),
|
|
1207
|
+
createCommentVNode(" The destroy mode's foot, in place of the sort or the currencies: its opening line, the quick selects by rarity,\n the count of the chosen entries and the Destroy button that opens the dialog. Provisional until the mode is recorded "),
|
|
1208
|
+
__props.isDestroying ? (openBlock(), createElementBlock("section", _hoisted_15$2, [
|
|
1209
|
+
createElementVNode("p", _hoisted_16$2, toDisplayString(__props.destroyTipLabel), 1),
|
|
1210
|
+
selectedCell.value && !selectedCell.value.isDestroyable ? (openBlock(), createElementBlock("p", _hoisted_17$2, toDisplayString(__props.destroyCannotLabel), 1)) : createCommentVNode("v-if", true),
|
|
1211
|
+
createElementVNode("ul", _hoisted_18$2, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.quickSelects, ({ label, rarity }) => {
|
|
1212
|
+
return openBlock(), createElementBlock("li", { key: rarity }, [createElementVNode("button", {
|
|
1213
|
+
class: "quick-select",
|
|
1214
|
+
"data-rarity": rarity,
|
|
1215
|
+
type: "button",
|
|
1216
|
+
onClick: ($event) => emit("quickSelect", rarity)
|
|
1217
|
+
}, toDisplayString(label), 9, _hoisted_19$2)]);
|
|
1218
|
+
}), 128))]),
|
|
1219
|
+
createElementVNode("p", _hoisted_20$2, toDisplayString(__props.destroySelectedLabel), 1),
|
|
1220
|
+
createElementVNode("button", {
|
|
1221
|
+
class: "destroy-button",
|
|
1222
|
+
disabled: !__props.destroyNames.length,
|
|
1223
|
+
type: "button",
|
|
1224
|
+
onClick: _cache[2] || (_cache[2] = ($event) => emit("destroy"))
|
|
1225
|
+
}, toDisplayString(__props.destroyButtonLabel), 9, _hoisted_21$1)
|
|
1226
|
+
])) : __props.isSortable ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [
|
|
1227
|
+
_cache[7] || (_cache[7] = createElementVNode("span", { class: "filter" }, null, -1)),
|
|
1228
|
+
createElementVNode("div", _hoisted_22$1, [createCommentVNode(" eslint-disable-next-line vuejs-accessibility/form-control-has-label -- the sort's caption is no game text key yet, so no name in the reader's language exists until the bag's sort recording keys it; its options name it meanwhile "), withDirectives(createElementVNode("select", {
|
|
1229
|
+
"onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => sort.value = $event),
|
|
1230
|
+
class: "sort-select"
|
|
1231
|
+
}, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(InventorySorts), (inventorySort) => {
|
|
1232
|
+
return openBlock(), createElementBlock("option", {
|
|
1233
|
+
key: inventorySort,
|
|
1234
|
+
value: inventorySort
|
|
1235
|
+
}, toDisplayString(__props.sortLabels[inventorySort]), 9, _hoisted_23$1);
|
|
1236
|
+
}), 128))], 512), [[vModelSelect, sort.value]])]),
|
|
1237
|
+
createElementVNode("button", {
|
|
1238
|
+
class: "order",
|
|
1239
|
+
"aria-label": __props.orderLabel,
|
|
1240
|
+
"data-descending": isDescending.value,
|
|
1241
|
+
type: "button",
|
|
1242
|
+
onClick: _cache[4] || (_cache[4] = ($event) => isDescending.value = !isDescending.value)
|
|
1243
|
+
}, null, 8, _hoisted_24$1)
|
|
1244
|
+
], 64)) : (openBlock(), createElementBlock("ul", _hoisted_25$1, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.currencies, ({ id, isTopUp, name, quantity }) => {
|
|
1245
|
+
return openBlock(), createElementBlock("li", {
|
|
1246
|
+
key: id,
|
|
1247
|
+
class: "currency",
|
|
1248
|
+
"data-currency": id
|
|
1249
|
+
}, [
|
|
1250
|
+
createElementVNode("span", _hoisted_27$1, toDisplayString(name), 1),
|
|
1251
|
+
_cache[8] || (_cache[8] = createElementVNode("span", { class: "currency-icon" }, null, -1)),
|
|
1252
|
+
createTextVNode(" " + toDisplayString(quantity) + " ", 1),
|
|
1253
|
+
isTopUp ? (openBlock(), createElementBlock("span", _hoisted_28)) : createCommentVNode("v-if", true)
|
|
1254
|
+
], 8, _hoisted_26$1);
|
|
1255
|
+
}), 128))]))
|
|
1256
|
+
], 8, _hoisted_2$10),
|
|
1257
|
+
createCommentVNode(" The dialog the Destroy button opens over the bag: the entries to be destroyed, and the warning that it cannot be\n undone, in the game's own wording. Provisional until the dialog is recorded "),
|
|
1258
|
+
__props.isConfirming ? (openBlock(), createElementBlock("section", {
|
|
1259
|
+
key: 0,
|
|
1260
|
+
class: "confirm",
|
|
1261
|
+
role: "dialog",
|
|
1262
|
+
"aria-modal": "true",
|
|
1263
|
+
"aria-label": __props.destroyConfirmTitle
|
|
1264
|
+
}, [
|
|
1265
|
+
createElementVNode("p", _hoisted_30, toDisplayString(__props.destroyConfirmTitle), 1),
|
|
1266
|
+
createElementVNode("p", _hoisted_31, toDisplayString(__props.destroyConfirmListLabel), 1),
|
|
1267
|
+
createElementVNode("ul", _hoisted_32, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.destroyNames, (name, index) => {
|
|
1268
|
+
return openBlock(), createElementBlock("li", { key: index }, toDisplayString(name), 1);
|
|
1269
|
+
}), 128))]),
|
|
1270
|
+
createElementVNode("p", _hoisted_33, toDisplayString(__props.destroyConfirmWarningLabel), 1),
|
|
1271
|
+
__props.isDestroyFull ? (openBlock(), createElementBlock("p", _hoisted_34, toDisplayString(__props.destroyFullLabel), 1)) : createCommentVNode("v-if", true),
|
|
1272
|
+
__props.destroyRecoveredNames.length ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [createElementVNode("p", _hoisted_35, toDisplayString(__props.destroyRecoveredLabel), 1), createElementVNode("ul", _hoisted_36, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.destroyRecoveredNames, (name, index) => {
|
|
1273
|
+
return openBlock(), createElementBlock("li", { key: index }, toDisplayString(name), 1);
|
|
1274
|
+
}), 128))])], 64)) : createCommentVNode("v-if", true),
|
|
1275
|
+
createElementVNode("div", _hoisted_37, [createElementVNode("button", {
|
|
1276
|
+
ref_key: "cancelButton",
|
|
1277
|
+
ref: cancelButton,
|
|
1278
|
+
class: "confirm-button",
|
|
1279
|
+
type: "button",
|
|
1280
|
+
onClick: _cache[5] || (_cache[5] = ($event) => emit("cancelDestroy"))
|
|
1281
|
+
}, toDisplayString(__props.cancelLabel), 513), createElementVNode("button", {
|
|
1282
|
+
disabled: __props.isDestroyFull,
|
|
1283
|
+
class: "confirm-button",
|
|
1284
|
+
type: "button",
|
|
1285
|
+
onClick: _cache[6] || (_cache[6] = ($event) => emit("confirmDestroy"))
|
|
1286
|
+
}, toDisplayString(__props.destroyConfirmButtonLabel), 9, _hoisted_38)])
|
|
1287
|
+
], 8, _hoisted_29)) : createCommentVNode("v-if", true)
|
|
1288
|
+
])], 2112);
|
|
1289
|
+
};
|
|
1290
|
+
}
|
|
1291
|
+
}), [["__scopeId", "data-v-f5de1664"]]);
|
|
1292
|
+
//#endregion
|
|
1293
|
+
//#region src/components/ItemTile/Index.vue
|
|
1294
|
+
const _hoisted_1$10 = ["data-rarity"];
|
|
1295
|
+
const _hoisted_2$9 = { class: "face" };
|
|
1296
|
+
const _hoisted_3$7 = {
|
|
1297
|
+
class: "count",
|
|
1298
|
+
"aria-hidden": "true"
|
|
1299
|
+
};
|
|
1300
|
+
var Index_default$14 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
|
|
1301
|
+
__name: "Index",
|
|
1302
|
+
props: {
|
|
1303
|
+
count: {},
|
|
1304
|
+
rarity: {}
|
|
1305
|
+
},
|
|
1306
|
+
setup(__props) {
|
|
1307
|
+
return (_ctx, _cache) => {
|
|
1308
|
+
return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" An item's tile as the game's reward lists draw it, filling the box its parent gives it: the rarity's gradient lit\n from the foot, and the count in white on a darker strip across the bottom 24%, the corners rounded 7%. Measured on\n the wiki's Adventurer Handbook screenshot and the Reputation clip, which agree on the three, four and five star\n tiles and differ only in the count's size, which a screen sets as `--count-size` since it does not follow the\n tile's: the handbook's counts stand as high on its 188 tiles as on its 141. A one or two star tile is not measured\n yet and draws bare. The item's own art is the game's and does not ship "), createElementVNode("span", {
|
|
1309
|
+
class: "item-tile",
|
|
1310
|
+
"data-rarity": __props.rarity
|
|
1311
|
+
}, [createElementVNode("span", _hoisted_2$9, [createElementVNode("span", _hoisted_3$7, toDisplayString(__props.count), 1)])], 8, _hoisted_1$10)], 2112);
|
|
1312
|
+
};
|
|
1313
|
+
}
|
|
1314
|
+
}), [["__scopeId", "data-v-5f64ed92"]]);
|
|
99
1315
|
//#endregion
|
|
100
1316
|
//#region src/components/LoadingSpinner/Index.vue
|
|
101
|
-
const _hoisted_1$
|
|
102
|
-
var Index_default$
|
|
1317
|
+
const _hoisted_1$9 = ["aria-label"];
|
|
1318
|
+
var Index_default$15 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
|
|
103
1319
|
__name: "Index",
|
|
104
1320
|
props: { label: {} },
|
|
105
1321
|
setup(__props) {
|
|
@@ -108,48 +1324,48 @@ var Index_default$1 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ define
|
|
|
108
1324
|
class: "loading-spinner",
|
|
109
1325
|
role: "status",
|
|
110
1326
|
"aria-label": __props.label
|
|
111
|
-
}, [..._cache[0] || (_cache[0] = [createElementVNode("span", { class: "ring" }, null, -1)])], 8, _hoisted_1$
|
|
1327
|
+
}, [..._cache[0] || (_cache[0] = [createElementVNode("span", { class: "ring" }, null, -1)])], 8, _hoisted_1$9)], 2112);
|
|
112
1328
|
};
|
|
113
1329
|
}
|
|
114
1330
|
}), [["__scopeId", "data-v-69cb5a34"]]);
|
|
115
1331
|
//#endregion
|
|
116
1332
|
//#region src/components/OrnamentDivider/Index.vue
|
|
117
|
-
const _hoisted_1$
|
|
1333
|
+
const _hoisted_1$8 = {
|
|
118
1334
|
class: "ornament-divider",
|
|
119
1335
|
"aria-hidden": "true"
|
|
120
1336
|
};
|
|
121
|
-
const _hoisted_2$
|
|
1337
|
+
const _hoisted_2$8 = {
|
|
122
1338
|
class: "end",
|
|
123
1339
|
viewBox: "0 0 320 224"
|
|
124
1340
|
};
|
|
125
|
-
const _hoisted_3$
|
|
126
|
-
const _hoisted_4$
|
|
1341
|
+
const _hoisted_3$6 = ["d"];
|
|
1342
|
+
const _hoisted_4$5 = {
|
|
127
1343
|
class: "middle",
|
|
128
1344
|
viewBox: "0 0 480 320"
|
|
129
1345
|
};
|
|
130
|
-
const _hoisted_5$
|
|
131
|
-
const _hoisted_6 = {
|
|
1346
|
+
const _hoisted_5$4 = ["d"];
|
|
1347
|
+
const _hoisted_6$3 = {
|
|
132
1348
|
class: "end right",
|
|
133
1349
|
viewBox: "0 0 320 224"
|
|
134
1350
|
};
|
|
135
|
-
const _hoisted_7 = ["d"];
|
|
136
|
-
var Index_default$
|
|
1351
|
+
const _hoisted_7$3 = ["d"];
|
|
1352
|
+
var Index_default$16 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
|
|
137
1353
|
__name: "Index",
|
|
138
1354
|
setup(__props) {
|
|
139
1355
|
return (_ctx, _cache) => {
|
|
140
|
-
return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The game's divider: a hairline as wide as its parent, a tapered diamond at each end and an interlocked double\n Diamond at its middle, in the game's units from the parent's `--unit` "), createElementVNode("div", _hoisted_1$
|
|
141
|
-
(openBlock(), createElementBlock("svg", _hoisted_2$
|
|
142
|
-
(openBlock(), createElementBlock("svg", _hoisted_4$
|
|
143
|
-
(openBlock(), createElementBlock("svg", _hoisted_6, [createElementVNode("path", { d: unref(ORNAMENT_END_PATH) }, null, 8, _hoisted_7)]))
|
|
1356
|
+
return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The game's divider: a hairline as wide as its parent, a tapered diamond at each end and an interlocked double\n Diamond at its middle, in the game's units from the parent's `--unit` "), createElementVNode("div", _hoisted_1$8, [
|
|
1357
|
+
(openBlock(), createElementBlock("svg", _hoisted_2$8, [createElementVNode("path", { d: unref(ORNAMENT_END_PATH) }, null, 8, _hoisted_3$6)])),
|
|
1358
|
+
(openBlock(), createElementBlock("svg", _hoisted_4$5, [createElementVNode("path", { d: unref(ORNAMENT_MIDDLE_PATH) }, null, 8, _hoisted_5$4)])),
|
|
1359
|
+
(openBlock(), createElementBlock("svg", _hoisted_6$3, [createElementVNode("path", { d: unref(ORNAMENT_END_PATH) }, null, 8, _hoisted_7$3)]))
|
|
144
1360
|
])], 2112);
|
|
145
1361
|
};
|
|
146
1362
|
}
|
|
147
1363
|
}), [["__scopeId", "data-v-335021af"]]);
|
|
148
1364
|
//#endregion
|
|
149
1365
|
//#region src/components/ProgressBar/Index.vue
|
|
150
|
-
const _hoisted_1$
|
|
151
|
-
const _hoisted_2$
|
|
152
|
-
var Index_default$
|
|
1366
|
+
const _hoisted_1$7 = ["aria-valuenow"];
|
|
1367
|
+
const _hoisted_2$7 = { class: "track" };
|
|
1368
|
+
var Index_default$17 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
|
|
153
1369
|
__name: "Index",
|
|
154
1370
|
props: {
|
|
155
1371
|
isFolded: { type: Boolean },
|
|
@@ -165,24 +1381,131 @@ var Index_default$3 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ define
|
|
|
165
1381
|
"aria-valuenow": Math.round(__props.progress * 100)
|
|
166
1382
|
}, [
|
|
167
1383
|
_cache[0] || (_cache[0] = createElementVNode("span", { class: "diamond" }, null, -1)),
|
|
168
|
-
createElementVNode("span", _hoisted_2$
|
|
1384
|
+
createElementVNode("span", _hoisted_2$7, [createElementVNode("span", {
|
|
169
1385
|
class: "fill",
|
|
170
1386
|
style: normalizeStyle({ width: `${__props.progress * 100}%` })
|
|
171
1387
|
}, null, 4)]),
|
|
172
1388
|
_cache[1] || (_cache[1] = createElementVNode("span", { class: "diamond" }, null, -1))
|
|
173
|
-
], 10, _hoisted_1$
|
|
1389
|
+
], 10, _hoisted_1$7)], 2112);
|
|
174
1390
|
};
|
|
175
1391
|
}
|
|
176
1392
|
}), [["__scopeId", "data-v-bea8e745"]]);
|
|
177
1393
|
//#endregion
|
|
178
1394
|
//#region src/components/PromptBand/Index.vue
|
|
179
|
-
const _sfc_main$
|
|
180
|
-
const _hoisted_1$
|
|
181
|
-
const _hoisted_2$
|
|
1395
|
+
const _sfc_main$7 = {};
|
|
1396
|
+
const _hoisted_1$6 = { class: "prompt-band" };
|
|
1397
|
+
const _hoisted_2$6 = { class: "text" };
|
|
182
1398
|
function _sfc_render$1(_ctx, _cache) {
|
|
183
|
-
return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The band a prompt is set in across the foot of a screen: a navy glass strip 44 units high, fading in over its\n Ends, its words centred in a light grey. Its glass and fade are solved from the scene the English recording\n Shows through it at the door "), createElementVNode("div", _hoisted_1$
|
|
1399
|
+
return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The band a prompt is set in across the foot of a screen: a navy glass strip 44 units high, fading in over its\n Ends, its words centred in a light grey. Its glass and fade are solved from the scene the English recording\n Shows through it at the door "), createElementVNode("div", _hoisted_1$6, [createElementVNode("p", _hoisted_2$6, [renderSlot(_ctx.$slots, "default", {}, void 0, true)])])], 2112);
|
|
184
1400
|
}
|
|
185
|
-
var Index_default$
|
|
1401
|
+
var Index_default$18 = /*#__PURE__*/ export_helper_default(_sfc_main$7, [["render", _sfc_render$1], ["__scopeId", "data-v-8c88bb3d"]]);
|
|
1402
|
+
//#endregion
|
|
1403
|
+
//#region src/components/ReputationScreen/Index.vue
|
|
1404
|
+
const _hoisted_1$5 = { class: "reputation-screen" };
|
|
1405
|
+
const _hoisted_2$5 = { class: "head" };
|
|
1406
|
+
const _hoisted_3$5 = {
|
|
1407
|
+
class: "title",
|
|
1408
|
+
role: "heading",
|
|
1409
|
+
"aria-level": "1"
|
|
1410
|
+
};
|
|
1411
|
+
const _hoisted_4$4 = ["aria-label"];
|
|
1412
|
+
const _hoisted_5$3 = { class: "detail" };
|
|
1413
|
+
const _hoisted_6$2 = { class: "headline" };
|
|
1414
|
+
const _hoisted_7$2 = { class: "requirement" };
|
|
1415
|
+
const _hoisted_8$2 = { class: "levels" };
|
|
1416
|
+
const _hoisted_9$2 = [
|
|
1417
|
+
"aria-pressed",
|
|
1418
|
+
"data-achieved",
|
|
1419
|
+
"onClick"
|
|
1420
|
+
];
|
|
1421
|
+
const _hoisted_10$2 = { class: "badge" };
|
|
1422
|
+
const _hoisted_11$1 = { class: "badge-face" };
|
|
1423
|
+
const _hoisted_12$1 = { class: "badge-word" };
|
|
1424
|
+
const _hoisted_13$1 = { class: "badge-number" };
|
|
1425
|
+
const _hoisted_14$1 = { class: "items" };
|
|
1426
|
+
const _hoisted_15$1 = {
|
|
1427
|
+
key: 0,
|
|
1428
|
+
class: "unlock"
|
|
1429
|
+
};
|
|
1430
|
+
const _hoisted_16$1 = {
|
|
1431
|
+
key: 1,
|
|
1432
|
+
class: "achieved"
|
|
1433
|
+
};
|
|
1434
|
+
const _hoisted_17$1 = {
|
|
1435
|
+
class: "check",
|
|
1436
|
+
viewBox: "0 0 252 228",
|
|
1437
|
+
"aria-hidden": "true"
|
|
1438
|
+
};
|
|
1439
|
+
const _hoisted_18$1 = ["d"];
|
|
1440
|
+
const _hoisted_19$1 = { class: "hidden-label" };
|
|
1441
|
+
const _hoisted_20$1 = {
|
|
1442
|
+
key: 2,
|
|
1443
|
+
class: "status"
|
|
1444
|
+
};
|
|
1445
|
+
var Index_default$19 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
|
|
1446
|
+
__name: "Index",
|
|
1447
|
+
props: /*@__PURE__*/ mergeModels({
|
|
1448
|
+
achievedLabel: {},
|
|
1449
|
+
backLabel: {},
|
|
1450
|
+
headline: {},
|
|
1451
|
+
levelLabel: {},
|
|
1452
|
+
levels: {},
|
|
1453
|
+
notAchievedLabel: {},
|
|
1454
|
+
requirement: {},
|
|
1455
|
+
title: {}
|
|
1456
|
+
}, {
|
|
1457
|
+
"level": { default: 0 },
|
|
1458
|
+
"levelModifiers": {}
|
|
1459
|
+
}),
|
|
1460
|
+
emits: /*@__PURE__*/ mergeModels(["close"], ["update:level"]),
|
|
1461
|
+
setup(__props, { emit: __emit }) {
|
|
1462
|
+
const level = useModel(__props, "level");
|
|
1463
|
+
const emit = __emit;
|
|
1464
|
+
return (_ctx, _cache) => {
|
|
1465
|
+
return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The Reputation reward page, the nation's keeper opens: its title across the head with the way back, the picked\n level's reward and requirement on the left, and the levels down the right. Each row is the public clip's at 1080\n high (references/reputation-screen): its level on a pentagon badge, its items in slots coloured by rarity with\n their count beneath, its unlock line behind an info mark, and the tick or the not achieved block at its end. The\n head and the left column are still provisional: the reference frames only the level list "), createElementVNode("div", _hoisted_1$5, [
|
|
1466
|
+
createElementVNode("header", _hoisted_2$5, [createElementVNode("p", _hoisted_3$5, toDisplayString(__props.title), 1), createElementVNode("button", {
|
|
1467
|
+
class: "back",
|
|
1468
|
+
"aria-label": __props.backLabel,
|
|
1469
|
+
type: "button",
|
|
1470
|
+
onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
|
|
1471
|
+
}, "↶", 8, _hoisted_4$4)]),
|
|
1472
|
+
createElementVNode("section", _hoisted_5$3, [createElementVNode("p", _hoisted_6$2, toDisplayString(__props.headline), 1), createElementVNode("p", _hoisted_7$2, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.requirement, ({ color, text }, index) => {
|
|
1473
|
+
return openBlock(), createElementBlock("span", {
|
|
1474
|
+
key: index,
|
|
1475
|
+
style: normalizeStyle({ color })
|
|
1476
|
+
}, toDisplayString(text), 5);
|
|
1477
|
+
}), 128))])]),
|
|
1478
|
+
createElementVNode("ul", _hoisted_8$2, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.levels, (cell) => {
|
|
1479
|
+
return openBlock(), createElementBlock("li", { key: cell.level }, [createElementVNode("button", {
|
|
1480
|
+
class: "level",
|
|
1481
|
+
"aria-pressed": cell.level === level.value,
|
|
1482
|
+
"data-achieved": cell.isAchieved || void 0,
|
|
1483
|
+
type: "button",
|
|
1484
|
+
onClick: ($event) => level.value = cell.level
|
|
1485
|
+
}, [
|
|
1486
|
+
createElementVNode("span", _hoisted_10$2, [createElementVNode("span", _hoisted_11$1, [createElementVNode("span", _hoisted_12$1, toDisplayString(__props.levelLabel), 1), createElementVNode("span", _hoisted_13$1, toDisplayString(cell.level), 1)])]),
|
|
1487
|
+
createElementVNode("span", _hoisted_14$1, [(openBlock(true), createElementBlock(Fragment, null, renderList(cell.items, ({ count, label, rarity }, index) => {
|
|
1488
|
+
return openBlock(), createBlock(Index_default$14, {
|
|
1489
|
+
key: index,
|
|
1490
|
+
class: "item",
|
|
1491
|
+
"aria-label": label,
|
|
1492
|
+
count,
|
|
1493
|
+
rarity,
|
|
1494
|
+
role: "img"
|
|
1495
|
+
}, null, 8, [
|
|
1496
|
+
"aria-label",
|
|
1497
|
+
"count",
|
|
1498
|
+
"rarity"
|
|
1499
|
+
]);
|
|
1500
|
+
}), 128))]),
|
|
1501
|
+
cell.unlockLabel ? (openBlock(), createElementBlock("span", _hoisted_15$1, toDisplayString(cell.unlockLabel), 1)) : createCommentVNode("v-if", true),
|
|
1502
|
+
cell.isAchieved ? (openBlock(), createElementBlock("span", _hoisted_16$1, [(openBlock(), createElementBlock("svg", _hoisted_17$1, [createElementVNode("path", { d: unref(CHECK_MARK_PATH) }, null, 8, _hoisted_18$1)])), createElementVNode("span", _hoisted_19$1, toDisplayString(__props.achievedLabel), 1)])) : (openBlock(), createElementBlock("span", _hoisted_20$1, toDisplayString(__props.notAchievedLabel), 1))
|
|
1503
|
+
], 8, _hoisted_9$2)]);
|
|
1504
|
+
}), 128))])
|
|
1505
|
+
])], 2112);
|
|
1506
|
+
};
|
|
1507
|
+
}
|
|
1508
|
+
}), [["__scopeId", "data-v-1a7ee007"]]);
|
|
186
1509
|
//#endregion
|
|
187
1510
|
//#region src/models/InterfaceIcon.ts
|
|
188
1511
|
let InterfaceIcon = /* @__PURE__ */ function(InterfaceIcon) {
|
|
@@ -206,24 +1529,24 @@ const InterfaceIconCentreMap = {
|
|
|
206
1529
|
//#endregion
|
|
207
1530
|
//#region src/services/InterfaceIconPathMap.ts
|
|
208
1531
|
const InterfaceIconPathMap = {
|
|
209
|
-
["Exit"]: "
|
|
210
|
-
["Notice"]: "
|
|
211
|
-
["Power"]: "
|
|
212
|
-
["Repair"]: "
|
|
213
|
-
["Settings"]: "
|
|
1532
|
+
["Exit"]: "m14.3 8.16h17.06l.09.09.66.09.56.28.89.8.66 1.5v.56l.09.1v2.25q-.16.07-.09.37l-.42.71-.57.18h-2.06l-.09-.09-.56-.09-.33-.33q.07-.31-.1-.38v-1.12l-.42-.52-.65-.47h-11.72l-.61.33-.38.75v23.25l.19.47.33.42.47.19h11.72l.98-.8.09-.18v-1.22l.1-.28.33-.33q.17-.16.56-.1l.09-.09h2.06q.07.16.38.09l.33.24.37.84v2.44l-.09.09v.47l-.28.56v.19l-.38.75-.23.24-.66.56-.56.28-.66.09-.09.1h-17.06l-1.13-.38q-.33-.5-.89-.65-.2-.82-.75-1.36l-.09-.28v-.47l-.1-.1v-26.81q.21-.12.1-.56l.18-.38.38-.47.19-.56.42-.42.56-.47 1.13-.37zm19.03 9h.47l.75.28 2.25 2.15 2.2 1.93.14.23q.43.08.61.42l.33.42 1.17.99.42.51.24.14.09.29v.56l-.09.28-.33.33q-.21-.07-.14.14l-.94.84-.14.24-.52.32-.42.52-.42.33-.23.33q-.46.15-.71.51.07.21-.14.14l-1.69 1.6-.56.46h-.14l-.14.29-1.12.93q-.31-.07-.38.1h-.56l-.71-.52-.28-.75v-3.75l-.23-.33h-7.59l-.47-.18-.52-.52-.19-.47v-2.15l.28-.66.52-.52.28-.09h7.13l.18.09q.07-.16.38-.09l.23-.23v-3.85l.1-.09q-.07-.39.09-.56l.42-.43.38-.18z",
|
|
1533
|
+
["Notice"]: "m14.67 11.16h1.41q.63.21.98.7l.28.84v3.1q-.21.11-.09.56l-.19.37-.42.43-.56.28h-1.41l-.65-.28-.33-.33-.28-.56v-3.85l.18-.56.43-.42.65-.28zm18 0h1.41q.63.21.98.7l.19.37q-.12.45.09.57v3.18l-.09.1-.09.56-.52.52-.56.28h-1.41l-.89-.38-.37-.89v-3.75l.28-.65.33-.33.65-.28zm-4.03 2.9.38.1.23.23.09.28v2.44l.89 1.64.52.33.33.42 1.31.56q.45-.11.56.1h.85q.11-.21.56-.1l1.55-.65v-.14l.32-.43q.37-.05.52-.32l.66-1.97v-1.97l.32-.33.29-.09.09.09h.37l.47.19 1.08.98.47.75.09.66.1.09v20.53l-.1.1-.09.65-.28.57-.8.89-.56.18-.84.57h-.85l-.09.09h-26.16l-.09-.09h-.66l-.28-.1q-.45-.49-1.22-.65l-.33-.33-.56-.75-.37-1.13v-20.62l.37-1.03.99-1.08.37-.28.56-.19q.38.09.47-.09h.85l.23.23.09.28v2.44l.19.47.28.28.28.56v.19l.24.23.75.66 1.03.47.28.09h.47l.09.1h1.03l.1-.1.56-.09.66-.38h.18l.43-.18v-.14l.61-.61q.21.07.14-.14l.65-1.5q-.11-.45.1-.57v-1.87l.23-.33.19-.09h8.72l.09-.1zm-14.48 10.03-.28.1-.66.56-.38.37-.09.29v1.31l.09.19.85.75.56.18h19.69l.56-.18.75-.75.09-.29v-1.12l-.18-.47-.28-.28-.38-.28v-.19l-.38-.19h-19.96zm-.19 7.97-.56.28-.47.47-.19.47v1.13l.19.47.47.37.56.28h.65l.1.09h.56l.1-.09h18.84l.66-.37.37-.47.09-.28v-1.13l-.28-.56-.84-.66h-20.25z",
|
|
1534
|
+
["Power"]: "m24.98 6.19h1.13l.84.56.43.42.37.66v.65l.09.1v10.87l-.09.1v.56l-.19.47-.7.7-.75.47h-1.13l-.56-.28-.89-.89-.19-.47v-.47l-.09-.09v-11.07l.09-.09v-.56l.19-.38.61-.7.84-.56zm-6 3q.36-.07.43.14l.09.19v4.5l-.42.51-.47.38-.28.09-1.08.98-.42.52-.33.23-1.22 1.5-.37.75v.19l-.47.75-.38 1.5-.37.56q.07.31-.1.38v.84l-.09.1v3l.09.09v.84q.17.07.1.38l.47.84v.28l.09.1v.28l.19.56.28.38.56 1.31 1.45 1.73.52.43.23.32.75.66.29.09.46.47.57.28h.18l.94.57 1.5.37.56.38q.31-.07.38.09h.84l.1.09h3l.09-.09h.84q.07-.16.38-.09l.56-.38 1.5-.37.38-.29 1.31-.56 1.73-1.45.43-.52.32-.23.66-.75.09-.28.47-.47.28-.56v-.19l.57-.94.37-1.5.38-.56q-.07-.31.09-.38v-.84l.09-.09v-3l-.09-.1v-.84q-.16-.07-.09-.38l-.38-.56-.19-.94-.09-.09v-.28l-.37-.56-.57-1.32-1.45-1.73-.52-.42-.23-.33-1.92-1.55-.1-.18v-4.5l.24-.33h.28l.47.47.84.28.47.47.56.18q.62.64 1.46.94-.05.27.23.38l.61.42.33.42.42.23q.08.44.42.61l.33.24.19.37.56.57q.2.6.66.93l.18.57.57.65.18.66.57.75.09.28.09.75.28.56.19.56.1.75.09.1v.75l.09.09v1.03l.1.1v3.09l-.1.09v1.04l-.09.09v.66q-.19.09-.09.46l-.1.1v.28l-.19.56-.28.56-.18 1.04-.47.56-.28.84-.57.66-.18.56-.38.38-.47.89q-.27-.05-.37.23l-.42.61-.43.33-.23.42q-.43.08-.61.42l-.23.33-.38.19-.56.56-.28.09-.85.66-.56.19-.47.47-.65.18-.75.57-.29.09h-.37l-1.59.56-.75.1-.1.09h-.47l-.09.09h-1.03l-.1.1h-3.37l-.09-.1h-1.04l-.09-.09h-.47l-.09-.09-.85-.1-1.12-.47-1.03-.18-.56-.47-.66-.19-.66-.56-.56-.19q-.45-.49-1.12-.75l-.57-.56-.61-.42-.32-.43-.43-.23q-.08-.43-.42-.61l-.42-.33q-.06-.36-.33-.51-.21.07-.14-.14l-.47-.75-.37-.38-.38-.84-.37-.38-.28-.84-.38-.38-.28-.84v-.38l-.47-1.12-.09-.75-.1-.09v-.75l-.09-.1v-.94l-.09-.09v-3.28l.09-.09v-.94l.09-.1v-.65q.19-.1.1-.47l.09-.09v-.29l.19-.56.19-.28v-.28l.18-.38.1-.65.47-.56.28-.85.56-.65.19-.57 1.64-2.11.42-.32.23-.43q.44-.08.61-.42l.24-.33q.61-.23.94-.75l.46-.18.38-.38.56-.28h.19l.56-.56.85-.28.46-.47z",
|
|
1535
|
+
["Repair"]: "m29.02 9.28q.37-.09.46.1h1.22q.1.18.47.09l.1.09 1.4.28.24.24.09.56q-.16.07-.09.38l-.33.32-.33.24-.33.42-.42.33-.33.42-.33.23-.23.43-.52.32-.18.43q-.47.11-.75.51l-.24.33-.23.14-.42.61-.33.23-.28.66q.07.31-.1.38v.56l-.09.09v2.81l.09.1v.28l.28.84.8.8.56.19h.28l.1.09h3.28l.09-.09.75-.1.47-.28 2.58-2.39 1.08-1.26.33-.24.23-.33.84-.75h.66l.42.33.28.75v.75l.1.1v3.09l-.1.09v.57l-.09.09v.47l-.19.47v.28l-.47.94-.18.75-.47.46-.19.47q-.56.43-.84 1.13l-.99 1.08-.61.42q.07.21-.14.14-.35.4-.94.56l-.28.28-.84.38h-.19l-.65.47-1.41.28-.28.19-.85.28h-1.4q-.12.21-.56.09l-.1-.09h-1.12q-.07-.17-.38-.1l-.65-.37h-.29l-.46-.19h-.38l-.94-.47-.84-.19q-.49-.17-.75-.56l-.47-.19-1.17-1.07q.07-.22-.14-.14l-1.17-1.27q-.1-.47-.47-.66l-.57-1.22v-.28l-.28-.65-.18-1.03-.38-.66-.09-.28v-.47l-.1-.09v-3l.1-.1v-.56l.09-.28.47-.94.09-.75.66-1.22v-.19l.28-.56.38-.37q.11-.54.51-.8l.33-.23q.06-.37.33-.52l1.59-1.31.66-.28.47-.47.65-.19.94-.56.66-.1.09-.09h.47l.84-.28 1.22-.09.1-.1zm-12.29 17.72q.52-.09.61.23.13.58.57.85l.47.98h.14l.32.33.43.61.32.23.33.43.33.23q.06.36.33.52l.37.09.57.56 1.03.47.61.52.09.37q-.64.96-1.5 1.69v.14h-.14l-1.27 1.17-.42.52-.23.14-.94 1.03v.14h-.14l-1.27 1.17-.32.42-.33.24-1.27 1.36-.42.33q.07.21-.14.14l-.19.18h-.19l-.37.29-.84.37h-.75l-.1.09h-1.12l-.1-.09h-.56l-.66-.28-.18-.19-.66-.28-.8-.7-.65-.94-.1-.56-.09-.1q.09-.37-.09-.47v-2.06l.09-.09.09-.66.29-.56.89-1.17.42-.33.42-.52.42-.32.14-.24.61-.51.14-.24.42-.33.43-.51.42-.33.42-.52.33-.23.33-.42.42-.33.23-.33.42-.33.43-.51.42-.33.42-.52.42-.32.14-.24.56-.28zm-5.57 9.94-.47.18v.19l-.66.85v.84l.19.38.75.65.65.28.38-.09.47-.28.56-.56.19-.47v-.85l-.56-.75-.38-.37h-1.12z",
|
|
1536
|
+
["Settings"]: "m17.95 8.25h.94q.07.16.38.09l.37.19.66.56.28.1.47.47q.76.22 1.22.75l.56.18h.37l.1.1h1.4q.12-.21.57-.1l.65-.28.28-.28.85-.37.47-.47.28-.1.65-.56.38-.19q.37.1.47-.09h.84l.09.09h.47l.28.1.66.47.84.37.66.56.38.1.56.56q.43.08.61.42l.56.66.09.56.1.09v.38l.09.09v.75l-.09.1v.56l-.1.09v2.35q.17.07.1.37.44.5.65 1.22l.89.89.75.56.38.1.56.47h.19l.84.37.89.8.66 1.22v.75l.09.09v3.84l-.09.1v.56l-.19.38-.79.89q-.81.27-1.41.75l-.84.28-1.18.98-.65.75-.85 1.6v2.53l.1.09v.66q.16.07.09.37l-.09.1-.1.84-.28.56-.33.33-.32.23-.24.33-.56.28h-.19l-.33.33-.14.24q-.7.18-1.03.75l-.84.37-.56.19h-.38l-.09.09h-.66q-.07-.16-.37-.09l-.66-.38h-.19l-.65-.65-.29-.1-.84-.75-.66-.18-.65-.38q-.45.12-.56-.09h-.94l-.1.09-.65.1-1.22.56-.47.47-.56.28-.33.33-.14.23q-.64.11-1.03.47-.31-.07-.38.09h-.65l-.1-.09-.65-.1-.28-.18-.85-.28-.56-.57-.61-.32-.23-.33q-1.18-.42-1.83-1.36l-.28-.85v-.46l-.1-.29.1-.09v-.66l.09-.09v-1.5l.09-.28-.09-.09v-.75l-.09-.29q-.52-.51-.75-1.31l-1.08-1.17q-.49-.17-.75-.56l-.66-.19-1.59-.84-.33-.33-.47-.56-.19-.38q.12-.44-.09-.56v-4.13l.09-.09v-.56l.1-.28.56-.94.33-.33.56-.47.84-.28.75-.56.57-.19 1.45-1.36.75-1.5v-2.44l-.09-.09v-.56l-.1-.1v-.84l.1-.09.18-.94.89-.99.61-.32.24-.33.65-.28.38-.38 1.03-.47.19-.19.56-.28q.45.12.56-.09zm5.11 9.94-1.97.65-.84.66-.28.09-.47.57-.19.09-.37.37-.94 1.41-.09.47-.57 1.03v.75l-.09.1v1.31l.09.09v.66q.19 0 .1.37l.47.66.28.94.56.56.09.28q.75.84 1.78 1.5l.76.19.84.56q.28-.09.47.09h2.62q.1-.18.57-.09l1.21-.66.57-.18.75-.57.84-.84.09-.28.66-.66.09-.56.66-1.13v-.74l.09-.1v-1.5l-.09-.09v-.66q-.19-.09-.09-.37l-.57-.94-.18-.56-.66-.75-.09-.29-.28-.28-.29-.28-1.12-1.03-.85-.37h-.28l-.75-.38q-.47.1-.47-.09h-2.06z"
|
|
214
1537
|
};
|
|
215
1538
|
//#endregion
|
|
216
1539
|
//#region src/components/RoundButton/Index.vue
|
|
217
|
-
const _hoisted_1$
|
|
218
|
-
const _hoisted_2$
|
|
219
|
-
const _hoisted_3$
|
|
220
|
-
const _hoisted_4$
|
|
1540
|
+
const _hoisted_1$4 = ["aria-label"];
|
|
1541
|
+
const _hoisted_2$4 = ["viewBox"];
|
|
1542
|
+
const _hoisted_3$4 = ["d"];
|
|
1543
|
+
const _hoisted_4$3 = [
|
|
221
1544
|
"cx",
|
|
222
1545
|
"cy",
|
|
223
1546
|
"r",
|
|
224
1547
|
"stroke-width"
|
|
225
1548
|
];
|
|
226
|
-
var Index_default$
|
|
1549
|
+
var Index_default$20 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
|
|
227
1550
|
__name: "Index",
|
|
228
1551
|
props: {
|
|
229
1552
|
icon: {},
|
|
@@ -242,56 +1565,357 @@ var Index_default$5 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ define
|
|
|
242
1565
|
}, [createElementVNode("path", {
|
|
243
1566
|
d: unref(InterfaceIconPathMap)[__props.icon],
|
|
244
1567
|
"fill-rule": "evenodd"
|
|
245
|
-
}, null, 8, _hoisted_3$
|
|
1568
|
+
}, null, 8, _hoisted_3$4), __props.icon === unref(InterfaceIcon).Settings ? (openBlock(), createElementBlock("circle", {
|
|
246
1569
|
key: 0,
|
|
247
1570
|
cx: unref(SETTINGS_RING_CENTRE)[0],
|
|
248
1571
|
cy: unref(SETTINGS_RING_CENTRE)[1],
|
|
249
1572
|
r: unref(SETTINGS_RING_RADIUS),
|
|
250
1573
|
class: "ring",
|
|
251
1574
|
"stroke-width": unref(SETTINGS_RING_WIDTH)
|
|
252
|
-
}, null, 8, _hoisted_4$
|
|
1575
|
+
}, null, 8, _hoisted_4$3)) : createCommentVNode("v-if", true)], 8, _hoisted_2$4))], 8, _hoisted_1$4)], 2112);
|
|
253
1576
|
};
|
|
254
1577
|
}
|
|
255
1578
|
}), [["__scopeId", "data-v-e1ab12d3"]]);
|
|
256
1579
|
//#endregion
|
|
257
1580
|
//#region src/components/ServerBar/Index.vue
|
|
258
|
-
const _hoisted_1$
|
|
259
|
-
const _hoisted_2$
|
|
1581
|
+
const _hoisted_1$3 = { class: "server-bar" };
|
|
1582
|
+
const _hoisted_2$3 = {
|
|
260
1583
|
class: "mark",
|
|
261
1584
|
viewBox: "0 0 46 46",
|
|
262
1585
|
"aria-hidden": "true"
|
|
263
1586
|
};
|
|
264
|
-
const _hoisted_3$
|
|
265
|
-
const _hoisted_4 = ["d"];
|
|
266
|
-
const _hoisted_5 = { class: "name" };
|
|
267
|
-
var Index_default$
|
|
1587
|
+
const _hoisted_3$3 = ["d"];
|
|
1588
|
+
const _hoisted_4$2 = ["d"];
|
|
1589
|
+
const _hoisted_5$2 = { class: "name" };
|
|
1590
|
+
var Index_default$21 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
|
|
268
1591
|
__name: "Index",
|
|
269
1592
|
props: { name: {} },
|
|
270
1593
|
setup(__props) {
|
|
271
1594
|
return (_ctx, _cache) => {
|
|
272
|
-
return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The bar naming the chosen server, 456 by 75 units: a dark glass slab with a faint rim, the ticked diamond at its\n Left and the server's name at its middle, measured from the English client's login screen at 1080 high "), createElementVNode("div", _hoisted_1$
|
|
1595
|
+
return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The bar naming the chosen server, 456 by 75 units: a dark glass slab with a faint rim, the ticked diamond at its\n Left and the server's name at its middle, measured from the English client's login screen at 1080 high "), createElementVNode("div", _hoisted_1$3, [(openBlock(), createElementBlock("svg", _hoisted_2$3, [createElementVNode("path", {
|
|
273
1596
|
class: "diamond",
|
|
274
1597
|
d: unref(SERVER_MARK_DIAMOND_PATH)
|
|
275
|
-
}, null, 8, _hoisted_3$
|
|
1598
|
+
}, null, 8, _hoisted_3$3), createElementVNode("path", {
|
|
276
1599
|
class: "tick",
|
|
277
1600
|
d: unref(SERVER_MARK_TICK_PATH)
|
|
278
|
-
}, null, 8, _hoisted_4)])), createElementVNode("p", _hoisted_5, toDisplayString(__props.name), 1)])], 2112);
|
|
1601
|
+
}, null, 8, _hoisted_4$2)])), createElementVNode("p", _hoisted_5$2, toDisplayString(__props.name), 1)])], 2112);
|
|
279
1602
|
};
|
|
280
1603
|
}
|
|
281
1604
|
}), [["__scopeId", "data-v-6b68b3eb"]]);
|
|
282
1605
|
//#endregion
|
|
283
1606
|
//#region src/components/ToastNotice/Index.vue
|
|
284
|
-
const _sfc_main$
|
|
285
|
-
const _hoisted_1 = {
|
|
1607
|
+
const _sfc_main$3 = {};
|
|
1608
|
+
const _hoisted_1$2 = {
|
|
286
1609
|
class: "toast-notice",
|
|
287
1610
|
role: "status"
|
|
288
1611
|
};
|
|
289
|
-
const _hoisted_2 = { class: "mark" };
|
|
290
|
-
const _hoisted_3 = { class: "text" };
|
|
1612
|
+
const _hoisted_2$2 = { class: "mark" };
|
|
1613
|
+
const _hoisted_3$2 = { class: "text" };
|
|
291
1614
|
function _sfc_render(_ctx, _cache) {
|
|
292
|
-
return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The game's notice card, dropped at the top of a screen: white with rounded corners, 107 units high and at least\n 537 across, a round mark at its left and its words in the game's near black. Measured from a 1440 high\n Recording of the welcome the login screen shows "), createElementVNode("div", _hoisted_1, [createElementVNode("span", _hoisted_2, [renderSlot(_ctx.$slots, "mark", {}, void 0, true)]), createElementVNode("p", _hoisted_3, [renderSlot(_ctx.$slots, "default", {}, void 0, true)])])], 2112);
|
|
1615
|
+
return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The game's notice card, dropped at the top of a screen: white with rounded corners, 107 units high and at least\n 537 across, a round mark at its left and its words in the game's near black. Measured from a 1440 high\n Recording of the welcome the login screen shows "), createElementVNode("div", _hoisted_1$2, [createElementVNode("span", _hoisted_2$2, [renderSlot(_ctx.$slots, "mark", {}, void 0, true)]), createElementVNode("p", _hoisted_3$2, [renderSlot(_ctx.$slots, "default", {}, void 0, true)])])], 2112);
|
|
293
1616
|
}
|
|
294
|
-
var Index_default$
|
|
1617
|
+
var Index_default$22 = /*#__PURE__*/ export_helper_default(_sfc_main$3, [["render", _sfc_render], ["__scopeId", "data-v-a09dfb40"]]);
|
|
1618
|
+
//#endregion
|
|
1619
|
+
//#region src/components/WishDetails/Index.vue
|
|
1620
|
+
const _hoisted_1$1 = ["aria-label"];
|
|
1621
|
+
const _hoisted_2$1 = { class: "panel" };
|
|
1622
|
+
const _hoisted_3$1 = { class: "title" };
|
|
1623
|
+
const _hoisted_4$1 = ["aria-label"];
|
|
1624
|
+
const _hoisted_5$1 = { class: "pool" };
|
|
1625
|
+
const _hoisted_6$1 = { class: "stars" };
|
|
1626
|
+
const _hoisted_7$1 = { class: "pool-items" };
|
|
1627
|
+
const _hoisted_8$1 = ["data-featured"];
|
|
1628
|
+
const _hoisted_9$1 = {
|
|
1629
|
+
key: 0,
|
|
1630
|
+
class: "path"
|
|
1631
|
+
};
|
|
1632
|
+
const _hoisted_10$1 = { class: "fate-points" };
|
|
1633
|
+
var Index_default$24 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
|
|
1634
|
+
__name: "Index",
|
|
1635
|
+
props: {
|
|
1636
|
+
closeLabel: {},
|
|
1637
|
+
fatePoints: {},
|
|
1638
|
+
pathLabel: {},
|
|
1639
|
+
pool: {},
|
|
1640
|
+
title: {}
|
|
1641
|
+
},
|
|
1642
|
+
emits: ["close"],
|
|
1643
|
+
setup(__props, { emit: __emit }) {
|
|
1644
|
+
const emit = __emit;
|
|
1645
|
+
const poolRarityCellsMap = computed(() => Map.groupBy(__props.pool, ({ rarity }) => rarity));
|
|
1646
|
+
return (_ctx, _cache) => {
|
|
1647
|
+
return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The Details popup the wish screen's Details opens: the open banner's Pool by rarity, its Epitomized Path on the weapon\n Wish, over the wish screen until its close is clicked. Provisional: its place and size wait on a recording of the\n English Client's popup at 1080 high "), createElementVNode("div", {
|
|
1648
|
+
class: "wish-details",
|
|
1649
|
+
role: "dialog",
|
|
1650
|
+
"aria-label": __props.title
|
|
1651
|
+
}, [createElementVNode("div", _hoisted_2$1, [
|
|
1652
|
+
createElementVNode("p", _hoisted_3$1, toDisplayString(__props.title), 1),
|
|
1653
|
+
createElementVNode("button", {
|
|
1654
|
+
class: "close",
|
|
1655
|
+
type: "button",
|
|
1656
|
+
"aria-label": __props.closeLabel,
|
|
1657
|
+
onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
|
|
1658
|
+
}, "✕", 8, _hoisted_4$1),
|
|
1659
|
+
createElementVNode("ul", _hoisted_5$1, [(openBlock(true), createElementBlock(Fragment, null, renderList(poolRarityCellsMap.value, ([rarity, cells]) => {
|
|
1660
|
+
return openBlock(), createElementBlock("li", {
|
|
1661
|
+
key: rarity,
|
|
1662
|
+
class: "pool-rarity"
|
|
1663
|
+
}, [createElementVNode("span", _hoisted_6$1, toDisplayString("★".repeat(rarity)), 1), createElementVNode("ul", _hoisted_7$1, [(openBlock(true), createElementBlock(Fragment, null, renderList(cells, ({ id, isFeatured, name }) => {
|
|
1664
|
+
return openBlock(), createElementBlock("li", {
|
|
1665
|
+
key: id,
|
|
1666
|
+
class: "pool-item",
|
|
1667
|
+
"data-featured": isFeatured
|
|
1668
|
+
}, toDisplayString(name), 9, _hoisted_8$1);
|
|
1669
|
+
}), 128))])]);
|
|
1670
|
+
}), 128))]),
|
|
1671
|
+
__props.pathLabel ? (openBlock(), createElementBlock("p", _hoisted_9$1, [createTextVNode(toDisplayString(__props.pathLabel) + " ", 1), createElementVNode("span", _hoisted_10$1, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.fatePoints, ({ color, text }, index) => {
|
|
1672
|
+
return openBlock(), createElementBlock("span", {
|
|
1673
|
+
key: index,
|
|
1674
|
+
style: normalizeStyle({ color })
|
|
1675
|
+
}, toDisplayString(text), 5);
|
|
1676
|
+
}), 128))])])) : createCommentVNode("v-if", true)
|
|
1677
|
+
])], 8, _hoisted_1$1)], 2112);
|
|
1678
|
+
};
|
|
1679
|
+
}
|
|
1680
|
+
}), [["__scopeId", "data-v-4fcea975"]]);
|
|
1681
|
+
//#endregion
|
|
1682
|
+
//#region src/components/WishScreen/Index.vue
|
|
1683
|
+
const _hoisted_1 = { class: "wish-screen" };
|
|
1684
|
+
const _hoisted_2 = {
|
|
1685
|
+
class: "title",
|
|
1686
|
+
role: "heading",
|
|
1687
|
+
"aria-level": "1"
|
|
1688
|
+
};
|
|
1689
|
+
const _hoisted_3 = { class: "banners" };
|
|
1690
|
+
const _hoisted_4 = { class: "currencies" };
|
|
1691
|
+
const _hoisted_5 = { class: "currency-name" };
|
|
1692
|
+
const _hoisted_6 = {
|
|
1693
|
+
key: 0,
|
|
1694
|
+
class: "card"
|
|
1695
|
+
};
|
|
1696
|
+
const _hoisted_7 = { class: "tag" };
|
|
1697
|
+
const _hoisted_8 = { class: "card-title" };
|
|
1698
|
+
const _hoisted_9 = { class: "probability" };
|
|
1699
|
+
const _hoisted_10 = { class: "rate-up" };
|
|
1700
|
+
const _hoisted_11 = {
|
|
1701
|
+
key: 0,
|
|
1702
|
+
class: "featured"
|
|
1703
|
+
};
|
|
1704
|
+
const _hoisted_12 = { class: "featured-name" };
|
|
1705
|
+
const _hoisted_13 = { class: "stars" };
|
|
1706
|
+
const _hoisted_14 = { class: "featured-title" };
|
|
1707
|
+
const _hoisted_15 = { class: "links" };
|
|
1708
|
+
const _hoisted_16 = {
|
|
1709
|
+
key: 1,
|
|
1710
|
+
class: "path"
|
|
1711
|
+
};
|
|
1712
|
+
const _hoisted_17 = { class: "fate-points" };
|
|
1713
|
+
const _hoisted_18 = {
|
|
1714
|
+
key: 2,
|
|
1715
|
+
class: "sets"
|
|
1716
|
+
};
|
|
1717
|
+
const _hoisted_19 = { class: "set-label" };
|
|
1718
|
+
const _hoisted_20 = { class: "cost" };
|
|
1719
|
+
const _hoisted_21 = { class: "set-label" };
|
|
1720
|
+
const _hoisted_22 = { class: "cost" };
|
|
1721
|
+
const _hoisted_23 = { class: "result-list" };
|
|
1722
|
+
const _hoisted_24 = ["data-capturing-radiance", "data-rarity"];
|
|
1723
|
+
const _hoisted_25 = { class: "result-name" };
|
|
1724
|
+
const _hoisted_26 = { class: "stars" };
|
|
1725
|
+
const _hoisted_27 = { class: "result-return" };
|
|
1726
|
+
var Index_default$25 = /*#__PURE__*/ export_helper_default(/* @__PURE__ */ defineComponent({
|
|
1727
|
+
__name: "Index",
|
|
1728
|
+
props: /*@__PURE__*/ mergeModels({
|
|
1729
|
+
backLabel: {},
|
|
1730
|
+
bannerCard: {},
|
|
1731
|
+
bannerKinds: {},
|
|
1732
|
+
bannerLabels: {},
|
|
1733
|
+
currencies: {},
|
|
1734
|
+
detailsLabel: {},
|
|
1735
|
+
fatePoints: {},
|
|
1736
|
+
historyLabel: {},
|
|
1737
|
+
pathLabel: {},
|
|
1738
|
+
pool: {},
|
|
1739
|
+
probabilityLabel: {},
|
|
1740
|
+
purchases: {},
|
|
1741
|
+
results: {},
|
|
1742
|
+
sets: {},
|
|
1743
|
+
shopLabel: {},
|
|
1744
|
+
title: {}
|
|
1745
|
+
}, {
|
|
1746
|
+
"bannerKind": {},
|
|
1747
|
+
"bannerKindModifiers": {}
|
|
1748
|
+
}),
|
|
1749
|
+
emits: /*@__PURE__*/ mergeModels([
|
|
1750
|
+
"buy",
|
|
1751
|
+
"close",
|
|
1752
|
+
"dismiss",
|
|
1753
|
+
"wish"
|
|
1754
|
+
], ["update:bannerKind"]),
|
|
1755
|
+
setup(__props, { emit: __emit }) {
|
|
1756
|
+
const bannerKind = useModel(__props, "bannerKind");
|
|
1757
|
+
const emit = __emit;
|
|
1758
|
+
const isDetailsOpen = ref(false);
|
|
1759
|
+
const featuredCell = computed(() => __props.pool.find(({ isFeatured, rarity }) => isFeatured && rarity === 5));
|
|
1760
|
+
const getBannerLabel = (kind) => __props.bannerLabels[kind].map(({ text }) => text).join("");
|
|
1761
|
+
const bannerLabelText = computed(() => bannerKind.value && getBannerLabel(bannerKind.value));
|
|
1762
|
+
return (_ctx, _cache) => {
|
|
1763
|
+
return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" The wish, the F3 key's: the banners across the head with the counts and the way back beside them, the open banner's\n card over the screen with its promoted five-star, its ×1 and ×10 with their costs, and the Shop, Details and History\n Row under the card. Details opens the banner's pool over the screen, and over it all what the Last wishes drew, a card\n Each with its stars, until a click goes on. Provisional: every place, size and colour here waits on the wish's passes\n Against a recording of the English Client at 1080 high, and the banner card's art and the banners' tabs' portraits\n Are the plate's, which cannot ship "), createElementVNode("div", _hoisted_1, [
|
|
1764
|
+
createElementVNode("p", _hoisted_2, toDisplayString(__props.title), 1),
|
|
1765
|
+
createElementVNode("ul", _hoisted_3, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.bannerKinds, (kind) => {
|
|
1766
|
+
return openBlock(), createElementBlock("li", { key: kind }, [createVNode(Index_default$10, {
|
|
1767
|
+
class: "banner",
|
|
1768
|
+
"aria-label": getBannerLabel(kind),
|
|
1769
|
+
"aria-pressed": kind === bannerKind.value,
|
|
1770
|
+
kind: unref(GameButtonKind).Row,
|
|
1771
|
+
onClick: ($event) => bannerKind.value = kind
|
|
1772
|
+
}, null, 8, [
|
|
1773
|
+
"aria-label",
|
|
1774
|
+
"aria-pressed",
|
|
1775
|
+
"kind",
|
|
1776
|
+
"onClick"
|
|
1777
|
+
])]);
|
|
1778
|
+
}), 128))]),
|
|
1779
|
+
createElementVNode("ul", _hoisted_4, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.currencies, ({ id, name, quantity }) => {
|
|
1780
|
+
return openBlock(), createElementBlock("li", {
|
|
1781
|
+
key: id,
|
|
1782
|
+
class: "currency"
|
|
1783
|
+
}, [createElementVNode("span", _hoisted_5, toDisplayString(name), 1), createTextVNode(" " + toDisplayString(quantity), 1)]);
|
|
1784
|
+
}), 128))]),
|
|
1785
|
+
createVNode(Index_default$10, {
|
|
1786
|
+
class: "back",
|
|
1787
|
+
"aria-label": __props.backLabel,
|
|
1788
|
+
kind: unref(GameButtonKind).Plain,
|
|
1789
|
+
onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
|
|
1790
|
+
}, {
|
|
1791
|
+
default: withCtx(() => [..._cache[5] || (_cache[5] = [createTextVNode("✕", -1)])]),
|
|
1792
|
+
_: 1
|
|
1793
|
+
}, 8, ["aria-label", "kind"]),
|
|
1794
|
+
__props.bannerCard && bannerLabelText.value ? (openBlock(), createElementBlock("section", _hoisted_6, [
|
|
1795
|
+
createElementVNode("p", _hoisted_7, toDisplayString(bannerLabelText.value), 1),
|
|
1796
|
+
createElementVNode("p", _hoisted_8, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.bannerCard.title, ({ color, text }, index) => {
|
|
1797
|
+
return openBlock(), createElementBlock("span", {
|
|
1798
|
+
key: index,
|
|
1799
|
+
style: normalizeStyle({ color })
|
|
1800
|
+
}, toDisplayString(text), 5);
|
|
1801
|
+
}), 128))]),
|
|
1802
|
+
createElementVNode("p", _hoisted_9, toDisplayString(__props.probabilityLabel), 1),
|
|
1803
|
+
createElementVNode("p", _hoisted_10, toDisplayString(__props.bannerCard.rateUp), 1),
|
|
1804
|
+
featuredCell.value ? (openBlock(), createElementBlock("div", _hoisted_11, [
|
|
1805
|
+
createElementVNode("p", _hoisted_12, toDisplayString(featuredCell.value.name), 1),
|
|
1806
|
+
createElementVNode("p", _hoisted_13, toDisplayString("★".repeat(featuredCell.value.rarity)), 1),
|
|
1807
|
+
createElementVNode("p", _hoisted_14, toDisplayString(__props.bannerCard.featuredTitle), 1)
|
|
1808
|
+
])) : createCommentVNode("v-if", true)
|
|
1809
|
+
])) : createCommentVNode("v-if", true),
|
|
1810
|
+
createElementVNode("div", _hoisted_15, [
|
|
1811
|
+
createVNode(Index_default$10, {
|
|
1812
|
+
class: "link",
|
|
1813
|
+
kind: unref(GameButtonKind).Reply
|
|
1814
|
+
}, {
|
|
1815
|
+
default: withCtx(() => [createTextVNode(toDisplayString(__props.shopLabel), 1)]),
|
|
1816
|
+
_: 1
|
|
1817
|
+
}, 8, ["kind"]),
|
|
1818
|
+
createVNode(Index_default$10, {
|
|
1819
|
+
class: "link",
|
|
1820
|
+
kind: unref(GameButtonKind).Reply,
|
|
1821
|
+
onClick: _cache[1] || (_cache[1] = ($event) => isDetailsOpen.value = true)
|
|
1822
|
+
}, {
|
|
1823
|
+
default: withCtx(() => [createTextVNode(toDisplayString(__props.detailsLabel), 1)]),
|
|
1824
|
+
_: 1
|
|
1825
|
+
}, 8, ["kind"]),
|
|
1826
|
+
createVNode(Index_default$10, {
|
|
1827
|
+
class: "link",
|
|
1828
|
+
kind: unref(GameButtonKind).Reply
|
|
1829
|
+
}, {
|
|
1830
|
+
default: withCtx(() => [createTextVNode(toDisplayString(__props.historyLabel), 1)]),
|
|
1831
|
+
_: 1
|
|
1832
|
+
}, 8, ["kind"])
|
|
1833
|
+
]),
|
|
1834
|
+
__props.pathLabel ? (openBlock(), createElementBlock("p", _hoisted_16, [createTextVNode(toDisplayString(__props.pathLabel) + " ", 1), createElementVNode("span", _hoisted_17, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.fatePoints, ({ color, text }, index) => {
|
|
1835
|
+
return openBlock(), createElementBlock("span", {
|
|
1836
|
+
key: index,
|
|
1837
|
+
style: normalizeStyle({ color })
|
|
1838
|
+
}, toDisplayString(text), 5);
|
|
1839
|
+
}), 128))])])) : createCommentVNode("v-if", true),
|
|
1840
|
+
bannerKind.value ? (openBlock(), createElementBlock("div", _hoisted_18, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.sets, ({ cost, count, isAffordable, label }) => {
|
|
1841
|
+
return openBlock(), createBlock(Index_default$10, {
|
|
1842
|
+
key: count,
|
|
1843
|
+
class: "set",
|
|
1844
|
+
disabled: !isAffordable,
|
|
1845
|
+
kind: unref(GameButtonKind).Pill,
|
|
1846
|
+
onClick: ($event) => emit("wish", count)
|
|
1847
|
+
}, {
|
|
1848
|
+
default: withCtx(() => [createElementVNode("span", _hoisted_19, toDisplayString(label), 1), createElementVNode("span", _hoisted_20, toDisplayString(cost), 1)]),
|
|
1849
|
+
_: 2
|
|
1850
|
+
}, 1032, [
|
|
1851
|
+
"disabled",
|
|
1852
|
+
"kind",
|
|
1853
|
+
"onClick"
|
|
1854
|
+
]);
|
|
1855
|
+
}), 128)), (openBlock(true), createElementBlock(Fragment, null, renderList(__props.purchases, ({ cost, isAffordable, label }) => {
|
|
1856
|
+
return openBlock(), createBlock(Index_default$10, {
|
|
1857
|
+
key: label,
|
|
1858
|
+
class: "set",
|
|
1859
|
+
disabled: !isAffordable,
|
|
1860
|
+
kind: unref(GameButtonKind).Pill,
|
|
1861
|
+
onClick: _cache[2] || (_cache[2] = ($event) => emit("buy"))
|
|
1862
|
+
}, {
|
|
1863
|
+
default: withCtx(() => [createElementVNode("span", _hoisted_21, toDisplayString(label), 1), createElementVNode("span", _hoisted_22, toDisplayString(cost), 1)]),
|
|
1864
|
+
_: 2
|
|
1865
|
+
}, 1032, ["disabled", "kind"]);
|
|
1866
|
+
}), 128))])) : createCommentVNode("v-if", true),
|
|
1867
|
+
isDetailsOpen.value ? (openBlock(), createBlock(Index_default$24, {
|
|
1868
|
+
key: 3,
|
|
1869
|
+
"close-label": __props.backLabel,
|
|
1870
|
+
"fate-points": __props.fatePoints,
|
|
1871
|
+
"path-label": __props.pathLabel,
|
|
1872
|
+
pool: __props.pool,
|
|
1873
|
+
title: __props.detailsLabel,
|
|
1874
|
+
onClose: _cache[3] || (_cache[3] = ($event) => isDetailsOpen.value = false)
|
|
1875
|
+
}, null, 8, [
|
|
1876
|
+
"close-label",
|
|
1877
|
+
"fate-points",
|
|
1878
|
+
"path-label",
|
|
1879
|
+
"pool",
|
|
1880
|
+
"title"
|
|
1881
|
+
])) : createCommentVNode("v-if", true),
|
|
1882
|
+
__props.results.length > 0 ? (openBlock(), createElementBlock("div", {
|
|
1883
|
+
key: 4,
|
|
1884
|
+
class: "results",
|
|
1885
|
+
onClick: _cache[4] || (_cache[4] = ($event) => emit("dismiss"))
|
|
1886
|
+
}, [createElementVNode("ul", _hoisted_23, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.results, ({ isCapturingRadiance, name, rarity, wishReturn }, index) => {
|
|
1887
|
+
return openBlock(), createElementBlock("li", {
|
|
1888
|
+
key: index,
|
|
1889
|
+
class: "result",
|
|
1890
|
+
"data-capturing-radiance": isCapturingRadiance,
|
|
1891
|
+
"data-rarity": rarity
|
|
1892
|
+
}, [
|
|
1893
|
+
createElementVNode("span", _hoisted_25, toDisplayString(name), 1),
|
|
1894
|
+
createElementVNode("span", _hoisted_26, toDisplayString("★".repeat(rarity)), 1),
|
|
1895
|
+
createElementVNode("span", _hoisted_27, toDisplayString(wishReturn), 1)
|
|
1896
|
+
], 8, _hoisted_24);
|
|
1897
|
+
}), 128))])])) : createCommentVNode("v-if", true)
|
|
1898
|
+
])], 2112);
|
|
1899
|
+
};
|
|
1900
|
+
}
|
|
1901
|
+
}), [["__scopeId", "data-v-fe40ca36"]]);
|
|
1902
|
+
//#endregion
|
|
1903
|
+
//#region src/models/InteractionKind.ts
|
|
1904
|
+
let InteractionKind = /* @__PURE__ */ function(InteractionKind) {
|
|
1905
|
+
InteractionKind["Activate"] = "Activate";
|
|
1906
|
+
InteractionKind["Open"] = "Open";
|
|
1907
|
+
InteractionKind["PickUp"] = "PickUp";
|
|
1908
|
+
InteractionKind["Read"] = "Read";
|
|
1909
|
+
InteractionKind["Talk"] = "Talk";
|
|
1910
|
+
return InteractionKind;
|
|
1911
|
+
}({});
|
|
1912
|
+
//#endregion
|
|
1913
|
+
//#region src/models/InteractionState.ts
|
|
1914
|
+
let InteractionState = /* @__PURE__ */ function(InteractionState) {
|
|
1915
|
+
InteractionState["Hover"] = "Hover";
|
|
1916
|
+
InteractionState["Pressed"] = "Pressed";
|
|
1917
|
+
return InteractionState;
|
|
1918
|
+
}({});
|
|
295
1919
|
//#endregion
|
|
296
1920
|
//#region src/models/InterfaceClipProperty.ts
|
|
297
1921
|
let InterfaceClipProperty = /* @__PURE__ */ function(InterfaceClipProperty) {
|
|
@@ -306,6 +1930,7 @@ const InterfaceClipProperties = Object.values(InterfaceClipProperty);
|
|
|
306
1930
|
//#region src/models/reference/GameSourceKind.ts
|
|
307
1931
|
let GameSourceKind = /* @__PURE__ */ function(GameSourceKind) {
|
|
308
1932
|
GameSourceKind["AnimationClip"] = "AnimationClip";
|
|
1933
|
+
GameSourceKind["Avatar"] = "Avatar";
|
|
309
1934
|
GameSourceKind["BinaryData"] = "MiHoYoBinData";
|
|
310
1935
|
GameSourceKind["Capture"] = "Capture";
|
|
311
1936
|
GameSourceKind["DataTable"] = "DataTable";
|
|
@@ -364,4 +1989,4 @@ const toInterfaceClip = ({ durationMs, tracks }) => ({
|
|
|
364
1989
|
}] : [])
|
|
365
1990
|
});
|
|
366
1991
|
//#endregion
|
|
367
|
-
export { FIXTURE_VARIANT_SEPARATOR, GAME_CANVAS_INSET, GAME_CANVAS_UNIT, GAME_CURSOR, GAME_FONT_FAMILY, GAME_UNIT, GAME_WHITE, _sfc_main as GameRect,
|
|
1992
|
+
export { ASCENSION_PHASE_COUNT, BannerKind, BannerKinds, CHECK_MARK_PATH, CONSTELLATION_NODE_PLACES, Index_default as CharacterMenu, Index_default$1 as CharacterMenuArtifacts, Index_default$2 as CharacterMenuButtons, Index_default$3 as CharacterMenuConstellation, Index_default$4 as CharacterMenuProfile, CharacterMenuTab, CharacterMenuTabs, Index_default$5 as CharacterMenuTalents, Index_default$6 as CharacterMenuWeapons, Index_default$7 as CraftingScreen, DialogueChoiceIcon, DialogueChoiceIconPathMap, Index_default$8 as DialogueScreen, FIXTURE_VARIANT_SEPARATOR, ForgeQueueState, Index_default$9 as ForgeScreen, ForgeTab, GAME_CANVAS_INSET, GAME_CANVAS_RECT, GAME_CANVAS_UNIT, GAME_CREAM, GAME_CURSOR, GAME_FONT_FAMILY, GAME_GOLD, GAME_INK, GAME_REPLY_HOVER, GAME_REPLY_HOVER_INK, GAME_REPLY_REST, GAME_ROW_HOVER, GAME_ROW_PRESS, GAME_SMOOTHSTEP_EASING, GAME_UNIT, GAME_WHITE, Index_default$10 as GameButton, GameButtonKind, _sfc_main as GameRect, Index_default$11 as GameScreen, GameSourceKind, INTERACTION_HOVER_MS, INTERACTION_KEY_LABEL, INTERACTION_PILL_REST_MS, INTERACTION_PRESS_MS, INTERACTION_REST_MS, InteractionKind, Index_default$12 as InteractionPrompts, InteractionState, InterfaceClipProperties, InterfaceClipProperty, InterfaceIcon, InterfaceIconCentreMap, InterfaceIconPathMap, InterfaceIcons, Index_default$13 as InventoryScreen, InventorySort, InventorySorts, InvestigationOutcome, ItemCategories, ItemCategory, Index_default$14 as ItemTile, Index_default$15 as LoadingSpinner, MOBILE_INTERFACE_SCALE, ORNAMENT_END_PATH, ORNAMENT_MIDDLE_PATH, Index_default$16 as OrnamentDivider, Index_default$17 as ProgressBar, Index_default$18 as PromptBand, Index_default$19 as ReputationScreen, Index_default$20 as RoundButton, SERVER_MARK_DIAMOND_PATH, SERVER_MARK_TICK_PATH, SETTINGS_RING_CENTRE, SETTINGS_RING_RADIUS, SETTINGS_RING_WIDTH, Index_default$21 as ServerBar, Index_default$22 as ToastNotice, Index_default$23 as TwoColumnScreen, Index_default$24 as WishDetails, Index_default$25 as WishScreen, computeRectOffsets, playInterfaceClip, toCanvasRect, toCanvasRectStyle, toInterfaceClip };
|