5180 fichiers 38.5 Mo 0 téléchargements 195 vues mis à jour il y a 5 heures ui
nitro-v36-with-renderer-v36 / src / api / inventory / PetUtilities.ts
PetUtilities.ts 2.4 Ko Télécharger le fichier
import { CreateLinkEvent, PetData } from '@octane/renderer';
import { cancelRoomObjectPlacement, getPlacingItemId } from './InventoryUtilities';
import { IPetItem } from './IPetItem';
import { UnseenItemCategory } from './UnseenItemCategory';

export const getAllPetIds = (petItems: IPetItem[]) => petItems.map((item) => item.petData.id);

export const addSinglePetItem = (petData: PetData, set: IPetItem[], unseen: boolean = true) => {
    const petItem = { petData };

    if (unseen) {
        //petItem.isUnseen = true;

        set.unshift(petItem);
    } else {
        set.push(petItem);
    }

    return petItem;
};

export const removePetItemById = (id: number, set: IPetItem[]) => {
    let index = 0;

    while (index < set.length) {
        const petItem = set[index];

        if (petItem && petItem.petData.id === id) {
            if (getPlacingItemId() === petItem.petData.id) {
                cancelRoomObjectPlacement();

                CreateLinkEvent('inventory/open');
            }

            set.splice(index, 1);

            return petItem;
        }

        index++;
    }

    return null;
};

export const processPetFragment = (set: IPetItem[], fragment: Map<number, PetData>, isUnseen: (category: number, itemId: number) => boolean) => {
    const existingIds = getAllPetIds(set);
    const addedIds: number[] = [];
    const removedIds: number[] = [];

    for (const key of fragment.keys()) existingIds.indexOf(key) === -1 && addedIds.push(key);

    for (const itemId of existingIds) !fragment.get(itemId) && removedIds.push(itemId);

    const emptyExistingSet = existingIds.length === 0;

    for (const id of removedIds) removePetItemById(id, set);

    for (const id of addedIds) {
        const parser = fragment.get(id);

        if (!parser) continue;

        addSinglePetItem(parser, set, isUnseen(UnseenItemCategory.PET, parser.id));
    }

    return set;
};

export const mergePetFragments = (fragment: Map<number, PetData>, totalFragments: number, fragmentNumber: number, fragments: Map<number, PetData>[]) => {
    if (totalFragments === 1) return fragment;

    fragments[fragmentNumber] = fragment;

    for (const frag of fragments) {
        if (!frag) return null;
    }

    const merged: Map<number, PetData> = new Map();

    for (const frag of fragments) {
        for (const [key, value] of frag) merged.set(key, value);

        frag.clear();
    }

    fragments = null;

    return merged;
};
15Sujets
1Dépôts
20Membres
2En ligne
Profile
Inscrit
Dernière visite
Messages
0
Votes positifs
0
Votes négatifs
0

Nous utilisons des cookies pour assurer le bon fonctionnement du site et améliorer votre expérience. en savoir plus

Autoriser