5180 fichiers 38.5 Mo 0 téléchargements 594 vues mis à jour il y a 8 heures ui
nitro-v36-with-renderer-v36 / src / components / catalog / views / page / layout / pets / petCatalog.helpers.ts
petCatalog.helpers.ts 1.9 Ko Télécharger le fichier
export interface PetPaletteLike {
    breedId: number;
    paletteId: number;
    rare: boolean;
    sellable: boolean;
    type: number;
    clubOnly?: boolean;
}

export interface PetColorResultLike {
    primaryColor: number;
    secondaryColor: number;
}

export interface NewPetPaletteChoice<TPalette extends PetPaletteLike = PetPaletteLike> {
    colors: number[];
    palette: TPalette;
}

export const isLegacyPetType = (petType: number) => petType >= 0 && petType <= 7;

export const getPetNameMaxLength = (petType: number) => (isLegacyPetType(petType) ? 15 : 16);

export const filterPetPalettes = <TPalette extends PetPaletteLike>(petType: number, palettes: readonly TPalette[]) =>
    palettes.filter((palette) => palette.sellable && palette.type === petType);

export const buildNewPetPaletteChoices = <TPalette extends PetPaletteLike>(
    petType: number,
    palettes: readonly TPalette[],
    getColorResult: (petType: number, paletteId: number) => PetColorResultLike | null
): NewPetPaletteChoice<TPalette>[] => {
    const choices: NewPetPaletteChoice<TPalette>[] = [];

    for (const palette of filterPetPalettes(petType, palettes)) {
        const result = getColorResult(petType, palette.paletteId);

        if (!result) continue;

        choices.push({
            colors:
                result.primaryColor === result.secondaryColor
                    ? [result.primaryColor]
                    : [result.primaryColor, result.secondaryColor],
            palette
        });

        if (choices.length === 20) break;
    }

    return choices;
};

const toColorHex = (color: number) => Math.max(0, Math.min(0xffffff, color)).toString(16).toUpperCase().padStart(6, '0');

export const buildPetPurchaseExtraData = (name: string, petType: number, palette: PetPaletteLike, selectedColor: number) => {
    const color = isLegacyPetType(petType) ? selectedColor : 0xffffff;

    return `${name}\n${palette.paletteId}\n${toColorHex(color)}`;
};
15Sujets
1Dépôts
20Membres
4En 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