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

chore: handle sale of fusion treasures (#2542)

Closes #2541 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/2542 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>

695dcf98
Sainan <63328889+Sainan@users.noreply.github.com>
提交于

代码差异

3 个文件 +21 -11
Modified src/controllers/api/fusionTreasuresController.ts +2 -10
@@ -2,22 +2,14 @@ import { RequestHandler } from "express";
2 2 import { ExportResources } from "warframe-public-export-plus";
3 3 import { getAccountIdForRequest } from "@/src/services/loginService";
4 4 import { addFusionTreasures, addMiscItems, getInventory } from "@/src/services/inventoryService";
5 import { IFusionTreasure, IMiscItem } from "@/src/types/inventoryTypes/inventoryTypes";
5 import { IMiscItem } from "@/src/types/inventoryTypes/inventoryTypes";
6 import { parseFusionTreasure } from "@/src/helpers/inventoryHelpers";
6 7
7 8 interface IFusionTreasureRequest {
8 9 oldTreasureName: string;
9 10 newTreasureName: string;
10 11 }
11 12
12 const parseFusionTreasure = (name: string, count: number): IFusionTreasure => {
13 const arr = name.split("_");
14 return {
15 ItemType: arr[0],
16 Sockets: parseInt(arr[1], 16),
17 ItemCount: count
18 };
19 };
20
21 13 export const fusionTreasuresController: RequestHandler = async (req, res) => {
22 14 const accountId = await getAccountIdForRequest(req);
23 15 const inventory = await getInventory(accountId);
Modified src/controllers/api/sellController.ts +9 -1
@@ -10,13 +10,15 @@ import {
10 10 combineInventoryChanges,
11 11 addCrewShipRawSalvage,
12 12 addFusionPoints,
13 addCrewShipFusionPoints
13 addCrewShipFusionPoints,
14 addFusionTreasures
14 15 } from "@/src/services/inventoryService";
15 16 import { InventorySlot } from "@/src/types/inventoryTypes/inventoryTypes";
16 17 import { ExportDojoRecipes } from "warframe-public-export-plus";
17 18 import { IInventoryChanges } from "@/src/types/purchaseTypes";
18 19 import { TInventoryDatabaseDocument } from "@/src/models/inventoryModels/inventoryModel";
19 20 import { sendWsBroadcastEx } from "@/src/services/wsService";
21 import { parseFusionTreasure } from "@/src/helpers/inventoryHelpers";
20 22
21 23 export const sellController: RequestHandler = async (req, res) => {
22 24 const payload = JSON.parse(String(req.body)) as ISellRequest;
@@ -295,6 +297,11 @@ export const sellController: RequestHandler = async (req, res) => {
295 297 ]);
296 298 });
297 299 }
300 if (payload.Items.FusionTreasures) {
301 payload.Items.FusionTreasures.forEach(sellItem => {
302 addFusionTreasures(inventory, [parseFusionTreasure(sellItem.String, sellItem.Count * -1)]);
303 });
304 }
298 305
299 306 await inventory.save();
300 307 res.json({
@@ -327,6 +334,7 @@ interface ISellRequest {
327 334 CrewMembers?: ISellItem[];
328 335 CrewShipWeapons?: ISellItem[];
329 336 CrewShipWeaponSkins?: ISellItem[];
337 FusionTreasures?: ISellItem[];
330 338 };
331 339 SellPrice: number;
332 340 SellCurrency:
Modified src/helpers/inventoryHelpers.ts +10 -0
@@ -1,6 +1,7 @@
1 1 import { IMongoDate, IOid, IOidWithLegacySupport } from "@/src/types/commonTypes";
2 2 import { Types } from "mongoose";
3 3 import { TRarity } from "warframe-public-export-plus";
4 import { IFusionTreasure } from "@/src/types/inventoryTypes/inventoryTypes";
4 5
5 6 export const version_compare = (a: string, b: string): number => {
6 7 const a_digits = a
@@ -51,6 +52,15 @@ export const fromMongoDate = (date: IMongoDate): Date => {
51 52 return new Date(parseInt(date.$date.$numberLong));
52 53 };
53 54
55 export const parseFusionTreasure = (name: string, count: number): IFusionTreasure => {
56 const arr = name.split("_");
57 return {
58 ItemType: arr[0],
59 Sockets: parseInt(arr[1], 16),
60 ItemCount: count
61 };
62 };
63
54 64 export type TTraitsPool = Record<
55 65 "Colors" | "EyeColors" | "FurPatterns" | "BodyTypes" | "Heads" | "Tails",
56 66 { type: string; rarity: TRarity }[]