import { GetAvatarRenderManager, GetSessionDataManager, HabboClubLevelEnum, RoomControllerLevel } from '@nitrots/nitro-renderer'; import { FC, useEffect, useState } from 'react'; import { GetClubMemberLevel, GetRoomSession, LocalizeText, MannequinUtilities } from '../../../../api'; import { Button, Column, LayoutAvatarImageView, LayoutCurrencyIcon, NitroCardContentView, NitroCardHeaderView, NitroCardView, Text } from '../../../../common'; import { useFurnitureMannequinWidget } from '../../../../hooks'; import { NitroInput } from '../../../../layout'; const MODE_NONE: number = -1; const MODE_CONTROLLER: number = 0; const MODE_UPDATE: number = 1; const MODE_PEER: number = 2; const MODE_NO_CLUB: number = 3; const MODE_WRONG_GENDER: number = 4; export const FurnitureMannequinView: FC<{}> = props => { const [ renderedFigure, setRenderedFigure ] = useState(null); const [ mode, setMode ] = useState(MODE_NONE); const { objectId = -1, figure = null, gender = null, clubLevel = HabboClubLevelEnum.NO_CLUB, name = null, setName = null, saveFigure = null, wearFigure = null, saveName = null, onClose = null } = useFurnitureMannequinWidget(); useEffect(() => { if(objectId === -1) return; const roomSession = GetRoomSession(); if(roomSession.isRoomOwner || (roomSession.controllerLevel >= RoomControllerLevel.GUEST) || GetSessionDataManager().isModerator) { setMode(MODE_CONTROLLER); return; } if(GetSessionDataManager().gender.toLowerCase() !== gender.toLowerCase()) { setMode(MODE_WRONG_GENDER); return; } if(GetClubMemberLevel() < clubLevel) { setMode(MODE_NO_CLUB); return; } setMode(MODE_PEER); }, [ objectId, gender, clubLevel ]); useEffect(() => { switch(mode) { case MODE_CONTROLLER: case MODE_WRONG_GENDER: { const figureContainer = GetAvatarRenderManager().createFigureContainer(figure); MannequinUtilities.transformAsMannequinFigure(figureContainer); setRenderedFigure(figureContainer.getFigureString()); break; } case MODE_UPDATE: { const figureContainer = GetAvatarRenderManager().createFigureContainer(GetSessionDataManager().figure); MannequinUtilities.transformAsMannequinFigure(figureContainer); setRenderedFigure(figureContainer.getFigureString()); break; } case MODE_PEER: case MODE_NO_CLUB: { const figureContainer = MannequinUtilities.getMergedMannequinFigureContainer(GetSessionDataManager().figure, figure); setRenderedFigure(figureContainer.getFigureString()); break; } } }, [ mode, figure, clubLevel ]); if(objectId === -1) return null; return (
{ (clubLevel > 0) && }
{ (mode === MODE_CONTROLLER) && <> setName(event.target.value) } />
} { (mode === MODE_UPDATE) && <>
{ name } { LocalizeText('mannequin.widget.savetext') }
setMode(MODE_CONTROLLER) }> { LocalizeText('mannequin.widget.back') }
} { (mode === MODE_PEER) && <>
{ name } { LocalizeText('mannequin.widget.weartext') }
} { (mode === MODE_NO_CLUB) &&
{ LocalizeText('mannequin.widget.clubnotification') }
} { (mode === MODE_WRONG_GENDER) && { LocalizeText('mannequin.widget.wronggender') } }
); };