import CrewShips

This commit is contained in:
Sainan 2025-01-20 09:58:06 +01:00
parent fe9509b7f4
commit c31b283809
3 changed files with 36 additions and 6 deletions

View File

@ -42,7 +42,6 @@ import {
ICrewShipCustomization, ICrewShipCustomization,
ICrewShipWeapon, ICrewShipWeapon,
ICrewShipMembersClient, ICrewShipMembersClient,
ICrewShip,
ICrewShipPilotWeapon, ICrewShipPilotWeapon,
IShipExterior, IShipExterior,
IHelminthFoodRecord, IHelminthFoodRecord,
@ -52,7 +51,8 @@ import {
IDialogueGift, IDialogueGift,
ICompletedDialogue, ICompletedDialogue,
IDialogueClient, IDialogueClient,
IUpgradeDatabase IUpgradeDatabase,
ICrewShipDatabase
} from "../../types/inventoryTypes/inventoryTypes"; } from "../../types/inventoryTypes/inventoryTypes";
import { IOid } from "../../types/commonTypes"; import { IOid } from "../../types/commonTypes";
import { import {
@ -694,7 +694,7 @@ crewShipMembersSchema.set("toJSON", {
} }
}); });
const crewShipSchema = new Schema<ICrewShip>({ const crewShipSchema = new Schema<ICrewShipDatabase>({
ItemType: { type: String, required: true }, ItemType: { type: String, required: true },
Configs: { type: [ItemConfigSchema], default: [] }, Configs: { type: [ItemConfigSchema], default: [] },
Weapon: { type: crewShipWeaponSchema, default: undefined }, Weapon: { type: crewShipWeaponSchema, default: undefined },
@ -1184,7 +1184,7 @@ type InventoryDocumentProps = {
Hoverboards: Types.DocumentArray<IEquipmentDatabase>; Hoverboards: Types.DocumentArray<IEquipmentDatabase>;
MoaPets: Types.DocumentArray<IEquipmentDatabase>; MoaPets: Types.DocumentArray<IEquipmentDatabase>;
WeaponSkins: Types.DocumentArray<IWeaponSkinDatabase>; WeaponSkins: Types.DocumentArray<IWeaponSkinDatabase>;
CrewShips: Types.DocumentArray<ICrewShip>; CrewShips: Types.DocumentArray<ICrewShipDatabase>;
CrewShipHarnesses: Types.DocumentArray<IEquipmentDatabase>; CrewShipHarnesses: Types.DocumentArray<IEquipmentDatabase>;
}; };

View File

@ -8,6 +8,10 @@ import {
import { IMongoDate } from "../types/commonTypes"; import { IMongoDate } from "../types/commonTypes";
import { import {
equipmentKeys, equipmentKeys,
ICrewShipClient,
ICrewShipDatabase,
ICrewShipMembersClient,
ICrewShipMembersDatabase,
IDialogueClient, IDialogueClient,
IDialogueDatabase, IDialogueDatabase,
IDialogueHistoryClient, IDialogueHistoryClient,
@ -81,6 +85,23 @@ const replaceSlots = (db: ISlots, client: ISlots): void => {
db.Slots = client.Slots; db.Slots = client.Slots;
}; };
const convertCrewShipMembers = (client: ICrewShipMembersClient): ICrewShipMembersDatabase => {
return {
SLOT_A: client.SLOT_A ? new Types.ObjectId(client.SLOT_A.ItemId.$oid) : undefined,
SLOT_B: client.SLOT_B ? new Types.ObjectId(client.SLOT_B.ItemId.$oid) : undefined,
SLOT_C: client.SLOT_C ? new Types.ObjectId(client.SLOT_C.ItemId.$oid) : undefined
};
};
const convertCrewShip = (client: ICrewShipClient): ICrewShipDatabase => {
const { ItemId, ...rest } = client;
return {
...rest,
_id: new Types.ObjectId(ItemId.$oid),
CrewMembers: client.CrewMembers ? convertCrewShipMembers(client.CrewMembers) : undefined
};
};
const convertInfestedFoundry = (client: IInfestedFoundryClient): IInfestedFoundryDatabase => { const convertInfestedFoundry = (client: IInfestedFoundryClient): IInfestedFoundryDatabase => {
return { return {
...client, ...client,
@ -192,6 +213,9 @@ export const importInventory = (db: TInventoryDatabaseDocument, client: Partial<
if (client.FocusUpgrades) { if (client.FocusUpgrades) {
db.FocusUpgrades = client.FocusUpgrades; db.FocusUpgrades = client.FocusUpgrades;
} }
if (client.CrewShips) {
replaceArray<ICrewShipDatabase>(db.CrewShips, client.CrewShips.map(convertCrewShip));
}
if (client.InfestedFoundry) { if (client.InfestedFoundry) {
db.InfestedFoundry = convertInfestedFoundry(client.InfestedFoundry); db.InfestedFoundry = convertInfestedFoundry(client.InfestedFoundry);
} }

View File

@ -30,6 +30,7 @@ export interface IInventoryDatabase
| "CrewShipWeaponSkins" | "CrewShipWeaponSkins"
| "OperatorLoadOuts" | "OperatorLoadOuts"
| "AdultOperatorLoadOuts" | "AdultOperatorLoadOuts"
| "CrewShips"
| "InfestedFoundry" | "InfestedFoundry"
| "DialogueHistory" | "DialogueHistory"
| TEquipmentKey | TEquipmentKey
@ -50,6 +51,7 @@ export interface IInventoryDatabase
CrewShipWeaponSkins: IUpgradeDatabase[]; CrewShipWeaponSkins: IUpgradeDatabase[];
OperatorLoadOuts: IOperatorConfigDatabase[]; OperatorLoadOuts: IOperatorConfigDatabase[];
AdultOperatorLoadOuts: IOperatorConfigDatabase[]; AdultOperatorLoadOuts: IOperatorConfigDatabase[];
CrewShips: ICrewShipDatabase[];
InfestedFoundry?: IInfestedFoundryDatabase; InfestedFoundry?: IInfestedFoundryDatabase;
DialogueHistory?: IDialogueHistoryDatabase; DialogueHistory?: IDialogueHistoryDatabase;
@ -292,7 +294,7 @@ export interface IInventoryClient extends IDailyAffiliations {
LastNemesisAllySpawnTime?: IMongoDate; LastNemesisAllySpawnTime?: IMongoDate;
Settings: ISettings; Settings: ISettings;
PersonalTechProjects: IPersonalTechProject[]; PersonalTechProjects: IPersonalTechProject[];
CrewShips: ICrewShip[]; CrewShips: ICrewShipClient[];
PlayerSkills: IPlayerSkills; PlayerSkills: IPlayerSkills;
CrewShipAmmo: IConsumable[]; CrewShipAmmo: IConsumable[];
CrewShipSalvagedWeaponSkins: IUpgradeClient[]; CrewShipSalvagedWeaponSkins: IUpgradeClient[];
@ -452,7 +454,7 @@ export interface IUpgradeDatabase extends Omit<IUpgradeClient, "ItemId"> {
_id: Types.ObjectId; _id: Types.ObjectId;
} }
export interface ICrewShip { export interface ICrewShipClient {
ItemType: string; ItemType: string;
Configs: IItemConfig[]; Configs: IItemConfig[];
Weapon?: ICrewShipWeapon; Weapon?: ICrewShipWeapon;
@ -461,6 +463,10 @@ export interface ICrewShip {
RailjackImage?: IFlavourItem; RailjackImage?: IFlavourItem;
CrewMembers?: ICrewShipMembersClient; CrewMembers?: ICrewShipMembersClient;
ItemId: IOid; ItemId: IOid;
}
export interface ICrewShipDatabase extends Omit<ICrewShipClient, "CrewMembers" | "ItemId"> {
CrewMembers?: ICrewShipMembersDatabase;
_id: Types.ObjectId; _id: Types.ObjectId;
} }