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: provide ProcessedWeeklyMissionChallengeInfos when applicable (#4427)

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

415de944
Sainan <63328889+Sainan@users.noreply.github.com>
提交于

代码差异

3 个文件 +44 -19
Modified src/controllers/api/missionInventoryUpdateController.ts +8 -2
@@ -7,7 +7,11 @@ import {
7 7 addMissionRewards,
8 8 handleConservation
9 9 } from "../../services/missionInventoryUpdateService.ts";
10 import { dispatchPendingPremiumCredits, getInventory } from "../../services/inventoryService.ts";
10 import {
11 combineInventoryChanges,
12 dispatchPendingPremiumCredits,
13 getInventory
14 } from "../../services/inventoryService.ts";
11 15 import { getInventoryResponse } from "./inventoryController.ts";
12 16 import { logger } from "../../utils/logger.ts";
13 17 import type {
@@ -125,8 +129,10 @@ export const missionInventoryUpdateController: RequestHandler = async (req, res)
125 129 }
126 130
127 131 //TODO: figure out when to send inventory. it is needed for many cases.
132 if (inventoryChanges) {
133 combineInventoryChanges(inventoryUpdates.InventoryChanges, inventoryChanges);
134 }
128 135 const deltas: IMissionInventoryUpdateResponseRailjackInterstitial = {
129 InventoryChanges: inventoryChanges,
130 136 MissionRewards,
131 137 ...credits,
132 138 ...inventoryUpdates,
Modified src/controllers/api/updateChallengeProgressController.ts +15 -9
@@ -17,16 +17,18 @@ export const updateChallengeProgressController: RequestHandler = async (req, res
17 17 logger.debug(`challenge report:`, challenges);
18 18
19 19 const inventory = await getInventory(account._id, undefined); // Challenge completion can give any item in theory
20 let affiliationMods: IAffiliationMods[] = [];
21 const inventoryChanges: IInventoryChanges = {};
20 const response: IUpdateChallengeProgressResponse = {
21 AffiliationMods: [],
22 InventoryChanges: {}
23 };
22 24 if (challenges.ChallengeProgress) {
23 25 const buildLabel = getBuildLabel(req, account);
24 affiliationMods = await addChallenges(
26 response.AffiliationMods = await addChallenges(
25 27 buildLabel,
26 28 inventory,
27 29 challenges.ChallengeProgress,
28 30 challenges.SeasonChallengeCompletions,
29 inventoryChanges
31 response.InventoryChanges
30 32 );
31 33 }
32 34 for (const [key, value] of getEntriesUnsafe(challenges)) {
@@ -55,7 +57,8 @@ export const updateChallengeProgressController: RequestHandler = async (req, res
55 57 break;
56 58
57 59 case "WeeklyMissionChallengeInfo":
58 addKahlProgress(inventory, value, inventoryChanges);
60 addKahlProgress(inventory, value, response.InventoryChanges);
61 response.ProcessedWeeklyMissionChallengeInfos = value;
59 62 break;
60 63
61 64 case "ChallengeProgress":
@@ -69,10 +72,7 @@ export const updateChallengeProgressController: RequestHandler = async (req, res
69 72 }
70 73 await inventory.save();
71 74
72 res.json({
73 AffiliationMods: affiliationMods,
74 InventoryChanges: inventoryChanges // U41+
75 });
75 res.json(response);
76 76 };
77 77
78 78 interface IUpdateChallengeProgressRequest {
@@ -85,3 +85,9 @@ interface IUpdateChallengeProgressRequest {
85 85 WeeklyMissionChallengeInfo?: IWeeklyMissionChallengeInfo[];
86 86 crossPlaySetting?: string;
87 87 }
88
89 interface IUpdateChallengeProgressResponse {
90 AffiliationMods: IAffiliationMods[];
91 InventoryChanges: IInventoryChanges; // U41+
92 ProcessedWeeklyMissionChallengeInfos?: IWeeklyMissionChallengeInfo[];
93 }
Modified src/services/missionInventoryUpdateService.ts +21 -8
@@ -18,7 +18,12 @@ import type { IMissionInventoryUpdateRequest, IRewardInfo } from "../types/reque
18 18 import { logger } from "../utils/logger.ts";
19 19 import type { IRngResult } from "./rngService.ts";
20 20 import { SRng, generateRewardSeed, getRandomElement, getRandomInt, getRandomReward } from "./rngService.ts";
21 import type { IDailyAffiliations, IMission, TEquipmentKey } from "../types/inventoryTypes/inventoryTypes.ts";
21 import type {
22 IDailyAffiliations,
23 IMission,
24 IWeeklyMissionChallengeInfo,
25 TEquipmentKey
26 } from "../types/inventoryTypes/inventoryTypes.ts";
22 27 import { equipmentKeys } from "../types/inventoryTypes/inventoryTypes.ts";
23 28 import {
24 29 addBooster,
@@ -227,13 +232,20 @@ const getRandomRewardByChance = (pool: IReward[], rng?: SRng): IRngResult | unde
227 232 //type TignoredInventoryUpdateKeys = (typeof ignoredInventoryUpdateKeys)[number];
228 233 //const knownUnhandledKeys: readonly string[] = ["test"] as const; // for unimplemented but important keys
229 234
235 interface MissionInventoryUpdatesReturnType {
236 InventoryChanges: IInventoryChanges;
237 ProcessedWeeklyMissionChallengeInfos?: IWeeklyMissionChallengeInfo[];
238 }
239
230 240 export const addMissionInventoryUpdates = async (
231 241 account: TAccountDocument,
232 242 buildLabel: string,
233 243 inventory: TInventoryDatabaseDocument,
234 244 inventoryUpdates: IMissionInventoryUpdateRequest
235 ): Promise<IInventoryChanges> => {
236 const inventoryChanges: IInventoryChanges = {};
245 ): Promise<MissionInventoryUpdatesReturnType> => {
246 const ret: MissionInventoryUpdatesReturnType = {
247 InventoryChanges: {}
248 };
237 249 if (inventoryUpdates.Missions && inventoryUpdates.EndOfMatchUpload) {
238 250 const node = await getRegion(inventoryUpdates.Missions.Tag, buildLabel);
239 251 if (
@@ -455,7 +467,7 @@ export const addMissionInventoryUpdates = async (
455 467 inventory,
456 468 value,
457 469 inventoryUpdates.SeasonChallengeCompletions,
458 inventoryChanges
470 ret.InventoryChanges
459 471 );
460 472 break;
461 473 case "FusionTreasures":
@@ -500,7 +512,7 @@ export const addMissionInventoryUpdates = async (
500 512 ExportFusionBundles[fusionBundle.ItemType].fusionPoints * fusionBundle.ItemCount
501 513 );
502 514 }
503 inventoryChanges.FusionPoints = fusionPointsDelta;
515 ret.InventoryChanges.FusionPoints = fusionPointsDelta;
504 516 break;
505 517 }
506 518 case "EmailItems": {
@@ -764,7 +776,7 @@ export const addMissionInventoryUpdates = async (
764 776 }
765 777 case "creditsFee": {
766 778 if (!inventory.noNodeEntryFees) {
767 updateCurrency(inventory, value, CurrencyType.CREDITS, inventoryChanges);
779 updateCurrency(inventory, value, CurrencyType.CREDITS, ret.InventoryChanges);
768 780 }
769 781 break;
770 782 }
@@ -833,7 +845,8 @@ export const addMissionInventoryUpdates = async (
833 845 break;
834 846 }
835 847 case "WeeklyMissionChallengeInfo": {
836 addKahlProgress(inventory, value, inventoryChanges);
848 addKahlProgress(inventory, value, ret.InventoryChanges);
849 ret.ProcessedWeeklyMissionChallengeInfos = value;
837 850 break;
838 851 }
839 852 case "duviriCaveOffers": {
@@ -995,7 +1008,7 @@ export const addMissionInventoryUpdates = async (
995 1008 }
996 1009 }
997 1010
998 return inventoryChanges;
1011 return ret;
999 1012 };
1000 1013
1001 1014 interface AddMissionRewardsReturnType {