5180 fichiers 38.5 Mo 0 téléchargements 427 vues mis à jour il y a 7 heures ui
nitro-v36-with-renderer-v36 / src / hooks / rooms / widgets / furniture / useFurnitureBadgeDisplayWidget.ts
useFurnitureBadgeDisplayWidget.ts 2.9 Ko Télécharger le fichier
import { GetRoomEngine, GetSessionDataManager, RoomEngineTriggerWidgetEvent, RoomObjectVariable, StringDataType } from '@octane/renderer';
import { useState } from 'react';
import { LocalizeBadgeDescription, LocalizeBadgeName, LocalizeText } from '../../../../api';
import { useOctaneEvent } from '../../../events';
import { useNotification } from '../../../notification';
import { useFurniRemovedEvent } from '../../engine';

const useFurnitureBadgeDisplayWidgetState = () => {
    const [objectId, setObjectId] = useState(-1);
    const [category, setCategory] = useState(-1);
    const [color, setColor] = useState('1');
    const [badgeName, setBadgeName] = useState('');
    const [badgeDesc, setBadgeDesc] = useState('');
    const [date, setDate] = useState('');
    const [senderName, setSenderName] = useState('');
    const { simpleAlert = null } = useNotification();

    const onClose = () => {
        setObjectId(-1);
        setCategory(-1);
        setColor('1');
        setBadgeName('');
        setBadgeDesc('');
        setDate('');
        setSenderName('');
    };

    useOctaneEvent<RoomEngineTriggerWidgetEvent>(
        [RoomEngineTriggerWidgetEvent.REQUEST_BADGE_DISPLAY_ENGRAVING, RoomEngineTriggerWidgetEvent.REQUEST_ACHIEVEMENT_RESOLUTION_ENGRAVING],
        (event) => {
            const roomObject = GetRoomEngine().getRoomObject(event.roomId, event.objectId, event.category);

            if (!roomObject) return;

            const stringStuff = new StringDataType();

            stringStuff.initializeFromRoomObjectModel(roomObject.model);

            setObjectId(event.objectId);
            setCategory(event.category);
            setColor('1');
            setBadgeName(LocalizeBadgeName(stringStuff.getValue(1)));
            setBadgeDesc(LocalizeBadgeDescription(stringStuff.getValue(1)));
            setDate(stringStuff.getValue(2));
            setSenderName(stringStuff.getValue(3));
        }
    );

    useOctaneEvent<RoomEngineTriggerWidgetEvent>(RoomEngineTriggerWidgetEvent.REQUEST_ACHIEVEMENT_RESOLUTION_FAILED, (event) => {
        const roomObject = GetRoomEngine().getRoomObject(event.roomId, event.objectId, event.category);

        if (!roomObject) return;

        const ownerId = roomObject.model.getValue<number>(RoomObjectVariable.FURNITURE_OWNER_ID);

        if (ownerId !== GetSessionDataManager().userId) return;

        simpleAlert(
            `${LocalizeText('resolution.failed.subtitle')} ${LocalizeText('resolution.failed.text')}`,
            null,
            null,
            null,
            LocalizeText('resolution.failed.title')
        );
    });

    useFurniRemovedEvent(objectId !== -1 && category !== -1, (event) => {
        if (event.id !== objectId || event.category !== category) return;

        onClose();
    });

    return { objectId, category, color, badgeName, badgeDesc, date, senderName, onClose };
};

export const useFurnitureBadgeDisplayWidget = useFurnitureBadgeDisplayWidgetState;
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