XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

SpaceNinjaServer

A simple server for a small space ninja game

公开
关注 0 Fork 1 Star 0
返回提交历史

XFEstudio/SpaceNinjaServer

feat(webui): acquire flawed mods & imposters via add mods (#1040)

Closes #1033 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/1040

9267c992
Sainan <sainan@calamity.inc>
提交于

代码差异

4 个文件 +25 -13
Modified src/controllers/custom/getItemListsController.ts +14 -9
@@ -20,6 +20,7 @@ interface ListedItem {
20 20 name: string;
21 21 fusionLimit?: number;
22 22 exalted?: string[];
23 badReason?: "starter" | "frivolous" | "notraw";
23 24 }
24 25
25 26 const getItemListsController: RequestHandler = (req, response) => {
@@ -132,16 +133,20 @@ const getItemListsController: RequestHandler = (req, response) => {
132 133 }
133 134
134 135 res.mods = [];
135 const badItems: Record<string, boolean> = {};
136 136 for (const [uniqueName, upgrade] of Object.entries(ExportUpgrades)) {
137 res.mods.push({
137 const mod: ListedItem = {
138 138 uniqueName,
139 139 name: getString(upgrade.name, lang),
140 140 fusionLimit: upgrade.fusionLimit
141 });
142 if (upgrade.isStarter || upgrade.isFrivolous || upgrade.upgradeEntries) {
143 badItems[uniqueName] = true;
141 };
142 if (upgrade.isStarter) {
143 mod.badReason = "starter";
144 } else if (upgrade.isFrivolous) {
145 mod.badReason = "frivolous";
146 } else if (upgrade.upgradeEntries) {
147 mod.badReason = "notraw";
144 148 }
149 res.mods.push(mod);
145 150 }
146 151 for (const [uniqueName, upgrade] of Object.entries(ExportAvionics)) {
147 152 res.mods.push({
@@ -151,13 +156,14 @@ const getItemListsController: RequestHandler = (req, response) => {
151 156 });
152 157 }
153 158 for (const [uniqueName, arcane] of Object.entries(ExportArcanes)) {
154 res.mods.push({
159 const mod: ListedItem = {
155 160 uniqueName,
156 161 name: getString(arcane.name, lang)
157 });
162 };
158 163 if (arcane.isFrivolous) {
159 badItems[uniqueName] = true;
164 mod.badReason = "frivolous";
160 165 }
166 res.mods.push(mod);
161 167 }
162 168 for (const [uniqueName, syndicate] of Object.entries(ExportSyndicates)) {
163 169 res.Syndicates.push({
@@ -167,7 +173,6 @@ const getItemListsController: RequestHandler = (req, response) => {
167 173 }
168 174
169 175 response.json({
170 badItems,
171 176 archonCrystalUpgrades,
172 177 uniqueLevelCaps: ExportMisc.uniqueLevelCaps,
173 178 ...res
Modified static/webui/script.js +9 -4
@@ -207,11 +207,16 @@ function fetchItemList() {
207 207 document.getElementById("changeSyndicate").appendChild(option);
208 208 itemMap[item.uniqueName] = { ...item, type };
209 209 });
210 } else if (type != "badItems") {
210 } else {
211 211 items.forEach(item => {
212 if (item.uniqueName in data.badItems) {
213 item.name += " " + loc("code_badItem");
214 } else if (item.uniqueName.substr(0, 18) != "/Lotus/Types/Game/") {
212 if ("badReason" in item) {
213 if (item.badReason == "starter") {
214 item.name = loc("code_starter").split("|MOD|").join(item.name);
215 } else {
216 item.name += " " + loc("code_badItem");
217 }
218 }
219 if (item.uniqueName.substr(0, 18) != "/Lotus/Types/Game/" && item.badReason != "notraw") {
215 220 const option = document.createElement("option");
216 221 option.setAttribute("data-key", item.uniqueName);
217 222 option.value = item.name;
Modified static/webui/translations/en.js +1 -0
@@ -18,6 +18,7 @@ dict = {
18 18 code_kDrive: `K-Drive`,
19 19 code_legendaryCore: `Legendary Core`,
20 20 code_traumaticPeculiar: `Traumatic Peculiar`,
21 code_starter: `|MOD| (Flawed)`,
21 22 code_badItem: `(Imposter)`,
22 23 code_maxRank: `Max Rank`,
23 24 code_rename: `Rename`,
Modified static/webui/translations/ru.js +1 -0
@@ -19,6 +19,7 @@ dict = {
19 19 code_kDrive: `К-Драйв`,
20 20 code_legendaryCore: `Легендарное ядро`,
21 21 code_traumaticPeculiar: `Травмирующая Странность`,
22 code_starter: `[UNTRANSLATED] |MOD| (Flawed)`,
22 23 code_badItem: `(Самозванец)`,
23 24 code_maxRank: `Максимальный ранг`,
24 25 code_rename: `Переименовать`,