feat: decorating the backroom
This commit is contained in:
parent
6beb3c73e0
commit
65c000249c
@ -27,7 +27,8 @@ export const getShipController: RequestHandler = async (req, res) => {
|
||||
SkinFlavourItem: ship.SkinFlavourItem
|
||||
}
|
||||
},
|
||||
Apartment: personalRooms.Apartment
|
||||
Apartment: personalRooms.Apartment,
|
||||
TailorShop: personalRooms.TailorShop
|
||||
};
|
||||
|
||||
if (config.unlockAllShipFeatures) {
|
||||
|
@ -1,6 +1,14 @@
|
||||
import { toOid } from "@/src/helpers/inventoryHelpers";
|
||||
import { IOrbiter, IPersonalRooms, PersonalRoomsModelType } from "@/src/types/personalRoomsTypes";
|
||||
import { IApartment, IGardening, IPlacedDecosDatabase, IPictureFrameInfo, IRoom } from "@/src/types/shipTypes";
|
||||
import {
|
||||
IApartment,
|
||||
IFavouriteLoadoutDatabase,
|
||||
IGardening,
|
||||
IPlacedDecosDatabase,
|
||||
IPictureFrameInfo,
|
||||
IRoom,
|
||||
ITailorShopDatabase
|
||||
} from "@/src/types/shipTypes";
|
||||
import { Schema, model } from "mongoose";
|
||||
|
||||
const pictureFrameInfoSchema = new Schema<IPictureFrameInfo>(
|
||||
@ -76,11 +84,59 @@ const orbiterSchema = new Schema<IOrbiter>(
|
||||
{ _id: false }
|
||||
);
|
||||
|
||||
const favouriteLoadoutSchema = new Schema<IFavouriteLoadoutDatabase>(
|
||||
{
|
||||
Tag: String,
|
||||
LoadoutId: Schema.Types.ObjectId
|
||||
},
|
||||
{ _id: false }
|
||||
);
|
||||
favouriteLoadoutSchema.set("toJSON", {
|
||||
virtuals: true,
|
||||
transform(_document, returnedObject) {
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
||||
returnedObject.LoadoutId = toOid(returnedObject.LoadoutId);
|
||||
}
|
||||
});
|
||||
|
||||
const tailorShopSchema = new Schema<ITailorShopDatabase>(
|
||||
{
|
||||
FavouriteLoadouts: [favouriteLoadoutSchema],
|
||||
CustomJson: String,
|
||||
LevelDecosVisible: Boolean,
|
||||
Rooms: [roomSchema]
|
||||
},
|
||||
{ _id: false }
|
||||
);
|
||||
const tailorShopDefault: ITailorShopDatabase = {
|
||||
FavouriteLoadouts: [],
|
||||
CustomJson: "{}",
|
||||
LevelDecosVisible: true,
|
||||
Rooms: [
|
||||
{
|
||||
Name: "LabRoom",
|
||||
MaxCapacity: 4000
|
||||
},
|
||||
{
|
||||
Name: "LivingQuartersRoom",
|
||||
MaxCapacity: 3000
|
||||
},
|
||||
{
|
||||
Name: "HelminthRoom",
|
||||
MaxCapacity: 2000
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
export const personalRoomsSchema = new Schema<IPersonalRooms>({
|
||||
personalRoomsOwnerId: Schema.Types.ObjectId,
|
||||
activeShipId: Schema.Types.ObjectId,
|
||||
Ship: orbiterSchema,
|
||||
Apartment: apartmentSchema
|
||||
Apartment: apartmentSchema,
|
||||
TailorShop: {
|
||||
type: tailorShopSchema,
|
||||
default: tailorShopDefault as any as undefined // Yeah, this is bad, but mongoose types here are wrong.
|
||||
}
|
||||
});
|
||||
|
||||
export const PersonalRooms = model<IPersonalRooms, PersonalRoomsModelType>("PersonalRooms", personalRoomsSchema);
|
||||
|
@ -37,7 +37,12 @@ export const handleSetShipDecorations = async (
|
||||
): Promise<IShipDecorationsResponse> => {
|
||||
const personalRooms = await getPersonalRooms(accountId);
|
||||
|
||||
const rooms = placedDecoration.IsApartment ? personalRooms.Apartment.Rooms : personalRooms.Ship.Rooms;
|
||||
const rooms =
|
||||
placedDecoration.BootLocation == "SHOP"
|
||||
? personalRooms.TailorShop.Rooms
|
||||
: placedDecoration.IsApartment
|
||||
? personalRooms.Apartment.Rooms
|
||||
: personalRooms.Ship.Rooms;
|
||||
|
||||
const roomToPlaceIn = rooms.find(room => room.Name === placedDecoration.Room);
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { IApartment, IRoom, IPlacedDecosDatabase, TBootLocation } from "@/src/types/shipTypes";
|
||||
import { IApartment, IRoom, IPlacedDecosDatabase, ITailorShop, TBootLocation } from "@/src/types/shipTypes";
|
||||
import { Model, Types } from "mongoose";
|
||||
|
||||
export interface IOrbiter {
|
||||
@ -13,6 +13,7 @@ export interface IPersonalRooms {
|
||||
activeShipId: Types.ObjectId;
|
||||
Ship: IOrbiter;
|
||||
Apartment: IApartment;
|
||||
TailorShop: ITailorShop;
|
||||
}
|
||||
|
||||
export type RoomsType = { Name: string; MaxCapacity: number; PlacedDecos: Types.DocumentArray<IPlacedDecosDatabase> };
|
||||
@ -24,6 +25,9 @@ export type PersonalRoomsDocumentProps = {
|
||||
Apartment: Omit<IApartment, "Rooms"> & {
|
||||
Rooms: RoomsType[];
|
||||
};
|
||||
TailorShop: Omit<ITailorShop, "Rooms"> & {
|
||||
Rooms: RoomsType[];
|
||||
};
|
||||
};
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types
|
||||
|
@ -7,6 +7,7 @@ export interface IGetShipResponse {
|
||||
ShipOwnerId: string;
|
||||
Ship: IShip;
|
||||
Apartment: IApartment;
|
||||
TailorShop: ITailorShop;
|
||||
LoadOutInventory: { LoadOutPresets: ILoadoutClient };
|
||||
}
|
||||
|
||||
@ -102,7 +103,8 @@ export interface IShipDecorationsRequest {
|
||||
Pos: [number, number, number];
|
||||
Rot: [number, number, number];
|
||||
Room: string;
|
||||
IsApartment: boolean;
|
||||
BootLocation?: TBootLocation;
|
||||
IsApartment?: boolean;
|
||||
RemoveId?: string;
|
||||
MoveId?: string;
|
||||
OldRoom?: string;
|
||||
@ -112,7 +114,7 @@ export interface IShipDecorationsRequest {
|
||||
export interface IShipDecorationsResponse {
|
||||
DecoId?: string;
|
||||
Room?: string;
|
||||
IsApartment: boolean;
|
||||
IsApartment?: boolean;
|
||||
MaxCapacityIncrease?: number;
|
||||
OldRoom?: string;
|
||||
NewRoom?: string;
|
||||
@ -141,3 +143,25 @@ export interface IPictureFrameInfo {
|
||||
TextColorB: number;
|
||||
TextOrientation: number;
|
||||
}
|
||||
|
||||
export interface IFavouriteLoadout {
|
||||
Tag: string;
|
||||
LoadoutId: IOid;
|
||||
}
|
||||
|
||||
export interface IFavouriteLoadoutDatabase {
|
||||
Tag: string;
|
||||
LoadoutId: Types.ObjectId;
|
||||
}
|
||||
|
||||
export interface ITailorShopDatabase {
|
||||
FavouriteLoadouts: IFavouriteLoadoutDatabase[];
|
||||
CustomJson: "{}"; // ???
|
||||
LevelDecosVisible: boolean;
|
||||
Rooms: IRoom[];
|
||||
}
|
||||
|
||||
export interface ITailorShop extends Omit<ITailorShopDatabase, "FavouriteLoadouts"> {
|
||||
FavouriteLoadouts: IFavouriteLoadout[];
|
||||
Colors: []; // ???
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user