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

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
Sainan <63328889+Sainan@users.noreply.github.com>
提交于

代码差异

4 个文件 +37 -9
Added src/controllers/api/giveShipDecoAndLoreFragmentController.ts +20 -0
@@ -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 }
Modified src/routes/api.ts +2 -0
@@ -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);
Modified src/services/inventoryService.ts +13 -1
@@ -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[],
Modified src/services/missionInventoryUpdateService.ts +2 -8
@@ -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 => {