From 64cd0bf215123297afd2122e076e3c8b694e8bfa Mon Sep 17 00:00:00 2001 From: MyNameIsBatman Date: Sat, 12 Jun 2021 18:11:15 -0300 Subject: [PATCH] Mannequin Room Widget --- src/assets/images/mannequin/background.png | Bin 5267 -> 0 bytes src/assets/images/mannequin/hc.png | Bin 363 -> 0 bytes .../lovelock-widget/lovelock-spritesheet.png | Bin 0 -> 39390 bytes .../mannequin-spritesheet.png | Bin 0 -> 5719 bytes src/assets/images/trophies/shine.png | Bin 3742 -> 0 bytes .../widgets/furniture/FurnitureWidgets.scss | 2 + .../FurnitureExchangeCreditView.scss | 3 + .../FurnitureExchangeCreditView.tsx | 2 +- .../mannequin/FurnitureMannequinData.ts | 11 + .../mannequin/FurnitureMannequinView.scss | 9 + .../mannequin/FurnitureMannequinView.tsx | 216 +++++++++++++++++- .../FurnitureMannequinView.types.tsx | 9 +- 12 files changed, 243 insertions(+), 9 deletions(-) delete mode 100644 src/assets/images/mannequin/background.png delete mode 100644 src/assets/images/mannequin/hc.png create mode 100644 src/assets/images/room-widgets/lovelock-widget/lovelock-spritesheet.png create mode 100644 src/assets/images/room-widgets/mannequin-widget/mannequin-spritesheet.png delete mode 100644 src/assets/images/trophies/shine.png create mode 100644 src/views/room/widgets/furniture/exchange-credit/FurnitureExchangeCreditView.scss create mode 100644 src/views/room/widgets/furniture/mannequin/FurnitureMannequinData.ts diff --git a/src/assets/images/mannequin/background.png b/src/assets/images/mannequin/background.png deleted file mode 100644 index e3c824a63de2e3649ddf204a0e6d8af9c4a60312..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5267 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 diff --git a/src/assets/images/mannequin/hc.png b/src/assets/images/mannequin/hc.png deleted file mode 100644 index 949f3d47e32584a05ce5496c70384a95689758e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 363 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 literal 0 HcmV?d00001 diff --git a/src/assets/images/room-widgets/mannequin-widget/mannequin-spritesheet.png b/src/assets/images/room-widgets/mannequin-widget/mannequin-spritesheet.png new file mode 100644 index 0000000000000000000000000000000000000000..45e11f346dcf87cc6d35244e1940d23995ba07c0 GIT binary patch literal 5719 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 JPDHLkV1o8Ili&aV literal 0 HcmV?d00001 diff --git a/src/assets/images/trophies/shine.png b/src/assets/images/trophies/shine.png deleted file mode 100644 index 4f42c70adcba4ecf1c7abbfcad8f6b576d296280..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3742 zcmeHKZA@Eb6fOdV(Lzi3CL-Y;p>cMilg7r*}0@2RA`A+GH!>vBW!*jRw~t*)%p^N+TC%Z<(c zi6#B@i~feSj~%X_yeZ#-J}0p}-LJfoM6vQ}g4SP-Bxp55I?VMIq$4M28eP3JXw`xMi<$>Ehw={SxXwAH;!dP{HrS-M6ieS~mx8&wVzZgo*mm%vP}ALssAqC+bzF}bVNL+L2vnrlCemo&Zid*E zL)~zlMGQL96yjab*twPl1bVO^2sHTt5a{bsz^v+uK~B^yVXzs;q)meZ3e;-W9mS3N z^F^-YP?y-iLj$I70p*EAbfX0e;pq>b*u!Zf5RXWkfl)-lvq8#rVA^Ur_-RDI9I9(X z*oUbzI&Te+M>=&d8Yhv!DG&>*iM|n`9J?=?Y&Zp18^0HucT-zHWYWk6*0&)0TEZ8P z6DFxToL5CV&*5BxFSs99;Y-4!0C$U?sl)NJNE=4cpW!QU%xtO!zcj-J{yZ^YSBaJ7 zKA(W_O~k=J-l=2lq6+A9yF)!ZImmixeGG)r$L>7P+be<^cWtyM0%(8B6^+~1i2HjT zm)f#pdaUB;i4#aW`1^R`EE{DY9$sn@Wax@{H%N@R7c`1#gojQh1v+zeF9^~r0BZiI z7X<0oGFWD}UBgJ(n#==>M++eML&9h6Rw5X;lq>Z;1G3jg3$$(*oUJttW+Fbg6Pdda zNJMnBkPbV~K{z!?#b%N@Gw49ZytM)iv&Bq}??TmaN;n?II%`NMgY)M|g971OU#7Yqm3Hzya6X!xQNaF;WtsqAHEhwK_(B!244{=t&HzYnQd4l; zZd!T*_VlO=65Zz5Y;V~9x2GD05a)Ej8P-dLZ)W4QvuLyaz^4Ppd3;CnzJ}ehOq-9w z8}cpF=4AMvJ0_b|12ZQmDa}+2-ivZ>J-lHRBagj@k5fJ$#;Ul$e=3sj1rKRUVCvTJ z=FT8m)FS0pWE?jacvfWE_gc!?#nU3KKC2`&XZXY6XS|?8_Vavs*xtpX3t#Z;-Pu64 zNX`Wnvq)|#G5$A%M<%|gVCNetpSX%o+F0*RAqBhR4IMHM3;t#(Z638OefK+b@eFO~ z7rmk^gzg}1sYbEt6%Ky%kW42Eh;~G1zGlx5<>1nMAhm`?cit$b54$t70TnhUGoDsJ zK`R>MB4(i&#dLM>hbvd%X6?zGv?rpNORO~(O`)9Yo31{KA_n()3YuaEuj8Iasd{N4 z8;xlW)pE}O(znD0z6e{_{$_m|Tb*Vn{sicM3AFIE3O)h6_lL2*mZt&tZpZ-J_{k|u z%zbjCtF8(Ae*u = pro if(!exchangeCreditData) return null; return ( - + processAction('close') } />
diff --git a/src/views/room/widgets/furniture/mannequin/FurnitureMannequinData.ts b/src/views/room/widgets/furniture/mannequin/FurnitureMannequinData.ts new file mode 100644 index 00000000..10928618 --- /dev/null +++ b/src/views/room/widgets/furniture/mannequin/FurnitureMannequinData.ts @@ -0,0 +1,11 @@ +export class FurnitureMannequinData +{ + constructor( + public objectId: number, + public category: number, + public name: string, + public figure: string, + public gender: string, + public clubLevel: number, + public renderedFigure: string = null) {} +} diff --git a/src/views/room/widgets/furniture/mannequin/FurnitureMannequinView.scss b/src/views/room/widgets/furniture/mannequin/FurnitureMannequinView.scss index e69de29b..cc16ce4c 100644 --- a/src/views/room/widgets/furniture/mannequin/FurnitureMannequinView.scss +++ b/src/views/room/widgets/furniture/mannequin/FurnitureMannequinView.scss @@ -0,0 +1,9 @@ +.nitro-mannequin { + width: 350px; + + .mannequin-preview { + width: 83px; + height: 130px; + background-image: url('../../../../../assets/images/room-widgets/mannequin-widget/mannequin-spritesheet.png'); + } +} diff --git a/src/views/room/widgets/furniture/mannequin/FurnitureMannequinView.tsx b/src/views/room/widgets/furniture/mannequin/FurnitureMannequinView.tsx index 8c2d8e17..45ff3cad 100644 --- a/src/views/room/widgets/furniture/mannequin/FurnitureMannequinView.tsx +++ b/src/views/room/widgets/furniture/mannequin/FurnitureMannequinView.tsx @@ -1,16 +1,218 @@ -import { RoomEngineObjectEvent, RoomEngineTriggerWidgetEvent } from 'nitro-renderer'; -import { FC } from 'react'; +import { AvatarFigurePartType, FurnitureMannequinSaveLookComposer, FurnitureMannequinSaveNameComposer, FurnitureMultiStateComposer, IAvatarFigureContainer, Nitro, NitroEvent, RoomEngineTriggerWidgetEvent, RoomObjectVariable } from 'nitro-renderer'; +import { FC, KeyboardEvent, useCallback, useEffect, useState } from 'react'; +import { GetRoomEngine } from '../../../../../api/nitro/room/GetRoomEngine'; +import { GetRoomSession } from '../../../../../api/nitro/session/GetRoomSession'; +import { GetSessionDataManager } from '../../../../../api/nitro/session/GetSessionDataManager'; +import { CreateEventDispatcherHook } from '../../../../../hooks/events/event-dispatcher.base'; import { useRoomEngineEvent } from '../../../../../hooks/events/nitro/room/room-engine-event'; -import { FurnitureMannequinViewProps } from './FurnitureMannequinView.types'; +import { NitroCardContentView } from '../../../../../layout/card/content/NitroCardContentView'; +import { NitroCardHeaderView } from '../../../../../layout/card/header/NitroCardHeaderView'; +import { NitroCardView } from '../../../../../layout/card/NitroCardView'; +import { LocalizeText } from '../../../../../utils/LocalizeText'; +import { AvatarImageView } from '../../../../avatar-image/AvatarImageView'; +import { RoomWidgetRoomObjectUpdateEvent } from '../../events'; +import { FurnitureMannequinData } from './FurnitureMannequinData'; +import { FurnitureMannequinViewMode, FurnitureMannequinViewProps } from './FurnitureMannequinView.types'; export const FurnitureMannequinView: FC = props => { - const onRoomEngineObjectEvent = (event: RoomEngineObjectEvent) => + const parts = [ + AvatarFigurePartType.CHEST_ACCESSORY, + AvatarFigurePartType.COAT_CHEST, + AvatarFigurePartType.CHEST, + AvatarFigurePartType.LEGS, + AvatarFigurePartType.SHOES, + AvatarFigurePartType.WAIST_ACCESSORY + ]; + const baseAvatar = ['hd', 99999, 99998]; + + const [ mannequinData, setMannequinData ] = useState(null); + const [ viewMode, setViewMode ] = useState(''); + + useEffect(() => { - console.log(event); + if(mannequinData && !mannequinData.renderedFigure) + { + const figureContainer = Nitro.instance.avatar.createFigureContainer(mannequinData.figure); + loadMannequinFigure(figureContainer); + } + }, [ mannequinData ]); + + const onNitroEvent = useCallback((event: NitroEvent) => + { + switch(event.type) + { + case RoomEngineTriggerWidgetEvent.REQUEST_MANNEQUIN: { + const widgetEvent = (event as RoomEngineTriggerWidgetEvent); + + const roomObject = GetRoomEngine().getRoomObject(widgetEvent.roomId, widgetEvent.objectId, widgetEvent.category); + + if(!roomObject) return; + + const figure = roomObject.model.getValue(RoomObjectVariable.FURNITURE_MANNEQUIN_FIGURE); + const gender = roomObject.model.getValue(RoomObjectVariable.FURNITURE_MANNEQUIN_GENDER); + const name = roomObject.model.getValue(RoomObjectVariable.FURNITURE_MANNEQUIN_NAME); + + const figureContainer = Nitro.instance.avatar.createFigureContainer(figure); + const clubLevel = Nitro.instance.avatar.getFigureClubLevel(figureContainer, gender, parts); + + const mannequinData = new FurnitureMannequinData(widgetEvent.objectId, widgetEvent.category, name, figure, gender, clubLevel); + + setMannequinData(mannequinData); + loadViewMode(mannequinData); + return; + } + case RoomWidgetRoomObjectUpdateEvent.FURNI_REMOVED: { + const widgetEvent = (event as RoomWidgetRoomObjectUpdateEvent); + + setMannequinData(prevState => + { + if(!prevState || (widgetEvent.id !== prevState.objectId) || (widgetEvent.category !== prevState.category)) return prevState; + + return null; + }); + return; + } + } + }, []); + + useRoomEngineEvent(RoomEngineTriggerWidgetEvent.REQUEST_MANNEQUIN, onNitroEvent); + CreateEventDispatcherHook(RoomWidgetRoomObjectUpdateEvent.FURNI_REMOVED, props.events, onNitroEvent); + + const loadMannequinFigure = useCallback((figureContainer: IAvatarFigureContainer) => + { + for(const item of figureContainer.getPartTypeIds()) + { + if(parts.indexOf(item) == -1) + { + figureContainer.removePart(item); + } + } + + figureContainer.updatePart(baseAvatar[0].toString(), Number(baseAvatar[1]), [ Number(baseAvatar[2]) ]); + + setMannequinData(mannequinData => new FurnitureMannequinData(mannequinData.objectId, mannequinData.category, mannequinData.name, mannequinData.figure, mannequinData.gender, mannequinData.clubLevel, figureContainer.getFigureString())); + }, []); + + const loadViewMode = useCallback((mannequinData: FurnitureMannequinData) => + { + if(!mannequinData) return; + + const userCanEdit = (GetRoomSession().isRoomOwner || GetSessionDataManager().isModerator); + const userGender = Nitro.instance.sessionDataManager.gender; + const userClubLevel = Nitro.instance.sessionDataManager.clubLevel; + + if(userCanEdit) + { + setViewMode(FurnitureMannequinViewMode.EDIT); + } + else + { + if(!mannequinData.figure || mannequinData.figure.length <= 1) return; + + if(userGender.toUpperCase() !== mannequinData.gender.toUpperCase()) + { + setViewMode(FurnitureMannequinViewMode.INCOMPATIBLE_GENDER); + } + else if(userClubLevel < mannequinData.clubLevel) + { + setViewMode(FurnitureMannequinViewMode.CLUB); + } + else + { + setViewMode(FurnitureMannequinViewMode.DEFAULT); + } + } + }, []); + + const processAction = useCallback((type: string, value: string = null) => + { + switch(type) + { + case 'close': + setMannequinData(null); + return; + case 'set_name': + setMannequinData(mannequinData => new FurnitureMannequinData(mannequinData.objectId, mannequinData.category, value, mannequinData.figure, mannequinData.gender, mannequinData.clubLevel, mannequinData.renderedFigure)); + return; + case 'load_figure': + loadMannequinFigure(Nitro.instance.avatar.createFigureContainer(Nitro.instance.sessionDataManager.figure)); + setViewMode(FurnitureMannequinViewMode.SAVE); + return; + case 'back': + loadMannequinFigure(Nitro.instance.avatar.createFigureContainer(mannequinData.figure)); + setViewMode(FurnitureMannequinViewMode.EDIT); + return; + case 'save_name': + GetRoomSession().connection.send(new FurnitureMannequinSaveNameComposer(mannequinData.objectId, mannequinData.name)); + return; + case 'save_figure': + GetRoomSession().connection.send(new FurnitureMannequinSaveLookComposer(mannequinData.objectId)); + processAction('save_name'); + processAction('close'); + return; + case 'wear': + GetRoomSession().connection.send(new FurnitureMultiStateComposer(mannequinData.objectId)); + processAction('close'); + return; + } + }, [ mannequinData ]); + + const handleKeyDown = (event: KeyboardEvent) => + { + if(event.key !== 'Enter') return; + + processAction('save_name'); }; - useRoomEngineEvent(RoomEngineTriggerWidgetEvent.REQUEST_MANNEQUIN, onRoomEngineObjectEvent); + if(!mannequinData) return null; - return null; + return ( + + processAction('close') } /> + +
+
+
+ +
+
+
+ { viewMode === FurnitureMannequinViewMode.EDIT && <> + processAction('set_name', event.target.value) } onKeyDown={ event => handleKeyDown(event) } /> +
processAction('load_figure') }>{ LocalizeText('mannequin.widget.style') }
+
processAction('wear') }>{ LocalizeText('mannequin.widget.wear') }
+ } + { viewMode === FurnitureMannequinViewMode.SAVE && <> +
+
+
{ mannequinData.name }
+
{ LocalizeText('mannequin.widget.savetext') }
+
+
+
processAction('back') }>{ LocalizeText('mannequin.widget.back') }
+
processAction('save_figure') }>{ LocalizeText('mannequin.widget.save') }
+
+
+ } + { viewMode === FurnitureMannequinViewMode.DEFAULT && <> +
+
+
{ mannequinData.name }
+
{ LocalizeText('mannequin.widget.weartext') }
+
+
processAction('wear') }>{ LocalizeText('mannequin.widget.wear') }
+
+ } + { viewMode === FurnitureMannequinViewMode.CLUB && <> +
{ LocalizeText('mannequin.widget.clubnotification') }
+ } + { viewMode === FurnitureMannequinViewMode.INCOMPATIBLE_GENDER && <> +
{ LocalizeText('mannequin.widget.wronggender') }
+ } +
+
+
+
+ ); } diff --git a/src/views/room/widgets/furniture/mannequin/FurnitureMannequinView.types.tsx b/src/views/room/widgets/furniture/mannequin/FurnitureMannequinView.types.tsx index b4e5e0ff..eae1f80c 100644 --- a/src/views/room/widgets/furniture/mannequin/FurnitureMannequinView.types.tsx +++ b/src/views/room/widgets/furniture/mannequin/FurnitureMannequinView.types.tsx @@ -1,6 +1,13 @@ import { FurnitureWidgetProps } from '../FurnitureWidget.types'; export interface FurnitureMannequinViewProps extends FurnitureWidgetProps -{ +{} +export class FurnitureMannequinViewMode +{ + public static readonly EDIT: string = 'edit'; + public static readonly SAVE: string = 'save'; + public static readonly CLUB: string = 'club'; + public static readonly DEFAULT: string = 'default'; + public static readonly INCOMPATIBLE_GENDER: string = 'incompatible_gender'; }