feat: liset stencil, vignette, & fish
This commit is contained in:
parent
6fa23fe95b
commit
fe6a88ef3f
48
src/controllers/api/setShipVignetteController.ts
Normal file
48
src/controllers/api/setShipVignetteController.ts
Normal file
@ -0,0 +1,48 @@
|
||||
import { addMiscItems, combineInventoryChanges, getInventory } from "@/src/services/inventoryService";
|
||||
import { getAccountIdForRequest } from "@/src/services/loginService";
|
||||
import { getPersonalRooms } from "@/src/services/personalRoomsService";
|
||||
import { IInventoryChanges } from "@/src/types/purchaseTypes";
|
||||
import { logger } from "@/src/utils/logger";
|
||||
import { RequestHandler } from "express";
|
||||
|
||||
export const setShipVignetteController: RequestHandler = async (req, res) => {
|
||||
const accountId = await getAccountIdForRequest(req);
|
||||
const inventory = await getInventory(accountId, "MiscItems");
|
||||
const personalRooms = await getPersonalRooms(accountId);
|
||||
const body = JSON.parse(String(req.body)) as ISetShipVignetteRequest;
|
||||
personalRooms.Ship.Wallpaper = body.Wallpaper;
|
||||
personalRooms.Ship.Vignette = body.Vignette;
|
||||
personalRooms.Ship.VignetteFish ??= [];
|
||||
const inventoryChanges: IInventoryChanges = {};
|
||||
for (let i = 0; i != body.Fish.length; ++i) {
|
||||
if (body.Fish[i] && !personalRooms.Ship.VignetteFish[i]) {
|
||||
logger.debug(`moving ${body.Fish[i]} from inventory to vignette slot ${i}`);
|
||||
const miscItemsDelta = [{ ItemType: body.Fish[i], ItemCount: -1 }];
|
||||
addMiscItems(inventory, miscItemsDelta);
|
||||
combineInventoryChanges(inventoryChanges, { MiscItems: miscItemsDelta });
|
||||
} else if (personalRooms.Ship.VignetteFish[i] && !body.Fish[i]) {
|
||||
logger.debug(`moving ${personalRooms.Ship.VignetteFish[i]} from vignette slot ${i} to inventory`);
|
||||
const miscItemsDelta = [{ ItemType: personalRooms.Ship.VignetteFish[i], ItemCount: +1 }];
|
||||
addMiscItems(inventory, miscItemsDelta);
|
||||
combineInventoryChanges(inventoryChanges, { MiscItems: miscItemsDelta });
|
||||
}
|
||||
}
|
||||
personalRooms.Ship.VignetteFish = body.Fish;
|
||||
if (body.VignetteDecos.length) {
|
||||
logger.error(`setShipVignette request not fully handled:`, body);
|
||||
}
|
||||
await Promise.all([inventory.save(), personalRooms.save()]);
|
||||
res.json({
|
||||
Wallpaper: body.Wallpaper,
|
||||
Vignette: body.Vignette,
|
||||
VignetteFish: body.Fish,
|
||||
InventoryChanges: inventoryChanges
|
||||
});
|
||||
};
|
||||
|
||||
interface ISetShipVignetteRequest {
|
||||
Wallpaper: string;
|
||||
Vignette: string;
|
||||
Fish: string[];
|
||||
VignetteDecos: unknown[];
|
||||
}
|
@ -92,6 +92,7 @@ const orbiterSchema = new Schema<IOrbiter>(
|
||||
Rooms: [roomSchema],
|
||||
VignetteFish: { type: [String], default: undefined },
|
||||
FavouriteLoadoutId: Schema.Types.ObjectId,
|
||||
Wallpaper: String,
|
||||
Vignette: String,
|
||||
ContentUrlSignature: { type: String, required: false },
|
||||
BootLocation: String
|
||||
|
@ -115,6 +115,7 @@ import { setGuildMotdController } from "@/src/controllers/api/setGuildMotdContro
|
||||
import { setPlacedDecoInfoController } from "@/src/controllers/api/setPlacedDecoInfoController";
|
||||
import { setShipCustomizationsController } from "@/src/controllers/api/setShipCustomizationsController";
|
||||
import { setShipFavouriteLoadoutController } from "@/src/controllers/api/setShipFavouriteLoadoutController";
|
||||
import { setShipVignetteController } from "@/src/controllers/api/setShipVignetteController";
|
||||
import { setSupportedSyndicateController } from "@/src/controllers/api/setSupportedSyndicateController";
|
||||
import { setWeaponSkillTreeController } from "@/src/controllers/api/setWeaponSkillTreeController";
|
||||
import { shipDecorationsController } from "@/src/controllers/api/shipDecorationsController";
|
||||
@ -277,6 +278,7 @@ apiRouter.post("/setGuildMotd.php", setGuildMotdController);
|
||||
apiRouter.post("/setPlacedDecoInfo.php", setPlacedDecoInfoController);
|
||||
apiRouter.post("/setShipCustomizations.php", setShipCustomizationsController);
|
||||
apiRouter.post("/setShipFavouriteLoadout.php", setShipFavouriteLoadoutController);
|
||||
apiRouter.post("/setShipVignette.php", setShipVignetteController);
|
||||
apiRouter.post("/setWeaponSkillTree.php", setWeaponSkillTreeController);
|
||||
apiRouter.post("/shipDecorations.php", shipDecorationsController);
|
||||
apiRouter.post("/startCollectibleEntry.php", startCollectibleEntryController);
|
||||
|
@ -14,6 +14,7 @@ export interface IOrbiter {
|
||||
Rooms: IRoom[];
|
||||
VignetteFish?: string[];
|
||||
FavouriteLoadoutId?: Types.ObjectId;
|
||||
Wallpaper?: string;
|
||||
Vignette?: string;
|
||||
ContentUrlSignature?: string;
|
||||
BootLocation?: TBootLocation;
|
||||
|
@ -30,6 +30,7 @@ export interface IShip {
|
||||
Rooms: IRoom[];
|
||||
VignetteFish?: string[];
|
||||
FavouriteLoadoutId?: IOid;
|
||||
Wallpaper?: string;
|
||||
Vignette?: string;
|
||||
BootLocation?: TBootLocation;
|
||||
ContentUrlSignature?: string;
|
||||
|
Loading…
x
Reference in New Issue
Block a user