SpaceNinjaServer/src/types/personalRoomsTypes.ts
Sainan 2efda00a08
Some checks failed
Build / build (pull_request) Failing after 50s
npm run fix-imports
2025-07-05 01:58:08 +02:00

229 lines
5.5 KiB
TypeScript

import { IColor, IShipAttachments, IShipCustomization } from "@/src/types/inventoryTypes/commonInventoryTypes";
import { Document, Model, Types } from "mongoose";
import { ILoadoutClient } from "@/src/types/saveLoadoutTypes";
import { IMongoDate, IOid } from "@/src/types/commonTypes";
export interface IGetShipResponse {
ShipOwnerId: string;
Ship: IOrbiterClient;
Apartment: IApartmentClient;
TailorShop: ITailorShop;
LoadOutInventory: { LoadOutPresets: ILoadoutClient };
}
export type TBootLocation = "LISET" | "DRIFTER_CAMP" | "APARTMENT" | "SHOP";
export interface IOrbiterClient {
Features: string[];
ShipId: IOid;
ShipInterior: IShipCustomization;
Rooms: IRoom[];
VignetteFish?: string[];
FavouriteLoadoutId?: IOid;
Wallpaper?: string;
Vignette?: string;
BootLocation?: TBootLocation;
ContentUrlSignature?: string;
}
export interface IOrbiterDatabase {
Features: string[];
Rooms: IRoom[];
ShipInterior?: IShipCustomization;
VignetteFish?: string[];
FavouriteLoadoutId?: Types.ObjectId;
Wallpaper?: string;
Vignette?: string;
ContentUrlSignature?: string;
BootLocation?: TBootLocation;
}
export interface IPersonalRoomsClient {
Ship: IOrbiterClient;
Apartment: IApartmentClient;
TailorShop: ITailorShop;
}
export interface IPersonalRoomsDatabase {
personalRoomsOwnerId: Types.ObjectId;
activeShipId: Types.ObjectId;
Ship: IOrbiterDatabase;
Apartment: IApartmentDatabase;
TailorShop: ITailorShopDatabase;
}
export interface IRoom {
Name: string;
MaxCapacity: number;
PlacedDecos?: IPlacedDecosDatabase[];
}
export interface IPlantClient {
PlantType: string;
EndTime: IMongoDate;
PlotIndex: number;
}
export interface IPlantDatabase extends Omit<IPlantClient, "EndTime"> {
EndTime: Date;
}
export interface IPlanterClient {
Name: string;
Plants: IPlantClient[];
}
export interface IPlanterDatabase {
Name: string;
Plants: IPlantDatabase[];
}
export interface IGardeningClient {
Planters: IPlanterClient[];
}
export interface IGardeningDatabase {
Planters: IPlanterDatabase[];
}
export interface IApartmentClient {
Gardening: IGardeningClient;
Rooms: IRoom[];
FavouriteLoadouts: IFavouriteLoadout[];
}
export interface IApartmentDatabase {
Gardening: IGardeningDatabase;
Rooms: IRoom[];
FavouriteLoadouts: IFavouriteLoadoutDatabase[];
}
export interface IPlacedDecosDatabase {
Type: string;
Pos: [number, number, number];
Rot: [number, number, number];
Scale?: number;
Sockets?: number;
PictureFrameInfo?: IPictureFrameInfo;
_id: Types.ObjectId;
}
export interface IPlacedDecosClient extends Omit<IPlacedDecosDatabase, "_id"> {
id: IOid;
}
export interface ISetShipCustomizationsRequest {
ShipId: string;
Customization: {
SkinFlavourItem?: string;
Colors?: IColor;
ShipAttachments?: IShipAttachments;
LevelDecosVisible?: boolean;
CustomJson?: string;
};
IsExterior: boolean;
AirSupportPower?: string;
IsShop?: boolean;
}
export interface IShipDecorationsRequest {
Type: string;
Pos: [number, number, number];
Rot: [number, number, number];
Room: string;
BootLocation?: TBootLocation;
IsApartment?: boolean;
RemoveId?: string;
MoveId?: string;
OldRoom?: string;
Scale?: number;
Sockets?: number;
}
export interface IShipDecorationsResponse {
DecoId?: string;
Room?: string;
IsApartment?: boolean;
MaxCapacityIncrease?: number;
OldRoom?: string;
NewRoom?: string;
}
export interface ISetPlacedDecoInfoRequest {
DecoType: string;
DecoId: string;
Room: string;
PictureFrameInfo: IPictureFrameInfo;
BootLocation?: TBootLocation;
ComponentId?: string;
GuildId?: string;
}
export interface IPictureFrameInfo {
Image: string;
Filter: string;
XOffset: number;
YOffset: number;
Scale: number;
InvertX: boolean;
InvertY: boolean;
ColorCorrection: number;
Text: string;
TextScale: number;
TextColorA: number;
TextColorB: number;
TextOrientation: number;
}
export interface IFavouriteLoadout {
Tag: string;
LoadoutId: IOid;
}
export interface IFavouriteLoadoutDatabase {
Tag: string;
LoadoutId: Types.ObjectId;
}
export interface ITailorShopDatabase {
FavouriteLoadouts: IFavouriteLoadoutDatabase[];
Colors?: IColor;
CustomJson?: string;
LevelDecosVisible?: boolean;
Rooms: IRoom[];
}
export interface ITailorShop extends Omit<ITailorShopDatabase, "FavouriteLoadouts"> {
FavouriteLoadouts: IFavouriteLoadout[];
}
export type RoomsType = { Name: string; MaxCapacity: number; PlacedDecos: Types.DocumentArray<IPlacedDecosDatabase> };
export type PersonalRoomsDocumentProps = {
Ship: Omit<IOrbiterDatabase, "Rooms"> & {
Rooms: RoomsType[];
};
Apartment: Omit<IApartmentDatabase, "Rooms"> & {
Rooms: RoomsType[];
};
TailorShop: Omit<ITailorShopDatabase, "Rooms"> & {
Rooms: RoomsType[];
};
};
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
export type PersonalRoomsModelType = Model<IPersonalRoomsDatabase, {}, PersonalRoomsDocumentProps>;
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
export type TPersonalRoomsDatabaseDocument = Document<unknown, {}, IPersonalRoomsDatabase> &
Omit<
IPersonalRoomsDatabase & {
_id: Types.ObjectId;
} & {
__v: number;
},
keyof PersonalRoomsDocumentProps
> &
PersonalRoomsDocumentProps;