From 268509a107c040bd32f4961238cebc12f2a7dda1 Mon Sep 17 00:00:00 2001 From: Bill Date: Mon, 21 Feb 2022 23:51:03 -0500 Subject: [PATCH] Add max wardrobe slots to config --- public/ui-config.json.example | 1 + .../avatar-editor/AvatarEditorView.tsx | 18 ++++++++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/public/ui-config.json.example b/public/ui-config.json.example index 70135a75..9f648474 100644 --- a/public/ui-config.json.example +++ b/public/ui-config.json.example @@ -8,6 +8,7 @@ "habbopages.url": "https://website.com/habbopages/", "chat.viewer.height.percentage": 0.40, "widget.dimmer.colorwheel": false, + "avatar.wardrobe.max.slots": 10, "hotelview": { "widgets": { "slot.1.widget": "promoarticle", diff --git a/src/components/avatar-editor/AvatarEditorView.tsx b/src/components/avatar-editor/AvatarEditorView.tsx index a0cb113e..55d8479f 100644 --- a/src/components/avatar-editor/AvatarEditorView.tsx +++ b/src/components/avatar-editor/AvatarEditorView.tsx @@ -1,7 +1,7 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { AvatarEditorFigureCategory, FigureSetIdsMessageEvent, GetWardrobeMessageComposer, IAvatarFigureContainer, UserFigureComposer, UserWardrobePageEvent } from '@nitrots/nitro-renderer'; -import { FC, useCallback, useEffect, useState } from 'react'; -import { GetAvatarRenderManager, GetClubMemberLevel, GetSessionDataManager, LocalizeText } from '../../api'; +import { FC, useCallback, useEffect, useMemo, useState } from 'react'; +import { GetAvatarRenderManager, GetClubMemberLevel, GetConfiguration, GetSessionDataManager, LocalizeText } from '../../api'; import { Button } from '../../common/Button'; import { ButtonGroup } from '../../common/ButtonGroup'; import { Column } from '../../common/Column'; @@ -25,7 +25,6 @@ import { AvatarEditorWardrobeView } from './views/wardrobe/AvatarEditorWardrobeV const DEFAULT_MALE_FIGURE: string = 'hr-100.hd-180-7.ch-215-66.lg-270-79.sh-305-62.ha-1002-70.wa-2007'; const DEFAULT_FEMALE_FIGURE: string = 'hr-515-33.hd-600-1.ch-635-70.lg-716-66-62.sh-735-68'; -const MAX_SAVED_FIGURES: number = 10; export const AvatarEditorView: FC<{}> = props => { @@ -36,13 +35,15 @@ export const AvatarEditorView: FC<{}> = props => const [ activeCategory, setActiveCategory ] = useState(null); const [ figureSetIds, setFigureSetIds ] = useState([]); const [ boundFurnitureNames, setBoundFurnitureNames ] = useState([]); - const [ savedFigures, setSavedFigures ] = useState<[ IAvatarFigureContainer, string ][]>(new Array(MAX_SAVED_FIGURES)); + const [ savedFigures, setSavedFigures ] = useState<[ IAvatarFigureContainer, string ][]>([]); const [ isWardrobeVisible, setIsWardrobeVisible ] = useState(false); const [ lastFigure, setLastFigure ] = useState(null); const [ lastGender, setLastGender ] = useState(null); const [ needsReset, setNeedsReset ] = useState(false); const [ isInitalized, setIsInitalized ] = useState(false); + const maxWardrobeSlots = useMemo(() => GetConfiguration('avatar.wardrobe.max.slots', 10), []); + const onAvatarEditorEvent = useCallback((event: AvatarEditorEvent) => { switch(event.type) @@ -88,7 +89,7 @@ export const AvatarEditorView: FC<{}> = props => let i = 0; - while(i < MAX_SAVED_FIGURES) + while(i < maxWardrobeSlots) { savedFigures.push([ null, null ]); @@ -103,7 +104,7 @@ export const AvatarEditorView: FC<{}> = props => } setSavedFigures(savedFigures) - }, []); + }, [ maxWardrobeSlots ]); CreateMessageHook(UserWardrobePageEvent, onUserWardrobePageEvent); @@ -194,6 +195,11 @@ export const AvatarEditorView: FC<{}> = props => setFigureData(figures.get(gender)); }, [ figures ]); + useEffect(() => + { + setSavedFigures(new Array(maxWardrobeSlots)); + }, [ maxWardrobeSlots ]); + useEffect(() => { if(!isWardrobeVisible) return;