feat: loc-pin saving (#879)

Closes #404

Co-authored-by: Sainan <sainan@calamity.inc>
Reviewed-on: http://209.141.38.3/OpenWF/SpaceNinjaServer/pulls/879
Reviewed-by: Sainan <sainan@noreply.localhost>
Co-authored-by: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com>
Co-committed-by: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com>
This commit is contained in:
AMelonInsideLemon 2025-02-01 07:41:34 -08:00 committed by Sainan
parent 53ce6ccce2
commit 5460ccf93d
4 changed files with 73 additions and 1 deletions

View File

@ -60,7 +60,10 @@ import {
ITraits, ITraits,
IKubrowPetDetailsClient, IKubrowPetDetailsClient,
IKubrowPetEggDatabase, IKubrowPetEggDatabase,
IKubrowPetEggClient IKubrowPetEggClient,
ICustomMarkers,
IMarkerInfo,
IMarker
} from "../../types/inventoryTypes/inventoryTypes"; } from "../../types/inventoryTypes/inventoryTypes";
import { IOid } from "../../types/commonTypes"; import { IOid } from "../../types/commonTypes";
import { import {
@ -849,6 +852,35 @@ infestedFoundrySchema.set("toJSON", {
} }
}); });
const markerSchema = new Schema<IMarker>(
{
anchorName: String,
color: Number,
label: String,
x: Number,
y: Number,
z: Number,
showInHud: Boolean
},
{ _id: false }
);
const markerInfoSchema = new Schema<IMarkerInfo>(
{
icon: String,
markers: [markerSchema]
},
{ _id: false }
);
const CustomMarkersSchema = new Schema<ICustomMarkers>(
{
tag: String,
markerInfos: [markerInfoSchema]
},
{ _id: false }
);
const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>( const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
{ {
accountOwnerId: Schema.Types.ObjectId, accountOwnerId: Schema.Types.ObjectId,
@ -1133,6 +1165,9 @@ const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
//https://warframe.fandom.com/wiki/Incarnon //https://warframe.fandom.com/wiki/Incarnon
EvolutionProgress: { type: [evolutionProgressSchema], default: undefined }, EvolutionProgress: { type: [evolutionProgressSchema], default: undefined },
//https://warframe.fandom.com/wiki/Loc-Pin
CustomMarkers: { type: [CustomMarkersSchema], default: undefined },
//Unknown and system //Unknown and system
DuviriInfo: DuviriInfoSchema, DuviriInfo: DuviriInfoSchema,
Mailbox: MailboxSchema, Mailbox: MailboxSchema,

View File

@ -155,6 +155,20 @@ export const addMissionInventoryUpdates = (
inventory.PlayerSkills.LPP_DRIFTER += value.LPP_DRIFTER; inventory.PlayerSkills.LPP_DRIFTER += value.LPP_DRIFTER;
break; break;
} }
case "CustomMarkers": {
value.forEach(markers => {
const map = inventory.CustomMarkers
? inventory.CustomMarkers.find(entry => entry.tag == markers.tag)
: undefined;
if (map) {
map.markerInfos = markers.markerInfos;
} else {
inventory.CustomMarkers ??= [];
inventory.CustomMarkers.push(markers);
}
});
break;
}
default: default:
// Equipment XP updates // Equipment XP updates
if (equipmentKeys.includes(key as TEquipmentKey)) { if (equipmentKeys.includes(key as TEquipmentKey)) {

View File

@ -343,6 +343,7 @@ export interface IInventoryClient extends IDailyAffiliations {
LastInventorySync: IOid; LastInventorySync: IOid;
NextRefill: IMongoDate; // Next time argon crystals will have a decay tick NextRefill: IMongoDate; // Next time argon crystals will have a decay tick
FoundToday?: IMiscItem[]; // for Argon Crystals FoundToday?: IMiscItem[]; // for Argon Crystals
CustomMarkers: ICustomMarkers[];
ActiveLandscapeTraps: any[]; ActiveLandscapeTraps: any[];
EvolutionProgress?: IEvolutionProgress[]; EvolutionProgress?: IEvolutionProgress[];
RepVotes: any[]; RepVotes: any[];
@ -1056,3 +1057,23 @@ export interface ICompletedDialogue {
Booleans: string[]; Booleans: string[];
Choices: number[]; Choices: number[];
} }
export interface ICustomMarkers {
tag: string;
markerInfos: IMarkerInfo[];
}
export interface IMarkerInfo {
icon: string;
markers: IMarker[];
}
export interface IMarker {
anchorName: string;
color: number;
label?: string;
x: number;
y: number;
z: number;
showInHud: boolean;
}

View File

@ -11,6 +11,7 @@ import {
TSolarMapRegion, TSolarMapRegion,
TEquipmentKey, TEquipmentKey,
IFusionTreasure, IFusionTreasure,
ICustomMarkers,
IPlayerSkills, IPlayerSkills,
IQuestKeyDatabase IQuestKeyDatabase
} from "./inventoryTypes/inventoryTypes"; } from "./inventoryTypes/inventoryTypes";
@ -75,6 +76,7 @@ export type IMissionInventoryUpdateRequest = {
EvolutionProgress?: IEvolutionProgress[]; EvolutionProgress?: IEvolutionProgress[];
FocusXpIncreases?: number[]; FocusXpIncreases?: number[];
PlayerSkillGains: IPlayerSkills; PlayerSkillGains: IPlayerSkills;
CustomMarkers?: ICustomMarkers[];
} & { } & {
[K in TEquipmentKey]?: IEquipmentClient[]; [K in TEquipmentKey]?: IEquipmentClient[];
}; };