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: simplify serversideVendorsService's api (#1467)

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

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

代码差异

5 个文件 +20 -21
Modified src/controllers/api/getVendorInfoController.ts +2 -2
@@ -1,5 +1,5 @@
1 1 import { RequestHandler } from "express";
2 import { getVendorManifestByTypeName, preprocessVendorManifest } from "@/src/services/serversideVendorsService";
2 import { getVendorManifestByTypeName } from "@/src/services/serversideVendorsService";
3 3
4 4 export const getVendorInfoController: RequestHandler = (req, res) => {
5 5 if (typeof req.query.vendor == "string") {
@@ -7,7 +7,7 @@ export const getVendorInfoController: RequestHandler = (req, res) => {
7 7 if (!manifest) {
8 8 throw new Error(`Unknown vendor: ${req.query.vendor}`);
9 9 }
10 res.json(preprocessVendorManifest(manifest));
10 res.json(manifest);
11 11 } else {
12 12 res.status(400).end();
13 13 }
Modified src/controllers/api/postGuildAdvertisementController.ts +4 -4
@@ -9,7 +9,7 @@ import {
9 9 } from "@/src/services/guildService";
10 10 import { getInventory } from "@/src/services/inventoryService";
11 11 import { getAccountIdForRequest } from "@/src/services/loginService";
12 import { getVendorManifestByTypeName, preprocessVendorManifest } from "@/src/services/serversideVendorsService";
12 import { getVendorManifestByTypeName } from "@/src/services/serversideVendorsService";
13 13 import { GuildPermission } from "@/src/types/guildTypes";
14 14 import { IPurchaseParams } from "@/src/types/purchaseTypes";
15 15 import { RequestHandler } from "express";
@@ -26,9 +26,9 @@ export const postGuildAdvertisementController: RequestHandler = async (req, res)
26 26 const payload = getJSONfromString<IPostGuildAdvertisementRequest>(String(req.body));
27 27
28 28 // Handle resource cost
29 const vendor = preprocessVendorManifest(
30 getVendorManifestByTypeName("/Lotus/Types/Game/VendorManifests/Hubs/GuildAdvertisementVendorManifest")!
31 );
29 const vendor = getVendorManifestByTypeName(
30 "/Lotus/Types/Game/VendorManifests/Hubs/GuildAdvertisementVendorManifest"
31 )!;
32 32 const offer = vendor.VendorInfo.ItemManifest.find(x => x.StoreItem == payload.PurchaseParams.StoreItem)!;
33 33 if (getVaultMiscItemCount(guild, offer.ItemPrices![0].ItemType) >= offer.ItemPrices![0].ItemCount) {
34 34 addVaultMiscItems(guild, [
Modified src/services/purchaseService.ts +3 -4
@@ -9,7 +9,7 @@ import {
9 9 updateSlots
10 10 } from "@/src/services/inventoryService";
11 11 import { getRandomWeightedRewardUc } from "@/src/services/rngService";
12 import { getVendorManifestByOid, preprocessVendorManifest } from "@/src/services/serversideVendorsService";
12 import { getVendorManifestByOid } from "@/src/services/serversideVendorsService";
13 13 import { IMiscItem } from "@/src/types/inventoryTypes/inventoryTypes";
14 14 import { IPurchaseRequest, IPurchaseResponse, SlotPurchase, IInventoryChanges } from "@/src/types/purchaseTypes";
15 15 import { logger } from "@/src/utils/logger";
@@ -53,9 +53,8 @@ export const handlePurchase = async (
53 53 const prePurchaseInventoryChanges: IInventoryChanges = {};
54 54 let seed: bigint | undefined;
55 55 if (purchaseRequest.PurchaseParams.Source == 7) {
56 const rawManifest = getVendorManifestByOid(purchaseRequest.PurchaseParams.SourceId!);
57 if (rawManifest) {
58 const manifest = preprocessVendorManifest(rawManifest);
56 const manifest = getVendorManifestByOid(purchaseRequest.PurchaseParams.SourceId!);
57 if (manifest) {
59 58 let ItemId: string | undefined;
60 59 if (purchaseRequest.PurchaseParams.ExtraPurchaseInfoJson) {
61 60 ItemId = (JSON.parse(purchaseRequest.PurchaseParams.ExtraPurchaseInfoJson) as { ItemId: string })
Modified src/services/serversideVendorsService.ts +10 -10
@@ -3,14 +3,14 @@ import path from "path";
3 3 import { repoDir } from "@/src/helpers/pathHelper";
4 4 import { CRng, mixSeeds } from "@/src/services/rngService";
5 5 import { IMongoDate } from "@/src/types/commonTypes";
6 import { IVendorManifest, IVendorManifestPreprocessed } from "@/src/types/vendorTypes";
6 import { IRawVendorManifest, IVendorManifestPreprocessed } from "@/src/types/vendorTypes";
7 7 import { JSONParse } from "json-with-bigint";
8 8
9 const getVendorManifestJson = (name: string): IVendorManifest => {
9 const getVendorManifestJson = (name: string): IRawVendorManifest => {
10 10 return JSONParse(fs.readFileSync(path.join(repoDir, `static/fixed_responses/getVendorInfo/${name}.json`), "utf-8"));
11 11 };
12 12
13 const vendorManifests: IVendorManifest[] = [
13 const rawVendorManifests: IRawVendorManifest[] = [
14 14 getVendorManifestJson("ArchimedeanVendorManifest"),
15 15 getVendorManifestJson("DeimosEntratiFragmentVendorProductsManifest"),
16 16 getVendorManifestJson("DeimosFishmongerVendorManifest"),
@@ -44,25 +44,25 @@ const vendorManifests: IVendorManifest[] = [
44 44 getVendorManifestJson("ZarimanCommisionsManifestArchimedean")
45 45 ];
46 46
47 export const getVendorManifestByTypeName = (typeName: string): IVendorManifest | undefined => {
48 for (const vendorManifest of vendorManifests) {
47 export const getVendorManifestByTypeName = (typeName: string): IVendorManifestPreprocessed | undefined => {
48 for (const vendorManifest of rawVendorManifests) {
49 49 if (vendorManifest.VendorInfo.TypeName == typeName) {
50 return vendorManifest;
50 return preprocessVendorManifest(vendorManifest);
51 51 }
52 52 }
53 53 return undefined;
54 54 };
55 55
56 export const getVendorManifestByOid = (oid: string): IVendorManifest | undefined => {
57 for (const vendorManifest of vendorManifests) {
56 export const getVendorManifestByOid = (oid: string): IVendorManifestPreprocessed | undefined => {
57 for (const vendorManifest of rawVendorManifests) {
58 58 if (vendorManifest.VendorInfo._id.$oid == oid) {
59 return vendorManifest;
59 return preprocessVendorManifest(vendorManifest);
60 60 }
61 61 }
62 62 return undefined;
63 63 };
64 64
65 export const preprocessVendorManifest = (originalManifest: IVendorManifest): IVendorManifestPreprocessed => {
65 const preprocessVendorManifest = (originalManifest: IRawVendorManifest): IVendorManifestPreprocessed => {
66 66 if (Date.now() >= parseInt(originalManifest.VendorInfo.Expiry.$date.$numberLong)) {
67 67 const manifest = structuredClone(originalManifest);
68 68 const info = manifest.VendorInfo;
Modified src/types/vendorTypes.ts +1 -1
@@ -38,7 +38,7 @@ interface IVendorInfoPreprocessed extends Omit<IVendorInfo, "ItemManifest"> {
38 38 ItemManifest: IItemManifestPreprocessed[];
39 39 }
40 40
41 export interface IVendorManifest {
41 export interface IRawVendorManifest {
42 42 VendorInfo: IVendorInfo;
43 43 }
44 44