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: handle dojoComponentRush get request (#4210)

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

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

代码差异

2 个文件 +33 -10
Modified src/controllers/api/dojoComponentRushController.ts +30 -8
@@ -9,11 +9,22 @@ import {
9 9 import { getInventory2, updatePlatinum } from "../../services/inventoryService.ts";
10 10 import { getAccountForRequest, getBuildLabel } from "../../services/loginService.ts";
11 11 import type { IDojoContributable } from "../../types/guildTypes.ts";
12 import type { RequestHandler } from "express";
12 import type { RequestHandler, Request, Response } from "express";
13 13 import type { IDojoBuild } from "warframe-public-export-plus";
14 14 import { ExportDojoRecipes } from "warframe-public-export-plus";
15 15
16 type IDojoComponentRushRequest =
16 export const dojoComponentRushGetController: RequestHandler = (req, res) => {
17 return processDojoComponentRush(
18 req,
19 res,
20 req.query.componentId as string,
21 req.query.decoId as string | undefined,
22 parseInt(req.query.contributionAmount as string),
23 parseInt(req.query.vaultContributionAmount as string)
24 );
25 };
26
27 type IDojoComponentRushPostRequest =
17 28 | {
18 29 DecoType?: string;
19 30 DecoId?: string;
@@ -29,7 +40,22 @@ type IDojoComponentRushRequest =
29 40 vaultAmount: number;
30 41 };
31 42
32 export const dojoComponentRushController: RequestHandler = async (req, res) => {
43 export const dojoComponentRushPostController: RequestHandler = (req, res) => {
44 const request = JSON.parse(String(req.body)) as IDojoComponentRushPostRequest;
45 return "ComponentId" in request
46 ? processDojoComponentRush(req, res, request.ComponentId, request.DecoId, request.Amount, request.VaultAmount)
47 : processDojoComponentRush(req, res, request.componentId, request.decoId, request.amount, request.vaultAmount);
48 };
49
50 // TODO: Contributions from alliance vault?
51 const processDojoComponentRush = async (
52 req: Request,
53 res: Response,
54 componentId: string,
55 decoId: string | undefined,
56 amount: number,
57 vaultAmount: number
58 ): Promise<void> => {
33 59 const account = await getAccountForRequest(req);
34 60 const inventory = await getInventory2(
35 61 account._id,
@@ -44,20 +70,16 @@ export const dojoComponentRushController: RequestHandler = async (req, res) => {
44 70 return;
45 71 }
46 72 const guild = await getGuildForRequestEx(req, inventory);
47 const request = JSON.parse(String(req.body)) as IDojoComponentRushRequest;
48 const component = guild.DojoComponents.id("ComponentId" in request ? request.ComponentId : request.componentId)!;
73 const component = guild.DojoComponents.id(componentId)!;
49 74
50 const amount = "Amount" in request ? request.Amount : request.amount;
51 75 let platinumDonated = amount;
52 76 const inventoryChanges = updatePlatinum(inventory, amount);
53 77
54 const vaultAmount = "VaultAmount" in request ? request.VaultAmount : request.vaultAmount;
55 78 if (vaultAmount) {
56 79 platinumDonated += vaultAmount;
57 80 guild.VaultPremiumCredits! -= vaultAmount;
58 81 }
59 82
60 const decoId = "DecoId" in request ? request.DecoId : "decoId" in request ? request.decoId : undefined;
61 83 if (decoId) {
62 84 const deco = component.Decos!.find(x => x._id.equals(decoId))!;
63 85 const meta = Object.values(ExportDojoRecipes.decos).find(x => x.resultType == deco.Type)!;
Modified src/routes/api.ts +3 -2
@@ -52,7 +52,7 @@ import { deleteSessionController } from "../controllers/api/deleteSessionControl
52 52 import { descentRewardsController } from "../controllers/api/descentRewardsController.ts";
53 53 import { destroyDojoDecoController } from "../controllers/api/destroyDojoDecoController.ts";
54 54 import { divvyAllianceVaultController } from "../controllers/api/divvyAllianceVaultController.ts";
55 import { dojoComponentRushController } from "../controllers/api/dojoComponentRushController.ts";
55 import { dojoComponentRushGetController, dojoComponentRushPostController } from "../controllers/api/dojoComponentRushController.ts";
56 56 import { dronesController } from "../controllers/api/dronesController.ts";
57 57 import { endlessXpController } from "../controllers/api/endlessXpController.ts";
58 58 import { entratiLabConquestModeController } from "../controllers/api/entratiLabConquestModeController.ts";
@@ -218,6 +218,7 @@ apiRouter.get("/declineAllianceInvite.php", declineAllianceInviteController);
218 218 apiRouter.get("/declineGuildInvite.php", declineGuildInviteController);
219 219 apiRouter.get("/deleteSession.php", deleteSessionController);
220 220 apiRouter.get("/divvyAllianceVault.php", divvyAllianceVaultController);
221 apiRouter.get("/dojoComponentRush.php", dojoComponentRushGetController); // ~U9
221 222 apiRouter.get("/drones.php", dronesController);
222 223 apiRouter.get("/getAccountId.php", getAccountIdGetController); // U11
223 224 apiRouter.get("/getAlliance.php", getAllianceController);
@@ -312,7 +313,7 @@ apiRouter.post("/customizeGuildRanks.php", customizeGuildRanksController);
312 313 apiRouter.post("/customObstacleCourseLeaderboard.php", customObstacleCourseLeaderboardController);
313 314 apiRouter.post("/descentRewards.php", descentRewardsController);
314 315 apiRouter.post("/destroyDojoDeco.php", destroyDojoDecoController);
315 apiRouter.post("/dojoComponentRush.php", dojoComponentRushController);
316 apiRouter.post("/dojoComponentRush.php", dojoComponentRushPostController);
316 317 apiRouter.post("/drones.php", dronesController);
317 318 apiRouter.post("/endlessXp.php", endlessXpController);
318 319 apiRouter.post("/entratiLabConquestMode.php", entratiLabConquestModeController);