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

XFESpaceNinjaServer

A simple server for a small space ninja game

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

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
AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com>
提交于

代码差异

3 个文件 +61 -9
Modified src/controllers/custom/addModularEquipmentController.ts +19 -1
@@ -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();
Modified static/webui/index.html +16 -2
@@ -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>
Modified static/webui/script.js +26 -6
@@ -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);