返回提交历史
Modified
src/controllers/custom/addModularEquipmentController.ts
+19
-1
Modified
static/webui/index.html
+16
-2
Modified
static/webui/script.js
+26
-6
XFEstudio/XFESpaceNinjaServer
feat(webui): adding kitgun (#1382)
Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/1382 Reviewed-by: Sainan <sainan@calamity.inc> Co-authored-by: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com> Co-committed-by: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com>
779bc340
代码差异
3 个文件
+61
-9
@@ -1,7 +1,8 @@
1
1
import { getAccountIdForRequest } from "@/src/services/loginService";
2
2
import { getInventory, addEquipment, occupySlot, productCategoryToInventoryBin } from "@/src/services/inventoryService";
3
import { RequestHandler } from "express";
4
3
import { modularWeaponTypes } from "@/src/helpers/modularWeaponHelper";
4
import { ExportWeapons } from "warframe-public-export-plus";
5
import { RequestHandler } from "express";
5
6
6
7
export const addModularEquipmentController: RequestHandler = async (req, res) => {
7
8
const accountId = await getAccountIdForRequest(req);
@@ -9,6 +10,23 @@ export const addModularEquipmentController: RequestHandler = async (req, res) =>
9
10
const category = modularWeaponTypes[request.ItemType];
10
11
const inventoryBin = productCategoryToInventoryBin(category)!;
11
12
const inventory = await getInventory(accountId, `${category} ${inventoryBin}`);
13
request.ModularParts.forEach(part => {
14
if (ExportWeapons[part].gunType) {
15
if (category == "LongGuns") {
16
request.ItemType = {
17
GT_RIFLE: "/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimary",
18
GT_SHOTGUN: "/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimaryShotgun",
19
GT_BEAM: "/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimaryBeam"
20
}[ExportWeapons[part].gunType];
21
} else {
22
request.ItemType = {
23
GT_RIFLE: "/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondary",
24
GT_SHOTGUN: "/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondaryShotgun",
25
GT_BEAM: "/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondaryBeam"
26
}[ExportWeapons[part].gunType];
27
}
28
}
29
});
12
30
addEquipment(inventory, category, request.ItemType, request.ModularParts);
13
31
occupySlot(inventory, inventoryBin, true);
14
32
await inventory.save();
@@ -163,10 +163,15 @@
163
163
<div class="card mb-3" style="height: 400px;">
164
164
<h5 class="card-header" data-loc="inventory_longGuns"></h5>
165
165
<div class="card-body overflow-auto">
166
<form class="input-group mb-3" onsubmit="doAcquireEquipment('LongGuns');return false;">
166
<form class="input-group mb-3" onsubmit="handleModularSelection('LongGuns');return false;">
167
167
<input class="form-control" id="acquire-type-LongGuns" list="datalist-LongGuns" />
168
168
<button class="btn btn-primary" type="submit" data-loc="general_addButton"></button>
169
169
</form>
170
<form class="input-group mb-3" id="modular-LongGuns" style="display: none;">
171
<input class="form-control" id="acquire-type-LongGuns-GUN_BARREL" list="datalist-ModularParts-GUN_BARREL" />
172
<input class="form-control" id="acquire-type-LongGuns-GUN_PRIMARY_HANDLE" list="datalist-ModularParts-GUN_PRIMARY_HANDLE" />
173
<input class="form-control" id="acquire-type-LongGuns-GUN_CLIP" list="datalist-ModularParts-GUN_CLIP" />
174
</form>
170
175
<table class="table table-hover w-100">
171
176
<tbody id="LongGuns-list"></tbody>
172
177
</table>
@@ -179,10 +184,15 @@
179
184
<div class="card mb-3" style="height: 400px;">
180
185
<h5 class="card-header" data-loc="inventory_pistols"></h5>
181
186
<div class="card-body overflow-auto">
182
<form class="input-group mb-3" onsubmit="doAcquireEquipment('Pistols');return false;">
187
<form class="input-group mb-3" onsubmit="handleModularSelection('Pistols');return false;">
183
188
<input class="form-control" id="acquire-type-Pistols" list="datalist-Pistols" />
184
189
<button class="btn btn-primary" type="submit" data-loc="general_addButton"></button>
185
190
</form>
191
<form class="input-group mb-3" id="modular-Pistols" style="display: none;">
192
<input class="form-control" id="acquire-type-Pistols-GUN_BARREL" list="datalist-ModularParts-GUN_BARREL" />
193
<input class="form-control" id="acquire-type-Pistols-GUN_SECONDARY_HANDLE" list="datalist-ModularParts-GUN_SECONDARY_HANDLE" />
194
<input class="form-control" id="acquire-type-Pistols-GUN_CLIP" list="datalist-ModularParts-GUN_CLIP" />
195
</form>
186
196
<table class="table table-hover w-100">
187
197
<tbody id="Pistols-list"></tbody>
188
198
</table>
@@ -645,6 +655,10 @@
645
655
<datalist id="datalist-ModularParts-BLADE"></datalist>
646
656
<datalist id="datalist-ModularParts-HILT"></datalist>
647
657
<datalist id="datalist-ModularParts-HILT_WEIGHT"></datalist>
658
<datalist id="datalist-ModularParts-GUN_PRIMARY_HANDLE"></datalist>
659
<datalist id="datalist-ModularParts-GUN_SECONDARY_HANDLE"></datalist>
660
<datalist id="datalist-ModularParts-GUN_BARREL"></datalist>
661
<datalist id="datalist-ModularParts-GUN_CLIP"></datalist>
648
662
<script src="/webui/libs/jquery-3.6.0.min.js"></script>
649
663
<script src="/webui/libs/whirlpool-js.min.js"></script>
650
664
<script src="/webui/libs/single.js"></script>
@@ -194,6 +194,14 @@ function fetchItemList() {
194
194
uniqueName: "/Lotus/Weapons/Ostron/Melee/LotusModularWeapon",
195
195
name: loc("code_zaw")
196
196
});
197
data.LongGuns.push({
198
uniqueName: "/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimary",
199
name: loc("code_kitgun")
200
});
201
data.Pistols.push({
202
uniqueName: "/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondary",
203
name: loc("code_kitgun")
204
});
197
205
198
206
const itemMap = {
199
207
// Generics for rivens
@@ -203,12 +211,10 @@ function fetchItemList() {
203
211
"/Lotus/Weapons/Tenno/Rifle/LotusRifle": { name: loc("code_rifle") },
204
212
"/Lotus/Weapons/Tenno/Shotgun/LotusShotgun": { name: loc("code_shotgun") },
205
213
// Modular weapons
206
"/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimary": { name: loc("code_kitgun") },
207
214
"/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimaryBeam": { name: loc("code_kitgun") },
208
215
"/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimaryLauncher": { name: loc("code_kitgun") },
209
216
"/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimaryShotgun": { name: loc("code_kitgun") },
210
217
"/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimarySniper": { name: loc("code_kitgun") },
211
"/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondary": { name: loc("code_kitgun") },
212
218
"/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondaryBeam": { name: loc("code_kitgun") },
213
219
"/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondaryShotgun": { name: loc("code_kitgun") },
214
220
"/Lotus/Weapons/Sentients/OperatorAmplifiers/SentTrainingAmplifier/OperatorTrainingAmpWeapon": {
@@ -249,7 +255,11 @@ function fetchItemList() {
249
255
"LWPT_AMP_BRACE",
250
256
"LWPT_BLADE",
251
257
"LWPT_HILT",
252
"LWPT_HILT_WEIGHT"
258
"LWPT_HILT_WEIGHT",
259
"LWPT_GUN_PRIMARY_HANDLE",
260
"LWPT_GUN_SECONDARY_HANDLE",
261
"LWPT_GUN_BARREL",
262
"LWPT_GUN_CLIP"
253
263
];
254
264
if (supportedModularParts.includes(item.partType)) {
255
265
const option = document.createElement("option");
@@ -693,6 +703,12 @@ function doAcquireModularEquipment(category, ItemType) {
693
703
case "Melee":
694
704
requiredParts = ["BLADE", "HILT", "HILT_WEIGHT"];
695
705
break;
706
case "LongGuns":
707
requiredParts = ["GUN_BARREL", "GUN_PRIMARY_HANDLE", "GUN_CLIP"];
708
break;
709
case "Pistols":
710
requiredParts = ["GUN_BARREL", "GUN_SECONDARY_HANDLE", "GUN_CLIP"];
711
break;
696
712
}
697
713
requiredParts.forEach(part => {
698
714
const partName = getKey(document.getElementById("acquire-type-" + category + "-" + part));
@@ -1357,7 +1373,9 @@ function toast(text) {
1357
1373
function handleModularSelection(category) {
1358
1374
const modularWeapons = [
1359
1375
"/Lotus/Weapons/Sentients/OperatorAmplifiers/OperatorAmpWeapon",
1360
"/Lotus/Weapons/Ostron/Melee/LotusModularWeapon"
1376
"/Lotus/Weapons/Ostron/Melee/LotusModularWeapon",
1377
"/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimary",
1378
"/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondary"
1361
1379
];
1362
1380
const itemType = getKey(document.getElementById("acquire-type-" + category));
1363
1381
@@ -1370,9 +1388,11 @@ function handleModularSelection(category) {
1370
1388
{
1371
1389
const modularWeapons = [
1372
1390
"/Lotus/Weapons/Sentients/OperatorAmplifiers/OperatorAmpWeapon",
1373
"/Lotus/Weapons/Ostron/Melee/LotusModularWeapon"
1391
"/Lotus/Weapons/Ostron/Melee/LotusModularWeapon",
1392
"/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimary",
1393
"/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondary"
1374
1394
];
1375
const supportedModularInventoryCategory = ["OperatorAmps", "Melee"];
1395
const supportedModularInventoryCategory = ["OperatorAmps", "Melee", "LongGuns", "Pistols"];
1376
1396
supportedModularInventoryCategory.forEach(inventoryCategory => {
1377
1397
document.getElementById("acquire-type-" + inventoryCategory).addEventListener("input", function () {
1378
1398
const modularFields = document.getElementById("modular-" + inventoryCategory);