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: improve typing of IFocusXp (#2182)

Any given focus school can be undefined in this object due to importing. Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/2182 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>

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

代码差异

3 个文件 +34 -17
Modified src/controllers/api/focusController.ts +8 -6
@@ -43,7 +43,7 @@ export const focusController: RequestHandler = async (req, res) => {
43 43 inventory.FocusAbility ??= focusType;
44 44 inventory.FocusUpgrades.push({ ItemType: focusType });
45 45 if (inventory.FocusXP) {
46 inventory.FocusXP[focusPolarity] -= cost;
46 inventory.FocusXP[focusPolarity]! -= cost;
47 47 }
48 48 await inventory.save();
49 49 res.json({
@@ -78,7 +78,7 @@ export const focusController: RequestHandler = async (req, res) => {
78 78 cost += ExportFocusUpgrades[focusType].baseFocusPointCost;
79 79 inventory.FocusUpgrades.push({ ItemType: focusType, Level: 0 });
80 80 }
81 inventory.FocusXP![focusPolarity] -= cost;
81 inventory.FocusXP![focusPolarity]! -= cost;
82 82 await inventory.save();
83 83 res.json({
84 84 FocusTypes: request.FocusTypes,
@@ -96,7 +96,7 @@ export const focusController: RequestHandler = async (req, res) => {
96 96 const focusUpgradeDb = inventory.FocusUpgrades.find(entry => entry.ItemType == focusUpgrade.ItemType)!;
97 97 focusUpgradeDb.Level = focusUpgrade.Level;
98 98 }
99 inventory.FocusXP![focusPolarity] -= cost;
99 inventory.FocusXP![focusPolarity]! -= cost;
100 100 await inventory.save();
101 101 res.json({
102 102 FocusInfos: request.FocusInfos,
@@ -123,7 +123,7 @@ export const focusController: RequestHandler = async (req, res) => {
123 123 const request = JSON.parse(String(req.body)) as IUnbindUpgradeRequest;
124 124 const focusPolarity = focusTypeToPolarity(request.FocusTypes[0]);
125 125 const inventory = await getInventory(accountId);
126 inventory.FocusXP![focusPolarity] -= 750_000 * request.FocusTypes.length;
126 inventory.FocusXP![focusPolarity]! -= 750_000 * request.FocusTypes.length;
127 127 addMiscItems(inventory, [
128 128 {
129 129 ItemType: "/Lotus/Types/Gameplay/Eidolon/Resources/SentientShards/SentientShardBrilliantItem",
@@ -168,8 +168,10 @@ export const focusController: RequestHandler = async (req, res) => {
168 168 shard.ItemCount *= -1;
169 169 }
170 170 const inventory = await getInventory(accountId);
171 inventory.FocusXP ??= { AP_POWER: 0, AP_TACTIC: 0, AP_DEFENSE: 0, AP_ATTACK: 0, AP_WARD: 0 };
172 inventory.FocusXP[request.Polarity] += xp;
171 const polarity = request.Polarity;
172 inventory.FocusXP ??= {};
173 inventory.FocusXP[polarity] ??= 0;
174 inventory.FocusXP[polarity] += xp;
173 175 addMiscItems(inventory, request.Shards);
174 176 await inventory.save();
175 177 break;
Modified src/services/inventoryService.ts +21 -6
@@ -1731,12 +1731,27 @@ export const addFocusXpIncreases = (inventory: TInventoryDatabaseDocument, focus
1731 1731 AP_ANY
1732 1732 }
1733 1733
1734 inventory.FocusXP ??= { AP_ATTACK: 0, AP_DEFENSE: 0, AP_TACTIC: 0, AP_POWER: 0, AP_WARD: 0 };
1735 inventory.FocusXP.AP_ATTACK += focusXpPlus[FocusType.AP_ATTACK];
1736 inventory.FocusXP.AP_DEFENSE += focusXpPlus[FocusType.AP_DEFENSE];
1737 inventory.FocusXP.AP_TACTIC += focusXpPlus[FocusType.AP_TACTIC];
1738 inventory.FocusXP.AP_POWER += focusXpPlus[FocusType.AP_POWER];
1739 inventory.FocusXP.AP_WARD += focusXpPlus[FocusType.AP_WARD];
1734 inventory.FocusXP ??= {};
1735 if (focusXpPlus[FocusType.AP_ATTACK]) {
1736 inventory.FocusXP.AP_ATTACK ??= 0;
1737 inventory.FocusXP.AP_ATTACK += focusXpPlus[FocusType.AP_ATTACK];
1738 }
1739 if (focusXpPlus[FocusType.AP_DEFENSE]) {
1740 inventory.FocusXP.AP_DEFENSE ??= 0;
1741 inventory.FocusXP.AP_DEFENSE += focusXpPlus[FocusType.AP_DEFENSE];
1742 }
1743 if (focusXpPlus[FocusType.AP_TACTIC]) {
1744 inventory.FocusXP.AP_TACTIC ??= 0;
1745 inventory.FocusXP.AP_TACTIC += focusXpPlus[FocusType.AP_TACTIC];
1746 }
1747 if (focusXpPlus[FocusType.AP_POWER]) {
1748 inventory.FocusXP.AP_POWER ??= 0;
1749 inventory.FocusXP.AP_POWER += focusXpPlus[FocusType.AP_POWER];
1750 }
1751 if (focusXpPlus[FocusType.AP_WARD]) {
1752 inventory.FocusXP.AP_WARD ??= 0;
1753 inventory.FocusXP.AP_WARD += focusXpPlus[FocusType.AP_WARD];
1754 }
1740 1755
1741 1756 if (!config.noDailyFocusLimit) {
1742 1757 inventory.DailyFocus -= focusXpPlus.reduce((a, b) => a + b, 0);
Modified src/types/inventoryTypes/inventoryTypes.ts +5 -5
@@ -641,11 +641,11 @@ export interface IFocusUpgrade {
641 641 }
642 642
643 643 export interface IFocusXP {
644 AP_POWER: number;
645 AP_TACTIC: number;
646 AP_DEFENSE: number;
647 AP_ATTACK: number;
648 AP_WARD: number;
644 AP_POWER?: number;
645 AP_TACTIC?: number;
646 AP_DEFENSE?: number;
647 AP_ATTACK?: number;
648 AP_WARD?: number;
649 649 }
650 650
651 651 export type TFocusPolarity = keyof IFocusXP;