Move attachment id logic to helpers
This commit is contained in:
parent
de9619a654
commit
958632e9a1
38
src/helpers.ts
Normal file
38
src/helpers.ts
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
// Copyright (C) 2024 Platinum
|
||||||
|
//
|
||||||
|
// This file is part of spt-the-blacklist.
|
||||||
|
//
|
||||||
|
// spt-the-blacklist is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// spt-the-blacklist is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with spt-the-blacklist. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
import { Category } from "@spt-aki/models/eft/common/tables/IHandbookBase";
|
||||||
|
|
||||||
|
// There are so many child categories of attachments, this will return all categories using recursion so I don't have to type each ID.
|
||||||
|
export function getAttachmentCategoryIds(handbookCategories: Category[]): string[] {
|
||||||
|
const weaponPartsAndModsId = "5b5f71a686f77447ed5636ab";
|
||||||
|
const weaponPartsChildrenCategories = getChildCategoriesRecursively(handbookCategories, weaponPartsAndModsId);
|
||||||
|
const childrenIds = weaponPartsChildrenCategories.map(category => category.Id);
|
||||||
|
const attachmentCategoryIds = [weaponPartsAndModsId];
|
||||||
|
|
||||||
|
return attachmentCategoryIds.concat(childrenIds);
|
||||||
|
}
|
||||||
|
|
||||||
|
function getChildCategoriesRecursively(handbookCategories: Category[], parentId: string): Category[] {
|
||||||
|
const childCategories = handbookCategories.filter(category => category.ParentId === parentId);
|
||||||
|
const grandChildrenCategories = childCategories.reduce(
|
||||||
|
(memo, category) => memo.concat(this.getChildCategoriesRecursively(handbookCategories, category.Id)),
|
||||||
|
[]
|
||||||
|
);
|
||||||
|
|
||||||
|
return childCategories.concat(grandChildrenCategories);
|
||||||
|
}
|
20
src/mod.ts
20
src/mod.ts
@ -28,6 +28,7 @@ import { Category } from "@spt-aki/models/eft/common/tables/IHandbookBase";
|
|||||||
|
|
||||||
import config from "../config.json";
|
import config from "../config.json";
|
||||||
import advancedConfig from "../advancedConfig.json";
|
import advancedConfig from "../advancedConfig.json";
|
||||||
|
import { getAttachmentCategoryIds } from "./helpers";
|
||||||
|
|
||||||
class TheBlacklistMod implements IPostDBLoadModAsync {
|
class TheBlacklistMod implements IPostDBLoadModAsync {
|
||||||
private logger: ILogger;
|
private logger: ILogger;
|
||||||
@ -63,7 +64,7 @@ class TheBlacklistMod implements IPostDBLoadModAsync {
|
|||||||
let attachmentPriceLimitedCount = 0;
|
let attachmentPriceLimitedCount = 0;
|
||||||
|
|
||||||
if (config.limitMaxPriceOfAttachments) {
|
if (config.limitMaxPriceOfAttachments) {
|
||||||
this.initialiseAttachmentCategoryIds(tables.templates.handbook.Categories);
|
this.attachmentCategoryIds = getAttachmentCategoryIds(tables.templates.handbook.Categories);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Find all items to update by looping through handbook which is a better indicator of useable items.
|
// Find all items to update by looping through handbook which is a better indicator of useable items.
|
||||||
@ -149,24 +150,7 @@ class TheBlacklistMod implements IPostDBLoadModAsync {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private initialiseAttachmentCategoryIds(handbookCategories: Category[]) {
|
|
||||||
const weaponPartsAndModsId = "5b5f71a686f77447ed5636ab";
|
|
||||||
const weaponPartsChildrenCategories = this.getChildCategoriesRecursively(handbookCategories, weaponPartsAndModsId);
|
|
||||||
const childrenIds = weaponPartsChildrenCategories.map(category => category.Id);
|
|
||||||
|
|
||||||
this.attachmentCategoryIds.push(weaponPartsAndModsId);
|
|
||||||
this.attachmentCategoryIds = this.attachmentCategoryIds.concat(childrenIds);
|
|
||||||
}
|
|
||||||
|
|
||||||
private getChildCategoriesRecursively(handbookCategories: Category[], parentId: string): Category[] {
|
|
||||||
const childCategories = handbookCategories.filter(category => category.ParentId === parentId);
|
|
||||||
const grandChildrenCategories = childCategories.reduce(
|
|
||||||
(memo, category) => memo.concat(this.getChildCategoriesRecursively(handbookCategories, category.Id)),
|
|
||||||
[]
|
|
||||||
);
|
|
||||||
|
|
||||||
return childCategories.concat(grandChildrenCategories);
|
|
||||||
}
|
|
||||||
|
|
||||||
private getUpdatedPrice(item: ITemplateItem, prices: Record<string, number>): number | undefined {
|
private getUpdatedPrice(item: ITemplateItem, prices: Record<string, number>): number | undefined {
|
||||||
const currentFleaPrice = prices[item._id];
|
const currentFleaPrice = prices[item._id];
|
||||||
|
17
src/priceService.ts
Normal file
17
src/priceService.ts
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
// Copyright (C) 2024 Platinum
|
||||||
|
//
|
||||||
|
// This file is part of spt-the-blacklist.
|
||||||
|
//
|
||||||
|
// spt-the-blacklist is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// spt-the-blacklist is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with spt-the-blacklist. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user