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: improve ship customization stuff (#2402)

The only functionally relevant change is that orbiter scenes are now saved via SkinFlavourItem (as of U39?). The rest is cleanup of the types because the ship customization stuff was duplicated all over the place. Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/2402 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>

5089f671
Sainan <63328889+Sainan@users.noreply.github.com>
提交于

代码差异

17 个文件 +262 -281
Modified src/controllers/api/gardeningController.ts +1 -2
@@ -6,9 +6,8 @@ import { getAccountIdForRequest } from "@/src/services/loginService";
6 6 import { createGarden, getPersonalRooms } from "@/src/services/personalRoomsService";
7 7 import { IMongoDate } from "@/src/types/commonTypes";
8 8 import { IMissionReward } from "@/src/types/missionTypes";
9 import { IPersonalRoomsClient } from "@/src/types/personalRoomsTypes";
9 import { IGardeningClient, IPersonalRoomsClient } from "@/src/types/personalRoomsTypes";
10 10 import { IInventoryChanges } from "@/src/types/purchaseTypes";
11 import { IGardeningClient } from "@/src/types/shipTypes";
12 11 import { RequestHandler } from "express";
13 12 import { dict_en, ExportResources } from "warframe-public-export-plus";
14 13
Modified src/controllers/api/getShipController.ts +3 -12
@@ -3,10 +3,9 @@ import { config } from "@/src/services/configService";
3 3 import allShipFeatures from "@/static/fixed_responses/allShipFeatures.json";
4 4 import { getAccountIdForRequest } from "@/src/services/loginService";
5 5 import { createGarden, getPersonalRooms } from "@/src/services/personalRoomsService";
6 import { toOid } from "@/src/helpers/inventoryHelpers";
7 import { IGetShipResponse } from "@/src/types/shipTypes";
8 import { IPersonalRoomsClient } from "@/src/types/personalRoomsTypes";
6 import { IGetShipResponse, IPersonalRoomsClient } from "@/src/types/personalRoomsTypes";
9 7 import { getLoadout } from "@/src/services/loadoutService";
8 import { toOid } from "@/src/helpers/inventoryHelpers";
10 9
11 10 export const getShipController: RequestHandler = async (req, res) => {
12 11 const accountId = await getAccountIdForRequest(req);
@@ -26,15 +25,7 @@ export const getShipController: RequestHandler = async (req, res) => {
26 25 LoadOutInventory: { LoadOutPresets: loadout.toJSON() },
27 26 Ship: {
28 27 ...personalRooms.Ship,
29 ShipId: toOid(personalRoomsDb.activeShipId),
30 ShipInterior: {
31 Colors: personalRooms.ShipInteriorColors,
32 ShipAttachments: { HOOD_ORNAMENT: "" },
33 SkinFlavourItem: ""
34 },
35 FavouriteLoadoutId: personalRooms.Ship.FavouriteLoadoutId
36 ? toOid(personalRooms.Ship.FavouriteLoadoutId)
37 : undefined
28 ShipId: toOid(personalRoomsDb.activeShipId)
38 29 },
39 30 Apartment: personalRooms.Apartment,
40 31 TailorShop: personalRooms.TailorShop
Modified src/controllers/api/setBootLocationController.ts +1 -1
@@ -1,7 +1,7 @@
1 1 import { RequestHandler } from "express";
2 2 import { getAccountIdForRequest } from "@/src/services/loginService";
3 3 import { getPersonalRooms } from "@/src/services/personalRoomsService";
4 import { TBootLocation } from "@/src/types/shipTypes";
4 import { TBootLocation } from "@/src/types/personalRoomsTypes";
5 5 import { getInventory } from "@/src/services/inventoryService";
6 6
7 7 export const setBootLocationController: RequestHandler = async (req, res) => {
Modified src/controllers/api/setPlacedDecoInfoController.ts +1 -1
@@ -1,5 +1,5 @@
1 1 import { getAccountIdForRequest } from "@/src/services/loginService";
2 import { IPictureFrameInfo, ISetPlacedDecoInfoRequest } from "@/src/types/shipTypes";
2 import { IPictureFrameInfo, ISetPlacedDecoInfoRequest } from "@/src/types/personalRoomsTypes";
3 3 import { RequestHandler } from "express";
4 4 import { handleSetPlacedDecoInfo } from "@/src/services/shipCustomizationsService";
5 5
Modified src/controllers/api/setShipCustomizationsController.ts +1 -1
@@ -1,6 +1,6 @@
1 1 import { getAccountIdForRequest } from "@/src/services/loginService";
2 2 import { setShipCustomizations } from "@/src/services/shipCustomizationsService";
3 import { ISetShipCustomizationsRequest } from "@/src/types/shipTypes";
3 import { ISetShipCustomizationsRequest } from "@/src/types/personalRoomsTypes";
4 4 import { logger } from "@/src/utils/logger";
5 5 import { RequestHandler } from "express";
6 6
Modified src/controllers/api/setShipFavouriteLoadoutController.ts +1 -1
@@ -3,7 +3,7 @@ import { RequestHandler } from "express";
3 3 import { getPersonalRooms } from "@/src/services/personalRoomsService";
4 4 import { IOid } from "@/src/types/commonTypes";
5 5 import { Types } from "mongoose";
6 import { IFavouriteLoadoutDatabase, TBootLocation } from "@/src/types/shipTypes";
6 import { IFavouriteLoadoutDatabase, TBootLocation } from "@/src/types/personalRoomsTypes";
7 7
8 8 export const setShipFavouriteLoadoutController: RequestHandler = async (req, res) => {
9 9 const accountId = await getAccountIdForRequest(req);
Modified src/controllers/api/shipDecorationsController.ts +1 -1
@@ -1,5 +1,5 @@
1 1 import { getAccountIdForRequest } from "@/src/services/loginService";
2 import { IShipDecorationsRequest } from "@/src/types/shipTypes";
2 import { IShipDecorationsRequest } from "@/src/types/personalRoomsTypes";
3 3 import { logger } from "@/src/utils/logger";
4 4 import { RequestHandler } from "express";
5 5 import { handleSetShipDecorations } from "@/src/services/shipCustomizationsService";
Added src/models/commonModel.ts +26 -0
@@ -0,0 +1,26 @@
1 import { Schema } from "mongoose";
2 import { IColor } from "@/src/types/inventoryTypes/commonInventoryTypes";
3 import { IShipCustomization } from "@/src/types/personalRoomsTypes";
4
5 export const colorSchema = new Schema<IColor>(
6 {
7 t0: Number,
8 t1: Number,
9 t2: Number,
10 t3: Number,
11 en: Number,
12 e1: Number,
13 m0: Number,
14 m1: Number
15 },
16 { _id: false }
17 );
18
19 export const shipCustomizationSchema = new Schema<IShipCustomization>(
20 {
21 SkinFlavourItem: String,
22 Colors: colorSchema,
23 ShipAttachments: { HOOD_ORNAMENT: String }
24 },
25 { _id: false }
26 );
Modified src/models/inventoryModels/inventoryModel.ts +2 -26
@@ -42,7 +42,6 @@ import {
42 42 ICrewShipCustomization,
43 43 ICrewShipWeapon,
44 44 ICrewShipWeaponEmplacements,
45 IShipExterior,
46 45 IHelminthFoodRecord,
47 46 ICrewShipMembersDatabase,
48 47 IDialogueHistoryDatabase,
@@ -106,7 +105,6 @@ import {
106 105 import { IOid } from "../../types/commonTypes";
107 106 import {
108 107 IAbilityOverride,
109 IColor,
110 108 IItemConfig,
111 109 IOperatorConfigDatabase,
112 110 IPolarity,
@@ -117,6 +115,7 @@ import {
117 115 import { toMongoDate, toOid } from "@/src/helpers/inventoryHelpers";
118 116 import { EquipmentSelectionSchema, oidSchema } from "./loadoutModel";
119 117 import { ICountedStoreItem } from "warframe-public-export-plus";
118 import { colorSchema, shipCustomizationSchema } from "../commonModel";
120 119
121 120 export const typeCountSchema = new Schema<ITypeCount>({ ItemType: String, ItemCount: Number }, { _id: false });
122 121
@@ -166,20 +165,6 @@ const abilityOverrideSchema = new Schema<IAbilityOverride>(
166 165 { _id: false }
167 166 );
168 167
169 export const colorSchema = new Schema<IColor>(
170 {
171 t0: Number,
172 t1: Number,
173 t2: Number,
174 t3: Number,
175 en: Number,
176 e1: Number,
177 m0: Number,
178 m1: Number
179 },
180 { _id: false }
181 );
182
183 168 const operatorConfigSchema = new Schema<IOperatorConfigDatabase>(
184 169 {
185 170 Skins: [String],
@@ -896,18 +881,9 @@ const crewShipWeaponSchema = new Schema<ICrewShipWeapon>(
896 881 { _id: false }
897 882 );
898 883
899 const shipExteriorSchema = new Schema<IShipExterior>(
900 {
901 SkinFlavourItem: String,
902 Colors: colorSchema,
903 ShipAttachments: { HOOD_ORNAMENT: String }
904 },
905 { _id: false }
906 );
907
908 884 const crewShipCustomizationSchema = new Schema<ICrewShipCustomization>(
909 885 {
910 CrewshipInterior: shipExteriorSchema
886 CrewshipInterior: shipCustomizationSchema
911 887 },
912 888 { _id: false }
913 889 );
Modified src/models/personalRoomsModel.ts +25 -11
@@ -1,19 +1,22 @@
1 1 import { toMongoDate, toOid } from "@/src/helpers/inventoryHelpers";
2 import { colorSchema } from "@/src/models/inventoryModels/inventoryModel";
3 import { IOrbiter, IPersonalRoomsDatabase, PersonalRoomsModelType } from "@/src/types/personalRoomsTypes";
4 2 import {
3 IApartmentDatabase,
5 4 IFavouriteLoadoutDatabase,
6 5 IGardeningDatabase,
7 IPlacedDecosDatabase,
6 IOrbiterClient,
7 IOrbiterDatabase,
8 IPersonalRoomsDatabase,
8 9 IPictureFrameInfo,
10 IPlacedDecosDatabase,
11 IPlantClient,
12 IPlantDatabase,
13 IPlanterDatabase,
9 14 IRoom,
10 15 ITailorShopDatabase,
11 IApartmentDatabase,
12 IPlanterDatabase,
13 IPlantDatabase,
14 IPlantClient
15 } from "@/src/types/shipTypes";
16 PersonalRoomsModelType
17 } from "@/src/types/personalRoomsTypes";
16 18 import { Schema, Types, model } from "mongoose";
19 import { colorSchema, shipCustomizationSchema } from "./commonModel";
17 20
18 21 export const pictureFrameInfoSchema = new Schema<IPictureFrameInfo>(
19 22 {
@@ -137,10 +140,11 @@ const apartmentDefault: IApartmentDatabase = {
137 140 }
138 141 };
139 142
140 const orbiterSchema = new Schema<IOrbiter>(
143 const orbiterSchema = new Schema<IOrbiterDatabase>(
141 144 {
142 145 Features: [String],
143 146 Rooms: [roomSchema],
147 ShipInterior: shipCustomizationSchema,
144 148 VignetteFish: { type: [String], default: undefined },
145 149 FavouriteLoadoutId: Schema.Types.ObjectId,
146 150 Wallpaper: String,
@@ -150,7 +154,18 @@ const orbiterSchema = new Schema<IOrbiter>(
150 154 },
151 155 { _id: false }
152 156 );
153 const orbiterDefault: IOrbiter = {
157 orbiterSchema.set("toJSON", {
158 virtuals: true,
159 transform(_doc, obj) {
160 const db = obj as IOrbiterDatabase;
161 const client = obj as IOrbiterClient;
162
163 if (db.FavouriteLoadoutId) {
164 client.FavouriteLoadoutId = toOid(db.FavouriteLoadoutId);
165 }
166 }
167 });
168 const orbiterDefault: IOrbiterDatabase = {
154 169 Features: ["/Lotus/Types/Items/ShipFeatureItems/EarthNavigationFeatureItem"], //TODO: potentially remove after missionstarting gear
155 170 Rooms: [
156 171 { Name: "AlchemyRoom", MaxCapacity: 1600 },
@@ -197,7 +212,6 @@ const tailorShopDefault: ITailorShopDatabase = {
197 212 export const personalRoomsSchema = new Schema<IPersonalRoomsDatabase>({
198 213 personalRoomsOwnerId: Schema.Types.ObjectId,
199 214 activeShipId: Schema.Types.ObjectId,
200 ShipInteriorColors: colorSchema,
201 215 Ship: { type: orbiterSchema, default: orbiterDefault },
202 216 Apartment: { type: apartmentSchema, default: apartmentDefault },
203 217 TailorShop: { type: tailorShopSchema, default: tailorShopDefault }
Modified src/models/shipModel.ts +1 -1
@@ -1,7 +1,7 @@
1 1 import { Document, Schema, Types, model } from "mongoose";
2 2 import { IShipDatabase } from "../types/shipTypes";
3 3 import { toOid } from "@/src/helpers/inventoryHelpers";
4 import { colorSchema } from "@/src/models/inventoryModels/inventoryModel";
4 import { colorSchema } from "@/src/models/commonModel";
5 5 import { IShipInventory } from "@/src/types/inventoryTypes/inventoryTypes";
6 6
7 7 const shipSchema = new Schema<IShipDatabase>(
Modified src/services/personalRoomsService.ts +1 -2
@@ -1,7 +1,6 @@
1 1 import { PersonalRooms } from "@/src/models/personalRoomsModel";
2 2 import { addItem, getInventory } from "@/src/services/inventoryService";
3 import { TPersonalRoomsDatabaseDocument } from "../types/personalRoomsTypes";
4 import { IGardeningDatabase } from "../types/shipTypes";
3 import { IGardeningDatabase, TPersonalRoomsDatabaseDocument } from "../types/personalRoomsTypes";
5 4 import { getRandomElement } from "./rngService";
6 5
7 6 export const getPersonalRooms = async (
Modified src/services/shipCustomizationsService.ts +6 -5
Modified src/types/guildTypes.ts +1 -1
Modified src/types/inventoryTypes/inventoryTypes.ts +4 -14
Modified src/types/personalRoomsTypes.ts +186 -15
Modified src/types/shipTypes.ts +1 -187