cleanup a bit
This commit is contained in:
parent
ee6f9cb985
commit
647fd85bab
@ -17,7 +17,7 @@ const saveLoadoutController: RequestHandler = async (req, res) => {
|
|||||||
const { UpgradeVer, ...equipmentChanges } = body;
|
const { UpgradeVer, ...equipmentChanges } = body;
|
||||||
await handleInventoryItemConfigChange(equipmentChanges, accountId);
|
await handleInventoryItemConfigChange(equipmentChanges, accountId);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
res.status(200).end();
|
res.status(400).json({ error: error.message });
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -13,16 +13,14 @@ export const isEmptyObject = (obj: unknown): boolean => {
|
|||||||
return Boolean(obj && Object.keys(obj).length === 0 && obj.constructor === Object);
|
return Boolean(obj && Object.keys(obj).length === 0 && obj.constructor === Object);
|
||||||
};
|
};
|
||||||
|
|
||||||
//setup default items on account creation or like originally in giveStartingItems.php
|
//TODO: setup default items on account creation or like originally in giveStartingItems.php
|
||||||
|
|
||||||
//TODO: avoid multiple saves for less db calls
|
//TODO: change update functions to only add and not save perhaps, functions that add and return inventory perhaps
|
||||||
//TODO: change update functions to only add and not save
|
|
||||||
|
|
||||||
/* loadouts has loadoutconfigs
|
/* loadouts has loadoutconfigs
|
||||||
operatorloadouts has itemconfig, but no multiple config ids
|
operatorloadouts has itemconfig, but no multiple config ids
|
||||||
itemconfig has multiple config ids
|
itemconfig has multiple config ids
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export const handleInventoryItemConfigChange = async (
|
export const handleInventoryItemConfigChange = async (
|
||||||
equipmentChanges: ISaveLoadoutRequestNoUpgradeVer,
|
equipmentChanges: ISaveLoadoutRequestNoUpgradeVer,
|
||||||
accountId: string
|
accountId: string
|
||||||
@ -37,14 +35,12 @@ export const handleInventoryItemConfigChange = async (
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// non-empty is a change in loadout(or suit...)
|
// non-empty is a change in loadout(or suit...)
|
||||||
|
|
||||||
switch (equipmentName) {
|
switch (equipmentName) {
|
||||||
case "OperatorLoadOuts":
|
case "OperatorLoadOuts":
|
||||||
case "AdultOperatorLoadOuts": {
|
case "AdultOperatorLoadOuts": {
|
||||||
const inventory = await getInventory(accountId);
|
|
||||||
const operatorConfig = equipment as IOperatorConfigEntry;
|
const operatorConfig = equipment as IOperatorConfigEntry;
|
||||||
const operatorLoadout = inventory[equipmentName];
|
const operatorLoadout = inventory[equipmentName];
|
||||||
console.log("loadout received", equipmentName, operatorConfig);
|
//console.log("loadout received", equipmentName, operatorConfig);
|
||||||
// all non-empty entries are one loadout slot
|
// all non-empty entries are one loadout slot
|
||||||
for (const [loadoutId, loadoutConfig] of Object.entries(operatorConfig)) {
|
for (const [loadoutId, loadoutConfig] of Object.entries(operatorConfig)) {
|
||||||
// console.log("loadoutId", loadoutId, "loadoutconfig", loadoutConfig);
|
// console.log("loadoutId", loadoutId, "loadoutconfig", loadoutConfig);
|
||||||
@ -57,42 +53,30 @@ export const handleInventoryItemConfigChange = async (
|
|||||||
_id: ItemId.$oid,
|
_id: ItemId.$oid,
|
||||||
...loadoutConfigItemIdRemoved
|
...loadoutConfigItemIdRemoved
|
||||||
});
|
});
|
||||||
await inventory.save();
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
loadout.set(loadoutConfig);
|
loadout.set(loadoutConfig);
|
||||||
|
|
||||||
//({ _id: loadoutId }, loadoutConfig);
|
|
||||||
}
|
}
|
||||||
await inventory.save();
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case "LoadOuts": {
|
case "LoadOuts": {
|
||||||
console.log("loadout received");
|
//console.log("loadout received");
|
||||||
|
const loadout = await LoadoutModel.findOne({ loadoutOwnerId: accountId });
|
||||||
|
if (!loadout) {
|
||||||
|
throw new Error("loadout not found");
|
||||||
|
}
|
||||||
|
|
||||||
for (const [_loadoutSlot, _loadout] of Object.entries(equipment)) {
|
for (const [_loadoutSlot, _loadout] of Object.entries(equipment)) {
|
||||||
const loadoutSlot = _loadoutSlot as keyof ILoadoutClient;
|
const loadoutSlot = _loadoutSlot as keyof ILoadoutClient;
|
||||||
const newLoadout = _loadout as ILoadoutEntry;
|
const newLoadout = _loadout as ILoadoutEntry;
|
||||||
|
|
||||||
//console.log("key", loadoutSlot, "value", loadout);
|
|
||||||
|
|
||||||
// empty loadout slot like: "NORMAL": {}
|
// empty loadout slot like: "NORMAL": {}
|
||||||
if (isEmptyObject(newLoadout)) {
|
if (isEmptyObject(newLoadout)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
const loadout = await LoadoutModel.findOne({ loadoutOwnerId: accountId });
|
|
||||||
//const {, ...loadout } = loadoutWithLoadoutOwnerId;
|
|
||||||
|
|
||||||
if (!loadout) {
|
|
||||||
throw new Error("loadout not found");
|
|
||||||
}
|
|
||||||
// all non-empty entries are one loadout slot
|
// all non-empty entries are one loadout slot
|
||||||
for (const [loadoutId, loadoutConfig] of Object.entries(newLoadout)) {
|
for (const [loadoutId, loadoutConfig] of Object.entries(newLoadout)) {
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
||||||
//const { loadoutOwnerId, ...loadout } = loadoutWithLoadoutOwnerId;
|
|
||||||
// console.log("loadoutId", loadoutId, "loadoutconfig", loadoutConfig);
|
|
||||||
|
|
||||||
const oldLoadoutConfig = loadout[loadoutSlot].find(
|
const oldLoadoutConfig = loadout[loadoutSlot].find(
|
||||||
loadout => loadout._id.toString() === loadoutId
|
loadout => loadout._id.toString() === loadoutId
|
||||||
);
|
);
|
||||||
@ -104,25 +88,19 @@ export const handleInventoryItemConfigChange = async (
|
|||||||
_id: ItemId.$oid,
|
_id: ItemId.$oid,
|
||||||
...loadoutConfigItemIdRemoved
|
...loadoutConfigItemIdRemoved
|
||||||
});
|
});
|
||||||
await loadout.save();
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
const loadoutIndex = loadout[loadoutSlot].indexOf(oldLoadoutConfig);
|
const loadoutIndex = loadout[loadoutSlot].indexOf(oldLoadoutConfig);
|
||||||
|
|
||||||
if (loadoutIndex === undefined || loadoutIndex === -1) {
|
if (loadoutIndex === undefined || loadoutIndex === -1) {
|
||||||
throw new Error("loadout index not found");
|
throw new Error("loadout index not found");
|
||||||
}
|
}
|
||||||
|
|
||||||
//console.log("parent id", oldLoadoutConfig.ownerDocument()._id);
|
//perhaps .overwrite() is better
|
||||||
loadout[loadoutSlot][loadoutIndex].set(loadoutConfig);
|
loadout[loadoutSlot][loadoutIndex].set(loadoutConfig);
|
||||||
//loadout.NORMAL[loadoutIndex].overwrite(loadoutConfig);
|
}
|
||||||
//console.log("db", loadout[loadoutSlot][loadoutIndex].schema);
|
}
|
||||||
|
|
||||||
await loadout.save();
|
await loadout.save();
|
||||||
//({ _id: loadoutId }, loadoutConfig);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case "LongGuns":
|
case "LongGuns":
|
||||||
@ -134,10 +112,9 @@ export const handleInventoryItemConfigChange = async (
|
|||||||
case "DrifterMelee":
|
case "DrifterMelee":
|
||||||
case "Sentinels":
|
case "Sentinels":
|
||||||
case "Horses": {
|
case "Horses": {
|
||||||
console.log("? ???? ?", equipmentName, equipment);
|
//console.log("general Item config saved", equipmentName, equipment);
|
||||||
|
|
||||||
const itemEntries = equipment as IItemEntry;
|
const itemEntries = equipment as IItemEntry;
|
||||||
const inventory = await getInventory(accountId);
|
|
||||||
for (const [itemId, itemConfigEntries] of Object.entries(itemEntries)) {
|
for (const [itemId, itemConfigEntries] of Object.entries(itemEntries)) {
|
||||||
const inventoryItem = inventory[equipmentName].find(item => item._id?.toString() === itemId);
|
const inventoryItem = inventory[equipmentName].find(item => item._id?.toString() === itemId);
|
||||||
|
|
||||||
@ -150,15 +127,11 @@ export const handleInventoryItemConfigChange = async (
|
|||||||
inventoryItem.Configs[parseInt(configId)] = config;
|
inventoryItem.Configs[parseInt(configId)] = config;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
await inventory.save();
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case "CurrentLoadOutIds": {
|
case "CurrentLoadOutIds": {
|
||||||
//TODO: remove duplicate getInventory after finding out when currentloadOutId is sent
|
|
||||||
const loadoutIds = equipment as IOid[]; // TODO: Check for more than just an array of oids, I think i remember one instance
|
const loadoutIds = equipment as IOid[]; // TODO: Check for more than just an array of oids, I think i remember one instance
|
||||||
const inventory = await getInventory(accountId);
|
|
||||||
inventory.CurrentLoadOutIds = loadoutIds;
|
inventory.CurrentLoadOutIds = loadoutIds;
|
||||||
await inventory.save();
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case "EquippedGear": {
|
case "EquippedGear": {
|
||||||
@ -168,27 +141,20 @@ export const handleInventoryItemConfigChange = async (
|
|||||||
default: {
|
default: {
|
||||||
console.log("category not implemented", equipmentName, equipment);
|
console.log("category not implemented", equipmentName, equipment);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
//case "OperatorAmps":
|
//case "OperatorAmps":
|
||||||
|
|
||||||
// case "SentinelWeapons":
|
// case "SentinelWeapons":
|
||||||
// case "KubrowPets":
|
// case "KubrowPets":
|
||||||
// case "SpaceSuits":
|
// case "SpaceSuits":
|
||||||
// case "SpaceGuns":
|
// case "SpaceGuns":
|
||||||
// case "SpaceMelee":
|
// case "SpaceMelee":
|
||||||
|
|
||||||
// case "SpecialItems":
|
// case "SpecialItems":
|
||||||
// case "MoaPets":
|
// case "MoaPets":
|
||||||
// case "Hoverboards":
|
// case "Hoverboards":
|
||||||
|
|
||||||
// case "MechSuits":
|
// case "MechSuits":
|
||||||
// case "CrewShipHarnesses":
|
// case "CrewShipHarnesses":
|
||||||
|
|
||||||
//
|
|
||||||
|
|
||||||
// case "CrewShips":
|
// case "CrewShips":
|
||||||
//case "KahlLoadOuts": not sure yet how to handle kahl: it is not sent in inventory
|
//case "KahlLoadOuts": not sure yet how to handle kahl: it is not sent in inventory
|
||||||
}
|
}
|
||||||
|
}
|
||||||
await inventory.save();
|
await inventory.save();
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user