feat(webui): adding kitgun #1382
@ -1,7 +1,8 @@
 | 
			
		||||
import { getAccountIdForRequest } from "@/src/services/loginService";
 | 
			
		||||
import { getInventory, addEquipment, occupySlot, productCategoryToInventoryBin } from "@/src/services/inventoryService";
 | 
			
		||||
import { RequestHandler } from "express";
 | 
			
		||||
import { modularWeaponTypes } from "@/src/helpers/modularWeaponHelper";
 | 
			
		||||
import { ExportWeapons } from "warframe-public-export-plus";
 | 
			
		||||
import { RequestHandler } from "express";
 | 
			
		||||
 | 
			
		||||
export const addModularEquipmentController: RequestHandler = async (req, res) => {
 | 
			
		||||
    const accountId = await getAccountIdForRequest(req);
 | 
			
		||||
@ -9,6 +10,23 @@ export const addModularEquipmentController: RequestHandler = async (req, res) =>
 | 
			
		||||
    const category = modularWeaponTypes[request.ItemType];
 | 
			
		||||
    const inventoryBin = productCategoryToInventoryBin(category)!;
 | 
			
		||||
    const inventory = await getInventory(accountId, `${category} ${inventoryBin}`);
 | 
			
		||||
    request.ModularParts.forEach(part => {
 | 
			
		||||
        if (ExportWeapons[part].gunType) {
 | 
			
		||||
            if (category == "LongGuns") {
 | 
			
		||||
                request.ItemType = {
 | 
			
		||||
                    GT_RIFLE: "/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimary",
 | 
			
		||||
                    GT_SHOTGUN: "/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimaryShotgun",
 | 
			
		||||
                    GT_BEAM: "/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimaryBeam"
 | 
			
		||||
                }[ExportWeapons[part].gunType];
 | 
			
		||||
            } else {
 | 
			
		||||
                request.ItemType = {
 | 
			
		||||
                    GT_RIFLE: "/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondary",
 | 
			
		||||
                    GT_SHOTGUN: "/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondaryShotgun",
 | 
			
		||||
                    GT_BEAM: "/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondaryBeam"
 | 
			
		||||
                }[ExportWeapons[part].gunType];
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    });
 | 
			
		||||
    addEquipment(inventory, category, request.ItemType, request.ModularParts);
 | 
			
		||||
    occupySlot(inventory, inventoryBin, true);
 | 
			
		||||
    await inventory.save();
 | 
			
		||||
 | 
			
		||||
@ -163,10 +163,15 @@
 | 
			
		||||
                        <div class="card mb-3" style="height: 400px;">
 | 
			
		||||
                            <h5 class="card-header" data-loc="inventory_longGuns"></h5>
 | 
			
		||||
                            <div class="card-body overflow-auto">
 | 
			
		||||
                                <form class="input-group mb-3" onsubmit="doAcquireEquipment('LongGuns');return false;">
 | 
			
		||||
                                <form class="input-group mb-3" onsubmit="handleModularSelection('LongGuns');return false;">
 | 
			
		||||
                                    <input class="form-control" id="acquire-type-LongGuns" list="datalist-LongGuns" />
 | 
			
		||||
                                    <button class="btn btn-primary" type="submit" data-loc="general_addButton"></button>
 | 
			
		||||
                                </form>
 | 
			
		||||
                                <form class="input-group mb-3" id="modular-LongGuns" style="display: none;">
 | 
			
		||||
                                    <input class="form-control" id="acquire-type-LongGuns-GUN_BARREL" list="datalist-ModularParts-GUN_BARREL" />
 | 
			
		||||
                                    <input class="form-control" id="acquire-type-LongGuns-GUN_PRIMARY_HANDLE" list="datalist-ModularParts-GUN_PRIMARY_HANDLE" />
 | 
			
		||||
                                    <input class="form-control" id="acquire-type-LongGuns-GUN_CLIP" list="datalist-ModularParts-GUN_CLIP" />
 | 
			
		||||
                                </form>
 | 
			
		||||
                                <table class="table table-hover w-100">
 | 
			
		||||
                                    <tbody id="LongGuns-list"></tbody>
 | 
			
		||||
                                </table>
 | 
			
		||||
@ -179,10 +184,15 @@
 | 
			
		||||
                        <div class="card mb-3" style="height: 400px;">
 | 
			
		||||
                            <h5 class="card-header" data-loc="inventory_pistols"></h5>
 | 
			
		||||
                            <div class="card-body overflow-auto">
 | 
			
		||||
                                <form class="input-group mb-3" onsubmit="doAcquireEquipment('Pistols');return false;">
 | 
			
		||||
                                <form class="input-group mb-3" onsubmit="handleModularSelection('Pistols');return false;">
 | 
			
		||||
                                    <input class="form-control" id="acquire-type-Pistols" list="datalist-Pistols" />
 | 
			
		||||
                                    <button class="btn btn-primary" type="submit" data-loc="general_addButton"></button>
 | 
			
		||||
                                </form>
 | 
			
		||||
                                <form class="input-group mb-3" id="modular-Pistols" style="display: none;">
 | 
			
		||||
                                    <input class="form-control" id="acquire-type-Pistols-GUN_BARREL" list="datalist-ModularParts-GUN_BARREL" />
 | 
			
		||||
                                    <input class="form-control" id="acquire-type-Pistols-GUN_SECONDARY_HANDLE" list="datalist-ModularParts-GUN_SECONDARY_HANDLE" />
 | 
			
		||||
                                    <input class="form-control" id="acquire-type-Pistols-GUN_CLIP" list="datalist-ModularParts-GUN_CLIP" />
 | 
			
		||||
                                </form>
 | 
			
		||||
                                <table class="table table-hover w-100">
 | 
			
		||||
                                    <tbody id="Pistols-list"></tbody>
 | 
			
		||||
                                </table>
 | 
			
		||||
@ -645,6 +655,10 @@
 | 
			
		||||
    <datalist id="datalist-ModularParts-BLADE"></datalist>
 | 
			
		||||
    <datalist id="datalist-ModularParts-HILT"></datalist>
 | 
			
		||||
    <datalist id="datalist-ModularParts-HILT_WEIGHT"></datalist>
 | 
			
		||||
    <datalist id="datalist-ModularParts-GUN_PRIMARY_HANDLE"></datalist>
 | 
			
		||||
    <datalist id="datalist-ModularParts-GUN_SECONDARY_HANDLE"></datalist>
 | 
			
		||||
    <datalist id="datalist-ModularParts-GUN_BARREL"></datalist>
 | 
			
		||||
    <datalist id="datalist-ModularParts-GUN_CLIP"></datalist>
 | 
			
		||||
    <script src="/webui/libs/jquery-3.6.0.min.js"></script>
 | 
			
		||||
    <script src="/webui/libs/whirlpool-js.min.js"></script>
 | 
			
		||||
    <script src="/webui/libs/single.js"></script>
 | 
			
		||||
 | 
			
		||||
@ -194,6 +194,14 @@ function fetchItemList() {
 | 
			
		||||
                uniqueName: "/Lotus/Weapons/Ostron/Melee/LotusModularWeapon",
 | 
			
		||||
                name: loc("code_zaw")
 | 
			
		||||
            });
 | 
			
		||||
            data.LongGuns.push({
 | 
			
		||||
                uniqueName: "/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimary",
 | 
			
		||||
                name: loc("code_kitgun")
 | 
			
		||||
            });
 | 
			
		||||
            data.Pistols.push({
 | 
			
		||||
                uniqueName: "/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondary",
 | 
			
		||||
                name: loc("code_kitgun")
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            const itemMap = {
 | 
			
		||||
                // Generics for rivens
 | 
			
		||||
@ -203,12 +211,10 @@ function fetchItemList() {
 | 
			
		||||
                "/Lotus/Weapons/Tenno/Rifle/LotusRifle": { name: loc("code_rifle") },
 | 
			
		||||
                "/Lotus/Weapons/Tenno/Shotgun/LotusShotgun": { name: loc("code_shotgun") },
 | 
			
		||||
                // Modular weapons
 | 
			
		||||
                "/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimary": { name: loc("code_kitgun") },
 | 
			
		||||
                "/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimaryBeam": { name: loc("code_kitgun") },
 | 
			
		||||
                "/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimaryLauncher": { name: loc("code_kitgun") },
 | 
			
		||||
                "/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimaryShotgun": { name: loc("code_kitgun") },
 | 
			
		||||
                "/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimarySniper": { name: loc("code_kitgun") },
 | 
			
		||||
                "/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondary": { name: loc("code_kitgun") },
 | 
			
		||||
                "/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondaryBeam": { name: loc("code_kitgun") },
 | 
			
		||||
                "/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondaryShotgun": { name: loc("code_kitgun") },
 | 
			
		||||
                "/Lotus/Weapons/Sentients/OperatorAmplifiers/SentTrainingAmplifier/OperatorTrainingAmpWeapon": {
 | 
			
		||||
@ -249,7 +255,11 @@ function fetchItemList() {
 | 
			
		||||
                                "LWPT_AMP_BRACE",
 | 
			
		||||
                                "LWPT_BLADE",
 | 
			
		||||
                                "LWPT_HILT",
 | 
			
		||||
                                "LWPT_HILT_WEIGHT"
 | 
			
		||||
                                "LWPT_HILT_WEIGHT",
 | 
			
		||||
                                "LWPT_GUN_PRIMARY_HANDLE",
 | 
			
		||||
                                "LWPT_GUN_SECONDARY_HANDLE",
 | 
			
		||||
                                "LWPT_GUN_BARREL",
 | 
			
		||||
                                "LWPT_GUN_CLIP"
 | 
			
		||||
                            ];
 | 
			
		||||
                            if (supportedModularParts.includes(item.partType)) {
 | 
			
		||||
                                const option = document.createElement("option");
 | 
			
		||||
@ -259,6 +269,7 @@ function fetchItemList() {
 | 
			
		||||
                                    .getElementById("datalist-" + type + "-" + item.partType.slice(5))
 | 
			
		||||
                                    .appendChild(option);
 | 
			
		||||
                            } else {
 | 
			
		||||
                                console.log(item.partType);
 | 
			
		||||
                                const option = document.createElement("option");
 | 
			
		||||
                                option.setAttribute("data-key", item.uniqueName);
 | 
			
		||||
                                option.value = item.name;
 | 
			
		||||
@ -693,6 +704,12 @@ function doAcquireModularEquipment(category, ItemType) {
 | 
			
		||||
        case "Melee":
 | 
			
		||||
            requiredParts = ["BLADE", "HILT", "HILT_WEIGHT"];
 | 
			
		||||
            break;
 | 
			
		||||
        case "LongGuns":
 | 
			
		||||
            requiredParts = ["GUN_BARREL", "GUN_PRIMARY_HANDLE", "GUN_CLIP"];
 | 
			
		||||
            break;
 | 
			
		||||
        case "Pistols":
 | 
			
		||||
            requiredParts = ["GUN_BARREL", "GUN_SECONDARY_HANDLE", "GUN_CLIP"];
 | 
			
		||||
            break;
 | 
			
		||||
    }
 | 
			
		||||
    requiredParts.forEach(part => {
 | 
			
		||||
        const partName = getKey(document.getElementById("acquire-type-" + category + "-" + part));
 | 
			
		||||
@ -1357,7 +1374,9 @@ function toast(text) {
 | 
			
		||||
function handleModularSelection(category) {
 | 
			
		||||
    const modularWeapons = [
 | 
			
		||||
        "/Lotus/Weapons/Sentients/OperatorAmplifiers/OperatorAmpWeapon",
 | 
			
		||||
        "/Lotus/Weapons/Ostron/Melee/LotusModularWeapon"
 | 
			
		||||
        "/Lotus/Weapons/Ostron/Melee/LotusModularWeapon",
 | 
			
		||||
        "/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimary",
 | 
			
		||||
        "/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondary"
 | 
			
		||||
    ];
 | 
			
		||||
    const itemType = getKey(document.getElementById("acquire-type-" + category));
 | 
			
		||||
 | 
			
		||||
@ -1370,9 +1389,11 @@ function handleModularSelection(category) {
 | 
			
		||||
{
 | 
			
		||||
    const modularWeapons = [
 | 
			
		||||
        "/Lotus/Weapons/Sentients/OperatorAmplifiers/OperatorAmpWeapon",
 | 
			
		||||
        "/Lotus/Weapons/Ostron/Melee/LotusModularWeapon"
 | 
			
		||||
        "/Lotus/Weapons/Ostron/Melee/LotusModularWeapon",
 | 
			
		||||
        "/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimary",
 | 
			
		||||
        "/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondary"
 | 
			
		||||
    ];
 | 
			
		||||
    const supportedModularInventoryCategory = ["OperatorAmps", "Melee"];
 | 
			
		||||
    const supportedModularInventoryCategory = ["OperatorAmps", "Melee", "LongGuns", "Pistols"];
 | 
			
		||||
    supportedModularInventoryCategory.forEach(inventoryCategory => {
 | 
			
		||||
        document.getElementById("acquire-type-" + inventoryCategory).addEventListener("input", function () {
 | 
			
		||||
            const modularFields = document.getElementById("modular-" + inventoryCategory);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user