返回提交历史
Modified
src/controllers/api/focusController.ts
+37
-35
XFEstudio/SpaceNinjaServer
feat: handle focus upgrade/update requests from U18.5 (#4113)
Closes #4111 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/4113 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
a4b17489
代码差异
1 个文件
+37
-35
@@ -253,23 +253,18 @@ export const focusController: RequestHandler = async (req, res) => {
253
253
}
254
254
break;
255
255
}
256
case "LevelUpUpgrade":
257
case "UpdateUpgrade": {
258
if (focusVersion > 1) {
259
const request = JSON.parse(String(req.body)) as ILevelUpUpgrade2Request;
256
case "LevelUpUpgrade": {
257
const request = JSON.parse(String(req.body)) as ILevelUpUpgrade2Request | ILevelUpUpgrade1Request;
258
const inventory = await getInventory2(account._id, "FocusUpgrades", "FocusXP");
259
if ("FocusInfos" in request) {
260
260
const focusPolarity = focusTypeToPolarity(request.FocusInfos[0].ItemType);
261
const inventory = await getInventory2(account._id, "FocusUpgrades", "FocusXP");
262
261
let cost = 0;
263
262
for (const focusUpgrade of request.FocusInfos) {
264
263
cost += focusUpgrade.FocusXpCost;
265
264
const focusUpgradeDb = inventory.FocusUpgrades.find(
266
265
entry => entry.ItemType == focusUpgrade.ItemType
267
266
)!;
268
if (op == "UpdateUpgrade") {
269
focusUpgradeDb.IsActive = focusUpgrade.IsActive;
270
} else {
271
focusUpgradeDb.Level = focusUpgrade.Level;
272
}
267
focusUpgradeDb.Level = focusUpgrade.Level;
273
268
}
274
269
inventory.FocusXP![focusPolarity]! -= cost;
275
270
await inventory.save();
@@ -278,29 +273,38 @@ export const focusController: RequestHandler = async (req, res) => {
278
273
FocusPointCosts: { [focusPolarity]: cost }
279
274
});
280
275
} else {
281
if (op == "LevelUpUpgrade") {
282
const request = JSON.parse(String(req.body)) as ILevelUpUpgrade1Request;
283
const focusPolarity = focusTypeToPolarity(request.FocusType);
284
const inventory = await getInventory2(account._id, "FocusUpgrades", "FocusXP");
285
inventory.FocusUpgrades.find(x => x.ItemType == request.FocusType)!.Level = request.NewLvl;
286
inventory.FocusXP![focusPolarity]! -= request.XPCost;
287
await inventory.save();
288
res.json({
289
FocusUpgrade: {
290
ItemType: request.FocusType,
291
Level: request.NewLvl
292
},
293
FocusPointCosts: { [focusPolarity]: request.XPCost }
294
});
295
} else {
296
const request = JSON.parse(String(req.body)) as IUpdateUpgrade1Request;
297
const inventory = await getInventory2(account._id, "FocusUpgrades");
298
for (const focusType of request.FocusTypes) {
299
inventory.FocusUpgrades.find(x => x.ItemType == focusType)!.IsActive = request.ActivateUpgrade;
300
}
301
await inventory.save();
302
res.json(request);
276
const focusPolarity = focusTypeToPolarity(request.FocusType);
277
inventory.FocusUpgrades.find(x => x.ItemType == request.FocusType)!.Level = request.NewLvl;
278
inventory.FocusXP![focusPolarity]! -= request.XPCost;
279
await inventory.save();
280
res.json({
281
FocusUpgrade: {
282
ItemType: request.FocusType,
283
Level: request.NewLvl
284
},
285
FocusPointCosts: { [focusPolarity]: request.XPCost }
286
});
287
}
288
break;
289
}
290
case "UpdateUpgrade": {
291
const request = JSON.parse(String(req.body)) as ILevelUpUpgrade2Request | IUpdateUpgrade1Request;
292
const inventory = await getInventory2(account._id, "FocusUpgrades");
293
if ("FocusInfos" in request) {
294
for (const focusUpgrade of request.FocusInfos) {
295
const focusUpgradeDb = inventory.FocusUpgrades.find(
296
entry => entry.ItemType == focusUpgrade.ItemType
297
)!;
298
focusUpgradeDb.IsActive = focusUpgrade.IsActive;
303
299
}
300
await inventory.save();
301
res.json({ FocusInfos: request.FocusInfos });
302
} else {
303
for (const focusType of request.FocusTypes) {
304
inventory.FocusUpgrades.find(x => x.ItemType == focusType)!.IsActive = request.ActivateUpgrade;
305
}
306
await inventory.save();
307
res.json(request);
304
308
}
305
309
break;
306
310
}
@@ -494,7 +498,7 @@ interface IIncreasePool1Request {
494
498
XPCost: number;
495
499
}
496
500
497
// Focus 2.0 & Focus 3.0
501
// Format changed in U18.5, maybe earlier
498
502
interface ILevelUpUpgrade2Request {
499
503
FocusInfos: {
500
504
ItemType: string;
@@ -505,8 +509,6 @@ interface ILevelUpUpgrade2Request {
505
509
IsActive?: number; // Focus 2.0
506
510
}[];
507
511
}
508
509
// Focus 1.0
510
512
interface ILevelUpUpgrade1Request {
511
513
FocusType: string;
512
514
XPCost: number;