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],
|
Rooms: [roomSchema],
|
||||||
VignetteFish: { type: [String], default: undefined },
|
VignetteFish: { type: [String], default: undefined },
|
||||||
FavouriteLoadoutId: Schema.Types.ObjectId,
|
FavouriteLoadoutId: Schema.Types.ObjectId,
|
||||||
|
Wallpaper: String,
|
||||||
Vignette: String,
|
Vignette: String,
|
||||||
ContentUrlSignature: { type: String, required: false },
|
ContentUrlSignature: { type: String, required: false },
|
||||||
BootLocation: String
|
BootLocation: String
|
||||||
|
@ -115,6 +115,7 @@ import { setGuildMotdController } from "@/src/controllers/api/setGuildMotdContro
|
|||||||
import { setPlacedDecoInfoController } from "@/src/controllers/api/setPlacedDecoInfoController";
|
import { setPlacedDecoInfoController } from "@/src/controllers/api/setPlacedDecoInfoController";
|
||||||
import { setShipCustomizationsController } from "@/src/controllers/api/setShipCustomizationsController";
|
import { setShipCustomizationsController } from "@/src/controllers/api/setShipCustomizationsController";
|
||||||
import { setShipFavouriteLoadoutController } from "@/src/controllers/api/setShipFavouriteLoadoutController";
|
import { setShipFavouriteLoadoutController } from "@/src/controllers/api/setShipFavouriteLoadoutController";
|
||||||
|
import { setShipVignetteController } from "@/src/controllers/api/setShipVignetteController";
|
||||||
import { setSupportedSyndicateController } from "@/src/controllers/api/setSupportedSyndicateController";
|
import { setSupportedSyndicateController } from "@/src/controllers/api/setSupportedSyndicateController";
|
||||||
import { setWeaponSkillTreeController } from "@/src/controllers/api/setWeaponSkillTreeController";
|
import { setWeaponSkillTreeController } from "@/src/controllers/api/setWeaponSkillTreeController";
|
||||||
import { shipDecorationsController } from "@/src/controllers/api/shipDecorationsController";
|
import { shipDecorationsController } from "@/src/controllers/api/shipDecorationsController";
|
||||||
@ -277,6 +278,7 @@ apiRouter.post("/setGuildMotd.php", setGuildMotdController);
|
|||||||
apiRouter.post("/setPlacedDecoInfo.php", setPlacedDecoInfoController);
|
apiRouter.post("/setPlacedDecoInfo.php", setPlacedDecoInfoController);
|
||||||
apiRouter.post("/setShipCustomizations.php", setShipCustomizationsController);
|
apiRouter.post("/setShipCustomizations.php", setShipCustomizationsController);
|
||||||
apiRouter.post("/setShipFavouriteLoadout.php", setShipFavouriteLoadoutController);
|
apiRouter.post("/setShipFavouriteLoadout.php", setShipFavouriteLoadoutController);
|
||||||
|
apiRouter.post("/setShipVignette.php", setShipVignetteController);
|
||||||
apiRouter.post("/setWeaponSkillTree.php", setWeaponSkillTreeController);
|
apiRouter.post("/setWeaponSkillTree.php", setWeaponSkillTreeController);
|
||||||
apiRouter.post("/shipDecorations.php", shipDecorationsController);
|
apiRouter.post("/shipDecorations.php", shipDecorationsController);
|
||||||
apiRouter.post("/startCollectibleEntry.php", startCollectibleEntryController);
|
apiRouter.post("/startCollectibleEntry.php", startCollectibleEntryController);
|
||||||
|
@ -14,6 +14,7 @@ export interface IOrbiter {
|
|||||||
Rooms: IRoom[];
|
Rooms: IRoom[];
|
||||||
VignetteFish?: string[];
|
VignetteFish?: string[];
|
||||||
FavouriteLoadoutId?: Types.ObjectId;
|
FavouriteLoadoutId?: Types.ObjectId;
|
||||||
|
Wallpaper?: string;
|
||||||
Vignette?: string;
|
Vignette?: string;
|
||||||
ContentUrlSignature?: string;
|
ContentUrlSignature?: string;
|
||||||
BootLocation?: TBootLocation;
|
BootLocation?: TBootLocation;
|
||||||
|
@ -30,6 +30,7 @@ export interface IShip {
|
|||||||
Rooms: IRoom[];
|
Rooms: IRoom[];
|
||||||
VignetteFish?: string[];
|
VignetteFish?: string[];
|
||||||
FavouriteLoadoutId?: IOid;
|
FavouriteLoadoutId?: IOid;
|
||||||
|
Wallpaper?: string;
|
||||||
Vignette?: string;
|
Vignette?: string;
|
||||||
BootLocation?: TBootLocation;
|
BootLocation?: TBootLocation;
|
||||||
ContentUrlSignature?: string;
|
ContentUrlSignature?: string;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user