XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

SpaceNinjaServer

A simple server for a small space ninja game

公开
关注 0 Fork 1 Star 0
返回提交历史

XFEstudio/SpaceNinjaServer

fix: rectify CrewMembers import & typings (#845)

8858b156
Sainan <sainan@calamity.inc>
提交于

代码差异

3 个文件 +48 -24
Modified src/models/inventoryModels/inventoryModel.ts +21 -12
@@ -41,7 +41,6 @@ import {
41 41 ICrewShipPortGuns,
42 42 ICrewShipCustomization,
43 43 ICrewShipWeapon,
44 ICrewShipMembersClient,
45 44 ICrewShipPilotWeapon,
46 45 IShipExterior,
47 46 IHelminthFoodRecord,
@@ -52,7 +51,9 @@ import {
52 51 ICompletedDialogue,
53 52 IDialogueClient,
54 53 IUpgradeDatabase,
55 ICrewShipDatabase
54 ICrewShipDatabase,
55 ICrewShipMemberDatabase,
56 ICrewShipMemberClient
56 57 } from "../../types/inventoryTypes/inventoryTypes";
57 58 import { IOid } from "../../types/commonTypes";
58 59 import {
@@ -675,25 +676,33 @@ const crewShipCustomizationSchema = new Schema<ICrewShipCustomization>(
675 676 { _id: false }
676 677 );
677 678
678 const crewShipMembersSchema = new Schema<ICrewShipMembersDatabase>(
679 const crewShipMemberSchema = new Schema<ICrewShipMemberDatabase>(
679 680 {
680 SLOT_A: { type: Schema.Types.ObjectId, required: false },
681 SLOT_B: { type: Schema.Types.ObjectId, required: false },
682 SLOT_C: { type: Schema.Types.ObjectId, required: false }
681 ItemId: { type: Schema.Types.ObjectId, required: false },
682 NemesisFingerprint: { type: Number, required: false }
683 683 },
684 684 { _id: false }
685 685 );
686 crewShipMembersSchema.set("toJSON", {
686 crewShipMemberSchema.set("toJSON", {
687 687 virtuals: true,
688 688 transform(_doc, obj) {
689 const db = obj as ICrewShipMembersDatabase;
690 const client = obj as ICrewShipMembersClient;
691 client.SLOT_A = db.SLOT_A ? { ItemId: toOid(db.SLOT_A) } : undefined;
692 client.SLOT_B = db.SLOT_B ? { ItemId: toOid(db.SLOT_B) } : undefined;
693 client.SLOT_C = db.SLOT_C ? { ItemId: toOid(db.SLOT_C) } : undefined;
689 const db = obj as ICrewShipMemberDatabase;
690 const client = obj as ICrewShipMemberClient;
691 if (db.ItemId) {
692 client.ItemId = toOid(db.ItemId);
693 }
694 694 }
695 695 });
696 696
697 const crewShipMembersSchema = new Schema<ICrewShipMembersDatabase>(
698 {
699 SLOT_A: { type: crewShipMemberSchema, required: false },
700 SLOT_B: { type: crewShipMemberSchema, required: false },
701 SLOT_C: { type: crewShipMemberSchema, required: false }
702 },
703 { _id: false }
704 );
705
697 706 const crewShipSchema = new Schema<ICrewShipDatabase>({
698 707 ItemType: { type: String, required: true },
699 708 Configs: { type: [ItemConfigSchema], default: [] },
Modified src/services/importService.ts +12 -3
@@ -10,6 +10,8 @@ import {
10 10 equipmentKeys,
11 11 ICrewShipClient,
12 12 ICrewShipDatabase,
13 ICrewShipMemberClient,
14 ICrewShipMemberDatabase,
13 15 ICrewShipMembersClient,
14 16 ICrewShipMembersDatabase,
15 17 IDialogueClient,
@@ -85,11 +87,18 @@ const replaceSlots = (db: ISlots, client: ISlots): void => {
85 87 db.Slots = client.Slots;
86 88 };
87 89
90 const convertCrewShipMember = (client: ICrewShipMemberClient): ICrewShipMemberDatabase => {
91 return {
92 ...client,
93 ItemId: client.ItemId ? new Types.ObjectId(client.ItemId.$oid) : undefined
94 };
95 };
96
88 97 const convertCrewShipMembers = (client: ICrewShipMembersClient): ICrewShipMembersDatabase => {
89 98 return {
90 SLOT_A: client.SLOT_A ? new Types.ObjectId(client.SLOT_A.ItemId.$oid) : undefined,
91 SLOT_B: client.SLOT_B ? new Types.ObjectId(client.SLOT_B.ItemId.$oid) : undefined,
92 SLOT_C: client.SLOT_C ? new Types.ObjectId(client.SLOT_C.ItemId.$oid) : undefined
99 SLOT_A: client.SLOT_A ? convertCrewShipMember(client.SLOT_A) : undefined,
100 SLOT_B: client.SLOT_B ? convertCrewShipMember(client.SLOT_B) : undefined,
101 SLOT_C: client.SLOT_C ? convertCrewShipMember(client.SLOT_C) : undefined
93 102 };
94 103 };
95 104
Modified src/types/inventoryTypes/inventoryTypes.ts +15 -9
@@ -471,19 +471,25 @@ export interface ICrewShipDatabase extends Omit<ICrewShipClient, "CrewMembers" |
471 471 }
472 472
473 473 export interface ICrewShipMembersClient {
474 SLOT_A?: ISlot;
475 SLOT_B?: ISlot;
476 SLOT_C?: ISlot;
474 SLOT_A?: ICrewShipMemberClient;
475 SLOT_B?: ICrewShipMemberClient;
476 SLOT_C?: ICrewShipMemberClient;
477 477 }
478 478
479 export interface ISlot {
480 ItemId: IOid;
479 export interface ICrewShipMembersDatabase {
480 SLOT_A?: ICrewShipMemberDatabase;
481 SLOT_B?: ICrewShipMemberDatabase;
482 SLOT_C?: ICrewShipMemberDatabase;
481 483 }
482 484
483 export interface ICrewShipMembersDatabase {
484 SLOT_A?: Types.ObjectId;
485 SLOT_B?: Types.ObjectId;
486 SLOT_C?: Types.ObjectId;
485 export interface ICrewShipMemberClient {
486 ItemId?: IOid;
487 NemesisFingerprint?: number;
488 }
489
490 export interface ICrewShipMemberDatabase {
491 ItemId?: Types.ObjectId;
492 NemesisFingerprint?: number;
487 493 }
488 494
489 495 export interface ICrewShipCustomization {