XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

SpaceNinjaServer

A simple server for a small space ninja game

公开
关注 0 Fork 1 Star 0
返回提交历史

XFEstudio/SpaceNinjaServer

fix: adjust mission update controller to add xp when aborting mission(#864)

57061073
OrdisPrime <134585663+OrdisPrime@users.noreply.github.com>
提交于

代码差异

3 个文件 +15 -24
Modified src/controllers/api/missionInventoryUpdateController.ts +8 -17
@@ -8,7 +8,7 @@ import {
8 8 calculateFinalCredits
9 9 } from "@/src/services/missionInventoryUpdateService";
10 10 import { getInventory } from "@/src/services/inventoryService";
11 import { logger } from "@/src/utils/logger";
11
12 12 /*
13 13 **** INPUT ****
14 14 - [ ] crossPlaySetting
@@ -52,32 +52,23 @@ import { logger } from "@/src/utils/logger";
52 52 // eslint-disable-next-line @typescript-eslint/no-misused-promises
53 53 export const missionInventoryUpdateController: RequestHandler = async (req, res): Promise<void> => {
54 54 const accountId = await getAccountIdForRequest(req);
55
56 55 const missionReport = getJSONfromString<IMissionInventoryUpdateRequest>((req.body as string).toString());
57 56
57 const inventory = await getInventory(accountId);
58 const inventoryUpdates = addMissionInventoryUpdates(inventory, missionReport);
59
58 60 if (missionReport.MissionStatus !== "GS_SUCCESS") {
59 logger.debug(`Mission failed: ${missionReport.RewardInfo?.node}`);
60 //todo: return expected response for failed mission
61 res.json([]);
61 const InventoryJson = JSON.stringify((await inventory.save()).toJSON());
62
63 res.json({ InventoryJson, MissionRewards: [] });
62 64 return;
63 //duvirisadjob does not provide missionStatus
64 65 }
65
66 const inventory = await getInventory(accountId);
67
68 66 const missionRewardsResults = await addMissionRewards(inventory, missionReport);
69
70 67 if (!missionRewardsResults) {
71 logger.error("Failed to add mission rewards");
72 res.status(500).json({ error: "Failed to add mission rewards" });
73 return;
68 throw new Error("Failed to add mission rewards, should not happen");
74 69 }
75
76 70 const { MissionRewards, inventoryChanges, missionCompletionCredits } = missionRewardsResults;
77 71
78 const inventoryUpdates = addMissionInventoryUpdates(inventory, missionReport);
79
80 //todo ? can go after not awaiting
81 72 //creditBonus is not correct for mirage mission 3
82 73 const credits = calculateFinalCredits(inventory, {
83 74 missionCompletionCredits,
Modified src/services/missionInventoryUpdateService.ts +2 -7
@@ -21,6 +21,7 @@ import { HydratedDocument } from "mongoose";
21 21 import { IInventoryChanges } from "@/src/types/purchaseTypes";
22 22 import { getLevelKeyRewards, getNode } from "@/src/services/itemDataService";
23 23 import { InventoryDocumentProps, TInventoryDatabaseDocument } from "@/src/models/inventoryModels/inventoryModel";
24 import { getEntriesUnsafe } from "@/src/utils/ts-utils";
24 25
25 26 const getRotations = (rotationCount: number): number[] => {
26 27 if (rotationCount === 0) return [0];
@@ -64,12 +65,6 @@ export const fusionBundles: Record<string, number> = {
64 65 "/Lotus/Upgrades/Mods/FusionBundles/RareFusionBundle": 80
65 66 };
66 67
67 type Entries<T, K extends keyof T = keyof T> = (K extends unknown ? [K, T[K]] : never)[];
68
69 function getEntriesUnsafe<T extends object>(object: T): Entries<T> {
70 return Object.entries(object) as Entries<T>;
71 }
72
73 68 //type TMissionInventoryUpdateKeys = keyof IMissionInventoryUpdateRequest;
74 69 //const ignoredInventoryUpdateKeys = ["FpsAvg", "FpsMax", "FpsMin", "FpsSamples"] satisfies TMissionInventoryUpdateKeys[]; // for keys with no meaning for this server
75 70 //type TignoredInventoryUpdateKeys = (typeof ignoredInventoryUpdateKeys)[number];
@@ -185,7 +180,7 @@ export const addMissionRewards = async (
185 180 { RewardInfo: rewardInfo, LevelKeyName: levelKeyName, Missions: missions }: IMissionInventoryUpdateRequest
186 181 ) => {
187 182 if (!rewardInfo) {
188 logger.error("no reward info provided");
183 logger.warn("no reward info provided");
189 184 return;
190 185 }
191 186
Added src/utils/ts-utils.ts +5 -0
@@ -0,0 +1,5 @@
1 type Entries<T, K extends keyof T = keyof T> = (K extends unknown ? [K, T[K]] : never)[];
2
3 export function getEntriesUnsafe<T extends object>(object: T): Entries<T> {
4 return Object.entries(object) as Entries<T>;
5 }