Mod upgrade - take 2
This commit is contained in:
parent
20658043dd
commit
0309e182c2
@ -13,8 +13,8 @@ const artifactsController: RequestHandler = async (req, res) => {
|
|||||||
const parsedData = JSON.parse(data);
|
const parsedData = JSON.parse(data);
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
||||||
await upgradeMod(parsedData, id);
|
const upgradeModId = await upgradeMod(parsedData, id);
|
||||||
res.json({});
|
res.send(upgradeModId);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error("Error parsing JSON data:", err);
|
console.error("Error parsing JSON data:", err);
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { Model, Schema, Types, model } from "mongoose";
|
import mongoose, { Model, Schema, Types, model } from "mongoose";
|
||||||
import { FlavourItem, RawUpgrade, MiscItem, IInventoryDatabase, Booster } from "../types/inventoryTypes/inventoryTypes";
|
import { FlavourItem, RawUpgrade, MiscItem, IInventoryDatabase, Booster } from "../types/inventoryTypes/inventoryTypes";
|
||||||
import { Oid } from "../types/commonTypes";
|
import { Oid } from "../types/commonTypes";
|
||||||
import { ISuitDatabase } from "@/src/types/inventoryTypes/SuitTypes";
|
import { ISuitDatabase } from "@/src/types/inventoryTypes/SuitTypes";
|
||||||
@ -75,7 +75,13 @@ const RawUpgrades = new Schema({
|
|||||||
ItemType: String,
|
ItemType: String,
|
||||||
UpgradeFingerprint: String,
|
UpgradeFingerprint: String,
|
||||||
PendingRerollFingerprint: String,
|
PendingRerollFingerprint: String,
|
||||||
ItemCount: Number
|
ItemCount: Number,
|
||||||
|
ItemId: {
|
||||||
|
$oid: mongoose.Schema.Types.ObjectId
|
||||||
|
},
|
||||||
|
LastAdded: {
|
||||||
|
$oid: mongoose.Schema.Types.ObjectId
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
RawUpgrades.set("toJSON", {
|
RawUpgrades.set("toJSON", {
|
||||||
|
@ -150,14 +150,16 @@ const addMods = (inventory: IInventoryDatabaseDocument, itemsArray: RawUpgrade[]
|
|||||||
const { RawUpgrades } = inventory;
|
const { RawUpgrades } = inventory;
|
||||||
itemsArray?.forEach(({ ItemType, ItemCount, UpgradeFingerprint }) => {
|
itemsArray?.forEach(({ ItemType, ItemCount, UpgradeFingerprint }) => {
|
||||||
const itemIndex = RawUpgrades.findIndex(
|
const itemIndex = RawUpgrades.findIndex(
|
||||||
i => i.ItemType === ItemType && i.UpgradeFingerprint === UpgradeFingerprint
|
i =>
|
||||||
|
i.ItemType === ItemType &&
|
||||||
|
(i.UpgradeFingerprint === UpgradeFingerprint || (!i.UpgradeFingerprint && !UpgradeFingerprint))
|
||||||
);
|
);
|
||||||
|
|
||||||
if (itemIndex !== -1) {
|
if (itemIndex !== -1) {
|
||||||
RawUpgrades[itemIndex].ItemCount += ItemCount;
|
RawUpgrades[itemIndex].ItemCount += ItemCount;
|
||||||
inventory.markModified(`RawUpgrades.${itemIndex}.ItemCount`);
|
inventory.markModified(`RawUpgrades.${itemIndex}.ItemCount`);
|
||||||
} else {
|
} else {
|
||||||
RawUpgrades.push({ ItemCount, ItemType });
|
RawUpgrades.push({ ItemCount, ItemType, UpgradeFingerprint });
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@ -228,36 +230,46 @@ export const upgradeMod = async (
|
|||||||
FusionPointCost
|
FusionPointCost
|
||||||
}: { Upgrade: RawUpgrade; LevelDiff: number; Cost: number; FusionPointCost: number },
|
}: { Upgrade: RawUpgrade; LevelDiff: number; Cost: number; FusionPointCost: number },
|
||||||
accountId: string
|
accountId: string
|
||||||
): Promise<void> => {
|
): Promise<string | undefined> => {
|
||||||
const inventory = await getInventory(accountId);
|
const inventory = await getInventory(accountId);
|
||||||
const { RawUpgrades } = inventory;
|
const { RawUpgrades } = inventory;
|
||||||
const { ItemCount, ItemType, UpgradeFingerprint } = Upgrade;
|
const { ItemCount, ItemType, UpgradeFingerprint } = Upgrade;
|
||||||
const itemIndex = RawUpgrades.findIndex(
|
const itemIndex = RawUpgrades.findIndex(
|
||||||
i => i.ItemType === ItemType && i.UpgradeFingerprint === UpgradeFingerprint
|
i =>
|
||||||
|
i.ItemType === ItemType &&
|
||||||
|
(i.UpgradeFingerprint === UpgradeFingerprint || (!i.UpgradeFingerprint && !UpgradeFingerprint))
|
||||||
);
|
);
|
||||||
|
|
||||||
|
console.log(itemIndex, ItemType, UpgradeFingerprint);
|
||||||
|
|
||||||
const safeUpgradeFingerprint = UpgradeFingerprint || '{"lvl":0}';
|
const safeUpgradeFingerprint = UpgradeFingerprint || '{"lvl":0}';
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
||||||
const parsedUpgradeFingerprint = JSON.parse(safeUpgradeFingerprint);
|
const parsedUpgradeFingerprint = JSON.parse(safeUpgradeFingerprint);
|
||||||
parsedUpgradeFingerprint.lvl += LevelDiff;
|
parsedUpgradeFingerprint.lvl += LevelDiff;
|
||||||
|
|
||||||
if (!ItemCount) return;
|
if (!ItemCount || itemIndex === -1) return;
|
||||||
|
|
||||||
RawUpgrades[itemIndex].ItemCount--;
|
RawUpgrades[itemIndex].UpgradeFingerprint = JSON.stringify(parsedUpgradeFingerprint);
|
||||||
|
|
||||||
if (RawUpgrades[itemIndex].ItemCount > 0) {
|
// RawUpgrades[itemIndex].ItemCount--;
|
||||||
inventory.markModified(`RawUpgrades.${itemIndex}.ItemCount`);
|
|
||||||
} else {
|
|
||||||
RawUpgrades.splice(itemIndex, 1);
|
|
||||||
inventory.markModified(`RawUpgrades`);
|
|
||||||
}
|
|
||||||
|
|
||||||
addMods(inventory, [{ ItemType, ItemCount: 1, UpgradeFingerprint: JSON.stringify(parsedUpgradeFingerprint) }]);
|
// if (RawUpgrades[itemIndex].ItemCount > 0) {
|
||||||
|
// inventory.markModified(`RawUpgrades.${itemIndex}.ItemCount`);
|
||||||
|
// } else {
|
||||||
|
// RawUpgrades.splice(itemIndex, 1);
|
||||||
|
// inventory.markModified(`RawUpgrades`);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// addMods(inventory, [{ ItemType, ItemCount: 1, UpgradeFingerprint: JSON.stringify(parsedUpgradeFingerprint) }]);
|
||||||
|
|
||||||
inventory.RegularCredits -= Cost;
|
inventory.RegularCredits -= Cost;
|
||||||
inventory.FusionPoints -= FusionPointCost;
|
inventory.FusionPoints -= FusionPointCost;
|
||||||
|
|
||||||
await inventory.save();
|
const changedInventory = await inventory.save();
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
||||||
|
return changedInventory.RawUpgrades[itemIndex]?.toJSON().ItemId.$oid;
|
||||||
|
|
||||||
|
// await inventory.save();
|
||||||
// {
|
// {
|
||||||
// "Upgrade": {
|
// "Upgrade": {
|
||||||
// ItemType: "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarShieldMaxModBeginner",
|
// ItemType: "/Lotus/Upgrades/Mods/Warframe/Beginner/AvatarShieldMaxModBeginner",
|
||||||
|
@ -925,9 +925,10 @@ export interface Progress {
|
|||||||
export interface RawUpgrade {
|
export interface RawUpgrade {
|
||||||
ItemType: string;
|
ItemType: string;
|
||||||
ItemCount: number;
|
ItemCount: number;
|
||||||
|
ItemId?: Oid;
|
||||||
|
LastAdded?: Oid;
|
||||||
UpgradeFingerprint?: string;
|
UpgradeFingerprint?: string;
|
||||||
PendingRerollFingerprint?: string;
|
PendingRerollFingerprint?: string;
|
||||||
LastAdded?: Oid;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface Scoop {
|
export interface Scoop {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user