返回提交历史
Added
src/controllers/api/giveShipDecoAndLoreFragmentController.ts
+20
-0
Modified
src/routes/api.ts
+2
-0
Modified
src/services/inventoryService.ts
+13
-1
Modified
src/services/missionInventoryUpdateService.ts
+2
-8
XFEstudio/SpaceNinjaServer
feat: picking up prex cards (#1634)
Closes #1621 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/1634 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
0c884576
代码差异
4 个文件
+37
-9
@@ -0,0 +1,20 @@
1
import { getJSONfromString } from "@/src/helpers/stringHelpers";
2
import { addLoreFragmentScans, addShipDecorations, getInventory } from "@/src/services/inventoryService";
3
import { getAccountIdForRequest } from "@/src/services/loginService";
4
import { ILoreFragmentScan, ITypeCount } from "@/src/types/inventoryTypes/inventoryTypes";
5
import { RequestHandler } from "express";
6
7
export const giveShipDecoAndLoreFragmentController: RequestHandler = async (req, res) => {
8
const accountId = await getAccountIdForRequest(req);
9
const inventory = await getInventory(accountId, "LoreFragmentScans ShipDecorations");
10
const data = getJSONfromString<IGiveShipDecoAndLoreFragmentRequest>(String(req.body));
11
addLoreFragmentScans(inventory, data.LoreFragmentScans);
12
addShipDecorations(inventory, data.ShipDecorations);
13
await inventory.save();
14
res.end();
15
};
16
17
interface IGiveShipDecoAndLoreFragmentRequest {
18
LoreFragmentScans: ILoreFragmentScan[];
19
ShipDecorations: ITypeCount[];
20
}
@@ -62,6 +62,7 @@ import { gildWeaponController } from "@/src/controllers/api/gildWeaponController
62
62
import { giveKeyChainTriggeredItemsController } from "@/src/controllers/api/giveKeyChainTriggeredItemsController";
63
63
import { giveKeyChainTriggeredMessageController } from "@/src/controllers/api/giveKeyChainTriggeredMessageController";
64
64
import { giveQuestKeyRewardController } from "@/src/controllers/api/giveQuestKey";
65
import { giveShipDecoAndLoreFragmentController } from "@/src/controllers/api/giveShipDecoAndLoreFragmentController";
65
66
import { giveStartingGearController } from "@/src/controllers/api/giveStartingGearController";
66
67
import { guildTechController } from "@/src/controllers/api/guildTechController";
67
68
import { hostSessionController } from "@/src/controllers/api/hostSessionController";
@@ -239,6 +240,7 @@ apiRouter.post("/gildWeapon.php", gildWeaponController);
239
240
apiRouter.post("/giveKeyChainTriggeredItems.php", giveKeyChainTriggeredItemsController);
240
241
apiRouter.post("/giveKeyChainTriggeredMessage.php", giveKeyChainTriggeredMessageController);
241
242
apiRouter.post("/giveQuestKeyReward.php", giveQuestKeyRewardController);
243
apiRouter.post("/giveShipDecoAndLoreFragment.php", giveShipDecoAndLoreFragmentController);
242
244
apiRouter.post("/giveStartingGear.php", giveStartingGearController);
243
245
apiRouter.post("/guildTech.php", guildTechController);
244
246
apiRouter.post("/hostSession.php", hostSessionController);
@@ -21,7 +21,8 @@ import {
21
21
ICalendarProgress,
22
22
IDroneClient,
23
23
IUpgradeClient,
24
TPartialStartingGear
24
TPartialStartingGear,
25
ILoreFragmentScan
25
26
} from "@/src/types/inventoryTypes/inventoryTypes";
26
27
import { IGenericUpdate, IUpdateNodeIntrosResponse } from "../types/genericUpdate";
27
28
import { IKeyChainRequest, IMissionInventoryUpdateRequest } from "../types/requestTypes";
@@ -1350,6 +1351,17 @@ export const addFocusXpIncreases = (inventory: TInventoryDatabaseDocument, focus
1350
1351
inventory.DailyFocus -= focusXpPlus.reduce((a, b) => a + b, 0);
1351
1352
};
1352
1353
1354
export const addLoreFragmentScans = (inventory: TInventoryDatabaseDocument, arr: ILoreFragmentScan[]): void => {
1355
arr.forEach(clientFragment => {
1356
const fragment = inventory.LoreFragmentScans.find(x => x.ItemType == clientFragment.ItemType);
1357
if (fragment) {
1358
fragment.Progress += clientFragment.Progress;
1359
} else {
1360
inventory.LoreFragmentScans.push(clientFragment);
1361
}
1362
});
1363
};
1364
1353
1365
export const addChallenges = (
1354
1366
inventory: TInventoryDatabaseDocument,
1355
1367
ChallengeProgress: IChallengeProgress[],
@@ -23,6 +23,7 @@ import {
23
23
addGearExpByCategory,
24
24
addItem,
25
25
addLevelKeys,
26
addLoreFragmentScans,
26
27
addMiscItems,
27
28
addMissionComplete,
28
29
addMods,
@@ -291,14 +292,7 @@ export const addMissionInventoryUpdates = async (
291
292
break;
292
293
}
293
294
case "LoreFragmentScans":
294
value.forEach(clientFragment => {
295
const fragment = inventory.LoreFragmentScans.find(x => x.ItemType == clientFragment.ItemType);
296
if (fragment) {
297
fragment.Progress += clientFragment.Progress;
298
} else {
299
inventory.LoreFragmentScans.push(clientFragment);
300
}
301
});
295
addLoreFragmentScans(inventory, value);
302
296
break;
303
297
case "LibraryScans":
304
298
value.forEach(scan => {