5180 fichiers 38.5 Mo 0 téléchargements 398 vues mis à jour il y a 7 heures ui
nitro-v36-with-renderer-v36 / src / components / inventory / views / pet / InventoryPetItemView.tsx
InventoryPetItemView.tsx 2.3 Ko Télécharger le fichier
import { MouseEventType } from '@octane/renderer';
import { FC, MouseEvent, PropsWithChildren, useState } from 'react';
import { attemptPetPlacement, IPetItem, UnseenItemCategory } from '../../../../api';
import { LayoutRarityLevelView } from '../../../../common';
import { NativeTextTree } from '../../../../common/native-text/NativeTextTree';
import { useInventoryPets, useInventoryUnseenTracker } from '../../../../hooks';
import { InventoryPetImageView } from './InventoryPetImageView';

export const InventoryPetItemView: FC<PropsWithChildren<{ petItem: IPetItem }>> = (props) => {
    const { petItem = null, children = null, ...rest } = props;
    const [isMouseDown, setMouseDown] = useState(false);
    const { selectedPet = null, setSelectedPet = null } = useInventoryPets();
    const { isUnseen } = useInventoryUnseenTracker();
    const unseen = isUnseen(UnseenItemCategory.PET, petItem.petData.id);

    const onMouseEvent = (event: MouseEvent) => {
        switch (event.type) {
            case MouseEventType.MOUSE_DOWN:
                setSelectedPet(petItem);
                setMouseDown(true);
                return;
            case MouseEventType.MOUSE_UP:
                setMouseDown(false);
                return;
            case 'mouseleave':
                if (!isMouseDown || !(petItem === selectedPet)) return;

                setMouseDown(false);
                attemptPetPlacement(petItem);
                return;
            case 'dblclick':
                attemptPetPlacement(petItem);
                return;
        }
    };

    return (
        <NativeTextTree>
            <div
                className={`octane-inventory-thumb${petItem === selectedPet ? ' is-selected' : ''}${unseen ? ' is-unseen' : ''}`}
                onDoubleClick={onMouseEvent}
                onMouseDown={onMouseEvent}
                onMouseLeave={onMouseEvent}
                onMouseUp={onMouseEvent}
                {...rest}
            >
                <span className="octane-inventory-animal-thumb-image">
                    <InventoryPetImageView pet={petItem.petData} />
                </span>
                {petItem.petData.rarityLevel >= 0 && <LayoutRarityLevelView className="octane-inventory-animal-rarity" level={petItem.petData.rarityLevel} />}
                {children}
            </div>
        </NativeTextTree>
    );
};
15Sujets
1Dépôts
20Membres
3En 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