feat(webui): add necramechs
This commit is contained in:
parent
ee0bee5d7b
commit
56367dbf15
@ -1,5 +1,5 @@
|
|||||||
import { getAccountIdForRequest } from "@/src/services/loginService";
|
import { getAccountIdForRequest } from "@/src/services/loginService";
|
||||||
import { addEquipment, addPowerSuit, getInventory, updateSlots } from "@/src/services/inventoryService";
|
import { addEquipment, addPowerSuit, addMechSuit, getInventory, updateSlots } from "@/src/services/inventoryService";
|
||||||
import { SlotNames } from "@/src/types/purchaseTypes";
|
import { SlotNames } from "@/src/types/purchaseTypes";
|
||||||
import { InventorySlot } from "@/src/types/inventoryTypes/inventoryTypes";
|
import { InventorySlot } from "@/src/types/inventoryTypes/inventoryTypes";
|
||||||
import { RequestHandler } from "express";
|
import { RequestHandler } from "express";
|
||||||
@ -9,14 +9,17 @@ export const addItemsController: RequestHandler = async (req, res) => {
|
|||||||
const requests = req.body as IAddItemRequest[];
|
const requests = req.body as IAddItemRequest[];
|
||||||
const inventory = await getInventory(accountId);
|
const inventory = await getInventory(accountId);
|
||||||
for (const request of requests) {
|
for (const request of requests) {
|
||||||
|
updateSlots(inventory, productCategoryToSlotName[request.type], 0, 1);
|
||||||
switch (request.type) {
|
switch (request.type) {
|
||||||
case ItemType.Suits:
|
case ItemType.Suits:
|
||||||
updateSlots(inventory, productCategoryToSlotName[request.type], 0, 1);
|
|
||||||
addPowerSuit(inventory, request.internalName);
|
addPowerSuit(inventory, request.internalName);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case ItemType.MechSuits:
|
||||||
|
addMechSuit(inventory, request.internalName);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
updateSlots(inventory, productCategoryToSlotName[request.type], 0, 1);
|
|
||||||
addEquipment(inventory, request.type, request.internalName);
|
addEquipment(inventory, request.type, request.internalName);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -34,7 +37,8 @@ const productCategoryToSlotName: Record<ItemType, SlotNames> = {
|
|||||||
SpaceGuns: InventorySlot.SPACESUITS,
|
SpaceGuns: InventorySlot.SPACESUITS,
|
||||||
SpaceMelee: InventorySlot.SPACESUITS,
|
SpaceMelee: InventorySlot.SPACESUITS,
|
||||||
Sentinels: InventorySlot.SENTINELS,
|
Sentinels: InventorySlot.SENTINELS,
|
||||||
SentinelWeapons: InventorySlot.SENTINELS
|
SentinelWeapons: InventorySlot.SENTINELS,
|
||||||
|
MechSuits: InventorySlot.MECHSUITS
|
||||||
};
|
};
|
||||||
|
|
||||||
enum ItemType {
|
enum ItemType {
|
||||||
@ -46,7 +50,8 @@ enum ItemType {
|
|||||||
SpaceGuns = "SpaceGuns",
|
SpaceGuns = "SpaceGuns",
|
||||||
SpaceMelee = "SpaceMelee",
|
SpaceMelee = "SpaceMelee",
|
||||||
SentinelWeapons = "SentinelWeapons",
|
SentinelWeapons = "SentinelWeapons",
|
||||||
Sentinels = "Sentinels"
|
Sentinels = "Sentinels",
|
||||||
|
MechSuits = "MechSuits"
|
||||||
}
|
}
|
||||||
|
|
||||||
interface IAddItemRequest {
|
interface IAddItemRequest {
|
||||||
|
@ -22,6 +22,7 @@ interface ListedItem {
|
|||||||
const getItemListsController: RequestHandler = (req, response) => {
|
const getItemListsController: RequestHandler = (req, response) => {
|
||||||
const lang = getDict(typeof req.query.lang == "string" ? req.query.lang : "en");
|
const lang = getDict(typeof req.query.lang == "string" ? req.query.lang : "en");
|
||||||
const res: Record<string, ListedItem[]> = {};
|
const res: Record<string, ListedItem[]> = {};
|
||||||
|
res.Suits = [];
|
||||||
res.LongGuns = [];
|
res.LongGuns = [];
|
||||||
res.Melee = [];
|
res.Melee = [];
|
||||||
res.ModularParts = [];
|
res.ModularParts = [];
|
||||||
@ -31,10 +32,14 @@ const getItemListsController: RequestHandler = (req, response) => {
|
|||||||
res.SpaceGuns = [];
|
res.SpaceGuns = [];
|
||||||
res.SpaceMelee = [];
|
res.SpaceMelee = [];
|
||||||
res.SpaceSuits = [];
|
res.SpaceSuits = [];
|
||||||
res.Suits = [];
|
res.MechSuits = [];
|
||||||
res.miscitems = [];
|
res.miscitems = [];
|
||||||
for (const [uniqueName, item] of Object.entries(ExportWarframes)) {
|
for (const [uniqueName, item] of Object.entries(ExportWarframes)) {
|
||||||
if (item.productCategory == "Suits" || item.productCategory == "SpaceSuits") {
|
if (
|
||||||
|
item.productCategory == "Suits" ||
|
||||||
|
item.productCategory == "SpaceSuits" ||
|
||||||
|
item.productCategory == "MechSuits"
|
||||||
|
) {
|
||||||
res[item.productCategory].push({
|
res[item.productCategory].push({
|
||||||
uniqueName,
|
uniqueName,
|
||||||
name: getString(item.name, lang),
|
name: getString(item.name, lang),
|
||||||
|
@ -201,14 +201,14 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-lg-6">
|
<div class="col-lg-6">
|
||||||
<div class="card mb-3" style="height: 400px;">
|
<div class="card mb-3" style="height: 400px;">
|
||||||
<h5 class="card-header">Sentinel Weapons</h5>
|
<h5 class="card-header">Necramechs</h5>
|
||||||
<div class="card-body overflow-auto">
|
<div class="card-body overflow-auto">
|
||||||
<form class="input-group mb-3" onsubmit="doAcquireEquipment('SentinelWeapons');return false;">
|
<form class="input-group mb-3" onsubmit="doAcquireEquipment('MechSuits');return false;">
|
||||||
<input class="form-control" id="acquire-type-SentinelWeapons" list="datalist-SentinelWeapons" />
|
<input class="form-control" id="acquire-type-MechSuits" list="datalist-MechSuits" />
|
||||||
<button class="btn btn-primary" type="submit">Add</button>
|
<button class="btn btn-primary" type="submit">Add</button>
|
||||||
</form>
|
</form>
|
||||||
<table class="table table-hover w-100">
|
<table class="table table-hover w-100">
|
||||||
<tbody id="SentinelWeapons-list"></tbody>
|
<tbody id="MechSuits-list"></tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -229,6 +229,20 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-lg-6">
|
||||||
|
<div class="card mb-3" style="height: 400px;">
|
||||||
|
<h5 class="card-header">Sentinel Weapons</h5>
|
||||||
|
<div class="card-body overflow-auto">
|
||||||
|
<form class="input-group mb-3" onsubmit="doAcquireEquipment('SentinelWeapons');return false;">
|
||||||
|
<input class="form-control" id="acquire-type-SentinelWeapons" list="datalist-SentinelWeapons" />
|
||||||
|
<button class="btn btn-primary" type="submit">Add</button>
|
||||||
|
</form>
|
||||||
|
<table class="table table-hover w-100">
|
||||||
|
<tbody id="SentinelWeapons-list"></tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row g-3">
|
<div class="row g-3">
|
||||||
<div class="col-lg-6">
|
<div class="col-lg-6">
|
||||||
@ -505,6 +519,7 @@
|
|||||||
<datalist id="datalist-SentinelWeapons"></datalist>
|
<datalist id="datalist-SentinelWeapons"></datalist>
|
||||||
<datalist id="datalist-Sentinels"></datalist>
|
<datalist id="datalist-Sentinels"></datalist>
|
||||||
<datalist id="datalist-ModularParts"></datalist>
|
<datalist id="datalist-ModularParts"></datalist>
|
||||||
|
<datalist id="datalist-MechSuits"></datalist>
|
||||||
<datalist id="datalist-miscitems"></datalist>
|
<datalist id="datalist-miscitems"></datalist>
|
||||||
<datalist id="datalist-mods">
|
<datalist id="datalist-mods">
|
||||||
<option data-key="/Lotus/Upgrades/Mods/Fusers/LegendaryModFuser" value="Legendary Core"></option>
|
<option data-key="/Lotus/Upgrades/Mods/Fusers/LegendaryModFuser" value="Legendary Core"></option>
|
||||||
|
@ -205,7 +205,8 @@ function updateInventory() {
|
|||||||
"SpaceMelee",
|
"SpaceMelee",
|
||||||
"SentinelWeapons",
|
"SentinelWeapons",
|
||||||
"Hoverboards",
|
"Hoverboards",
|
||||||
"OperatorAmps"
|
"OperatorAmps",
|
||||||
|
"MechSuits"
|
||||||
].forEach(category => {
|
].forEach(category => {
|
||||||
document.getElementById(category + "-list").innerHTML = "";
|
document.getElementById(category + "-list").innerHTML = "";
|
||||||
data[category].forEach(item => {
|
data[category].forEach(item => {
|
||||||
@ -230,14 +231,18 @@ function updateInventory() {
|
|||||||
const td = document.createElement("td");
|
const td = document.createElement("td");
|
||||||
td.classList = "text-end";
|
td.classList = "text-end";
|
||||||
const maxXP =
|
const maxXP =
|
||||||
category === "Suits" ||
|
category == "Suits" ||
|
||||||
category === "SpaceSuits" ||
|
category == "SpaceSuits" ||
|
||||||
category === "Sentinels" ||
|
category == "Sentinels" ||
|
||||||
category === "Hoverboards"
|
category == "Hoverboards" ||
|
||||||
|
category == "MechSuits"
|
||||||
? 1_600_000
|
? 1_600_000
|
||||||
: 800_000;
|
: 800_000;
|
||||||
|
|
||||||
if (item.XP < maxXP) {
|
if (
|
||||||
|
item.XP < maxXP &&
|
||||||
|
category != "MechSuits" // missionInventoryUpdate currently doesn't handle this category
|
||||||
|
) {
|
||||||
const a = document.createElement("a");
|
const a = document.createElement("a");
|
||||||
a.href = "#";
|
a.href = "#";
|
||||||
a.onclick = function (event) {
|
a.onclick = function (event) {
|
||||||
@ -260,7 +265,7 @@ function updateInventory() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
a.title = "Make Rank 30";
|
a.title = "Max Rank";
|
||||||
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.2V448c0 17.7 14.3 32 32 32s32-14.3 32-32V141.2L329.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z"/></svg>`;
|
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.2V448c0 17.7 14.3 32 32 32s32-14.3 32-32V141.2L329.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z"/></svg>`;
|
||||||
td.appendChild(a);
|
td.appendChild(a);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user