feat: unequipping weapons & deleting loadout configs (#160)

This commit is contained in:
Sainan 2024-05-04 23:11:55 +02:00 committed by GitHub
parent 477f678244
commit 9bded04dfd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 20 additions and 13 deletions

View File

@ -19,7 +19,8 @@ const EquipmentSelectionSchema = new Schema<IEquipmentSelection>(
default: { $oid: "000000000000000000000000" }
},
mod: Number,
cus: Number
cus: Number,
hide: Boolean
},
{
_id: false

View File

@ -77,6 +77,11 @@ export const handleInventoryItemConfigChange = async (
// all non-empty entries are one loadout slot
for (const [loadoutId, loadoutConfig] of Object.entries(newLoadout)) {
if (loadoutConfig.Remove) {
loadout[loadoutSlot].pull({ _id: loadoutId });
continue;
}
const oldLoadoutConfig = loadout[loadoutSlot].find(
loadout => loadout._id.toString() === loadoutId
);
@ -106,8 +111,7 @@ export const handleInventoryItemConfigChange = async (
throw new Error("loadout index not found");
}
//perhaps .overwrite() is better
loadout[loadoutSlot][loadoutIndex].set(loadoutConfig);
loadout[loadoutSlot][loadoutIndex].overwrite(loadoutConfig);
}
}
await loadout.save();

View File

@ -76,17 +76,19 @@ export interface ILoadoutConfigDatabase extends Omit<ILoadoutConfigClient, "Item
// for request and response from and to client
export interface ILoadoutConfigClient {
ItemId: IOid;
n: string;
PresetIcon: string;
Favorite: boolean;
s: IEquipmentSelection;
p: IEquipmentSelection;
l: IEquipmentSelection;
m: IEquipmentSelection;
Remove?: boolean; // when client wants to remove a config, it only includes ItemId & Remove.
n?: string;
PresetIcon?: string;
Favorite?: boolean;
s?: IEquipmentSelection;
p?: IEquipmentSelection;
l?: IEquipmentSelection;
m?: IEquipmentSelection;
}
export interface IEquipmentSelection {
ItemId: IOid;
mod: number;
cus: number;
ItemId?: IOid;
mod?: number;
cus?: number;
hide?: boolean;
}