From 84b8607b074486fc5b7e9f54d0cd0c7f254ba697 Mon Sep 17 00:00:00 2001 From: Bill Date: Wed, 29 Dec 2021 11:42:29 -0500 Subject: [PATCH] Update AvatarEditor --- .../{spotlight.png => spotlight-icon.png} | Bin .../avatar-editor/AvatarEditorView.scss | 70 +----------------- .../avatar-editor/AvatarEditorView.tsx | 25 +++++-- .../common/AvatarEditorAction.ts | 0 .../common/AvatarEditorGridColorItem.ts | 0 .../common/AvatarEditorGridPartItem.ts | 0 .../common/AvatarEditorUtilities.ts | 0 .../avatar-editor/common/BodyModel.ts | 0 .../avatar-editor/common/CategoryBaseModel.ts | 0 .../avatar-editor/common/CategoryData.ts | 0 .../avatar-editor/common/FigureData.ts | 0 .../avatar-editor/common/FigureGenerator.ts | 0 .../avatar-editor/common/HeadModel.ts | 0 .../common/IAvatarEditorCategoryModel.ts | 0 .../avatar-editor/common/LegModel.ts | 0 .../avatar-editor/common/TorsoModel.ts | 0 .../avatar-editor/views/AvatarEditorIcon.tsx | 0 .../AvatarEditorFigurePreviewView.tsx | 30 +++++--- .../AvatarEditorFigureSetItemView.tsx | 8 +- .../figure-set/AvatarEditorFigureSetView.tsx | 2 +- .../views/model/AvatarEditorModelView.tsx | 0 .../AvatarEditorPaletteSetItemView.tsx | 11 ++- .../AvatarEditorPaletteSetView.tsx | 2 +- .../wardrobe/AvatarEditorWardrobeView.tsx | 15 ++-- src/components/index.scss | 1 + src/views/Styles.scss | 2 - .../AvatarEditorFigureActionsView.tsx | 29 -------- .../AvatarEditorFigureActionsView.types.ts | 5 -- .../AvatarEditorFigurePreviewView.types.ts | 6 -- src/views/main/MainView.tsx | 2 +- .../PurchasableClothingConfirmView.tsx | 2 +- .../shared/avatar-image/AvatarImageView.tsx | 59 +++++++++++---- .../avatar-image/AvatarImageView.types.ts | 8 -- 33 files changed, 106 insertions(+), 171 deletions(-) rename src/assets/images/avatareditor/{spotlight.png => spotlight-icon.png} (100%) rename src/{views => components}/avatar-editor/AvatarEditorView.scss (78%) rename src/{views => components}/avatar-editor/AvatarEditorView.tsx (89%) rename src/{views => components}/avatar-editor/common/AvatarEditorAction.ts (100%) rename src/{views => components}/avatar-editor/common/AvatarEditorGridColorItem.ts (100%) rename src/{views => components}/avatar-editor/common/AvatarEditorGridPartItem.ts (100%) rename src/{views => components}/avatar-editor/common/AvatarEditorUtilities.ts (100%) rename src/{views => components}/avatar-editor/common/BodyModel.ts (100%) rename src/{views => components}/avatar-editor/common/CategoryBaseModel.ts (100%) rename src/{views => components}/avatar-editor/common/CategoryData.ts (100%) rename src/{views => components}/avatar-editor/common/FigureData.ts (100%) rename src/{views => components}/avatar-editor/common/FigureGenerator.ts (100%) rename src/{views => components}/avatar-editor/common/HeadModel.ts (100%) rename src/{views => components}/avatar-editor/common/IAvatarEditorCategoryModel.ts (100%) rename src/{views => components}/avatar-editor/common/LegModel.ts (100%) rename src/{views => components}/avatar-editor/common/TorsoModel.ts (100%) rename src/{views => components}/avatar-editor/views/AvatarEditorIcon.tsx (100%) rename src/{views => components}/avatar-editor/views/figure-preview/AvatarEditorFigurePreviewView.tsx (56%) rename src/{views => components}/avatar-editor/views/figure-set/AvatarEditorFigureSetItemView.tsx (77%) rename src/{views => components}/avatar-editor/views/figure-set/AvatarEditorFigureSetView.tsx (94%) rename src/{views => components}/avatar-editor/views/model/AvatarEditorModelView.tsx (100%) rename src/{views => components}/avatar-editor/views/palette-set/AvatarEditorPaletteSetItemView.tsx (62%) rename src/{views => components}/avatar-editor/views/palette-set/AvatarEditorPaletteSetView.tsx (94%) rename src/{views => components}/avatar-editor/views/wardrobe/AvatarEditorWardrobeView.tsx (82%) delete mode 100644 src/views/avatar-editor/views/figure-actions/AvatarEditorFigureActionsView.tsx delete mode 100644 src/views/avatar-editor/views/figure-actions/AvatarEditorFigureActionsView.types.ts delete mode 100644 src/views/avatar-editor/views/figure-preview/AvatarEditorFigurePreviewView.types.ts delete mode 100644 src/views/shared/avatar-image/AvatarImageView.types.ts diff --git a/src/assets/images/avatareditor/spotlight.png b/src/assets/images/avatareditor/spotlight-icon.png similarity index 100% rename from src/assets/images/avatareditor/spotlight.png rename to src/assets/images/avatareditor/spotlight-icon.png diff --git a/src/views/avatar-editor/AvatarEditorView.scss b/src/components/avatar-editor/AvatarEditorView.scss similarity index 78% rename from src/views/avatar-editor/AvatarEditorView.scss rename to src/components/avatar-editor/AvatarEditorView.scss index 167b3402..493cda3d 100644 --- a/src/views/avatar-editor/AvatarEditorView.scss +++ b/src/components/avatar-editor/AvatarEditorView.scss @@ -192,7 +192,7 @@ } - &.spotlight { + &.spotlight-icon { width: 130px; height: 305px; background-position: -5px -5px; @@ -287,71 +287,3 @@ } } } - -.nitro-wardrobe-grid { - --nitro-grid-column-min-width: 80px !important; - - .grid-item { - height: 140px; - max-height: 140px; - background-color: $ghost; - - &:after { - position: absolute; - content: ''; - top: 75%; - bottom: 0; - left: 0; - right: 0; - border-radius: 50%; - background-color: $gray-chateau; - box-shadow: 0 0 8px 2px rgba($white,.6); - transform: scale(2); - } - - .avatar-image { - position: absolute; - bottom: 0; - background-position-y: -23px !important; - z-index: 4; - } - - .figure-button-container { - background-color: $gray-chateau; - z-index: 3; - } - } - - .grid-item-container { - height: 142px !important; - max-height: 142px !important; - - .grid-item { - background-color: $ghost; - - .avatar-image { - position: absolute; - bottom: 0; - background-position-y: -23px !important; - z-index: 3; - } - - .figure-button-container { - background-color: $gray-chateau; - z-index: 2; - } - - &:after { - position: absolute; - content: ''; - height: 50%; - bottom: 0; - left: 0; - right: 0; - background-color: $gray-chateau; - box-shadow: 0 0 8px 2px rgba($white,.6); - z-index: 1; - } - } - } -} diff --git a/src/views/avatar-editor/AvatarEditorView.tsx b/src/components/avatar-editor/AvatarEditorView.tsx similarity index 89% rename from src/views/avatar-editor/AvatarEditorView.tsx rename to src/components/avatar-editor/AvatarEditorView.tsx index 35616c20..829ff05d 100644 --- a/src/views/avatar-editor/AvatarEditorView.tsx +++ b/src/components/avatar-editor/AvatarEditorView.tsx @@ -1,6 +1,9 @@ +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 { Button } from '../../common/Button'; +import { ButtonGroup } from '../../common/ButtonGroup'; import { Column } from '../../common/Column'; import { Grid } from '../../common/Grid'; import { AvatarEditorEvent } from '../../events/avatar-editor'; @@ -16,7 +19,6 @@ import { HeadModel } from './common/HeadModel'; import { IAvatarEditorCategoryModel } from './common/IAvatarEditorCategoryModel'; import { LegModel } from './common/LegModel'; import { TorsoModel } from './common/TorsoModel'; -import { AvatarEditorFigureActionsView } from './views/figure-actions/AvatarEditorFigureActionsView'; import { AvatarEditorFigurePreviewView } from './views/figure-preview/AvatarEditorFigurePreviewView'; import { AvatarEditorModelView } from './views/model/AvatarEditorModelView'; import { AvatarEditorWardrobeView } from './views/wardrobe/AvatarEditorWardrobeView'; @@ -24,10 +26,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; -const ACTION_CLEAR = 'action_clear'; -const ACTION_RESET = 'action_reset'; -const ACTION_RANDOMIZE = 'action_randomize'; -const ACTION_SAVE = 'action_save'; export const AvatarEditorView: FC<{}> = props => { @@ -295,7 +293,22 @@ export const AvatarEditorView: FC<{}> = props => - + + + + + + + + diff --git a/src/views/avatar-editor/common/AvatarEditorAction.ts b/src/components/avatar-editor/common/AvatarEditorAction.ts similarity index 100% rename from src/views/avatar-editor/common/AvatarEditorAction.ts rename to src/components/avatar-editor/common/AvatarEditorAction.ts diff --git a/src/views/avatar-editor/common/AvatarEditorGridColorItem.ts b/src/components/avatar-editor/common/AvatarEditorGridColorItem.ts similarity index 100% rename from src/views/avatar-editor/common/AvatarEditorGridColorItem.ts rename to src/components/avatar-editor/common/AvatarEditorGridColorItem.ts diff --git a/src/views/avatar-editor/common/AvatarEditorGridPartItem.ts b/src/components/avatar-editor/common/AvatarEditorGridPartItem.ts similarity index 100% rename from src/views/avatar-editor/common/AvatarEditorGridPartItem.ts rename to src/components/avatar-editor/common/AvatarEditorGridPartItem.ts diff --git a/src/views/avatar-editor/common/AvatarEditorUtilities.ts b/src/components/avatar-editor/common/AvatarEditorUtilities.ts similarity index 100% rename from src/views/avatar-editor/common/AvatarEditorUtilities.ts rename to src/components/avatar-editor/common/AvatarEditorUtilities.ts diff --git a/src/views/avatar-editor/common/BodyModel.ts b/src/components/avatar-editor/common/BodyModel.ts similarity index 100% rename from src/views/avatar-editor/common/BodyModel.ts rename to src/components/avatar-editor/common/BodyModel.ts diff --git a/src/views/avatar-editor/common/CategoryBaseModel.ts b/src/components/avatar-editor/common/CategoryBaseModel.ts similarity index 100% rename from src/views/avatar-editor/common/CategoryBaseModel.ts rename to src/components/avatar-editor/common/CategoryBaseModel.ts diff --git a/src/views/avatar-editor/common/CategoryData.ts b/src/components/avatar-editor/common/CategoryData.ts similarity index 100% rename from src/views/avatar-editor/common/CategoryData.ts rename to src/components/avatar-editor/common/CategoryData.ts diff --git a/src/views/avatar-editor/common/FigureData.ts b/src/components/avatar-editor/common/FigureData.ts similarity index 100% rename from src/views/avatar-editor/common/FigureData.ts rename to src/components/avatar-editor/common/FigureData.ts diff --git a/src/views/avatar-editor/common/FigureGenerator.ts b/src/components/avatar-editor/common/FigureGenerator.ts similarity index 100% rename from src/views/avatar-editor/common/FigureGenerator.ts rename to src/components/avatar-editor/common/FigureGenerator.ts diff --git a/src/views/avatar-editor/common/HeadModel.ts b/src/components/avatar-editor/common/HeadModel.ts similarity index 100% rename from src/views/avatar-editor/common/HeadModel.ts rename to src/components/avatar-editor/common/HeadModel.ts diff --git a/src/views/avatar-editor/common/IAvatarEditorCategoryModel.ts b/src/components/avatar-editor/common/IAvatarEditorCategoryModel.ts similarity index 100% rename from src/views/avatar-editor/common/IAvatarEditorCategoryModel.ts rename to src/components/avatar-editor/common/IAvatarEditorCategoryModel.ts diff --git a/src/views/avatar-editor/common/LegModel.ts b/src/components/avatar-editor/common/LegModel.ts similarity index 100% rename from src/views/avatar-editor/common/LegModel.ts rename to src/components/avatar-editor/common/LegModel.ts diff --git a/src/views/avatar-editor/common/TorsoModel.ts b/src/components/avatar-editor/common/TorsoModel.ts similarity index 100% rename from src/views/avatar-editor/common/TorsoModel.ts rename to src/components/avatar-editor/common/TorsoModel.ts diff --git a/src/views/avatar-editor/views/AvatarEditorIcon.tsx b/src/components/avatar-editor/views/AvatarEditorIcon.tsx similarity index 100% rename from src/views/avatar-editor/views/AvatarEditorIcon.tsx rename to src/components/avatar-editor/views/AvatarEditorIcon.tsx diff --git a/src/views/avatar-editor/views/figure-preview/AvatarEditorFigurePreviewView.tsx b/src/components/avatar-editor/views/figure-preview/AvatarEditorFigurePreviewView.tsx similarity index 56% rename from src/views/avatar-editor/views/figure-preview/AvatarEditorFigurePreviewView.tsx rename to src/components/avatar-editor/views/figure-preview/AvatarEditorFigurePreviewView.tsx index e6018e8c..bc57b52b 100644 --- a/src/views/avatar-editor/views/figure-preview/AvatarEditorFigurePreviewView.tsx +++ b/src/components/avatar-editor/views/figure-preview/AvatarEditorFigurePreviewView.tsx @@ -1,9 +1,15 @@ import { AvatarDirectionAngle } from '@nitrots/nitro-renderer'; import { FC, useCallback, useEffect, useState } from 'react'; -import { NitroLayoutFlexColumn } from '../../../../layout'; -import { NitroLayoutBase } from '../../../../layout/base'; -import { AvatarImageView } from '../../../shared/avatar-image/AvatarImageView'; -import { AvatarEditorFigurePreviewViewProps } from './AvatarEditorFigurePreviewView.types'; +import { Base } from '../../../../common/Base'; +import { Column } from '../../../../common/Column'; +import { AvatarImageView } from '../../../../views/shared/avatar-image/AvatarImageView'; +import { FigureData } from '../../common/FigureData'; +import { AvatarEditorIcon } from '../AvatarEditorIcon'; + +export interface AvatarEditorFigurePreviewViewProps +{ + figureData: FigureData; +} export const AvatarEditorFigurePreviewView: FC = props => { @@ -43,14 +49,14 @@ export const AvatarEditorFigurePreviewView: FC + - - - -
rotateFigure(figureData.direction + 1) } /> -
rotateFigure(figureData.direction - 1) } /> - - + + + + rotateFigure(figureData.direction + 1) } /> + rotateFigure(figureData.direction - 1) } /> + + ); } diff --git a/src/views/avatar-editor/views/figure-set/AvatarEditorFigureSetItemView.tsx b/src/components/avatar-editor/views/figure-set/AvatarEditorFigureSetItemView.tsx similarity index 77% rename from src/views/avatar-editor/views/figure-set/AvatarEditorFigureSetItemView.tsx rename to src/components/avatar-editor/views/figure-set/AvatarEditorFigureSetItemView.tsx index 37e06d99..aced50e1 100644 --- a/src/views/avatar-editor/views/figure-set/AvatarEditorFigureSetItemView.tsx +++ b/src/components/avatar-editor/views/figure-set/AvatarEditorFigureSetItemView.tsx @@ -1,7 +1,7 @@ import { FC, useCallback, useEffect, useState } from 'react'; +import { LayoutGridItem } from '../../../../common/layout/LayoutGridItem'; import { NitroCardGridItemViewProps } from '../../../../layout'; -import { NitroCardGridItemView } from '../../../../layout/card/grid/item/NitroCardGridItemView'; -import { CurrencyIcon } from '../../../shared/currency-icon/CurrencyIcon'; +import { CurrencyIcon } from '../../../../views/shared/currency-icon/CurrencyIcon'; import { AvatarEditorGridPartItem } from '../../common/AvatarEditorGridPartItem'; import { AvatarEditorIcon } from '../AvatarEditorIcon'; @@ -31,11 +31,11 @@ export const AvatarEditorFigureSetItemView: FC + { partItem.isHC && } { partItem.isClear && } { partItem.isSellable && } { children } - + ); } diff --git a/src/views/avatar-editor/views/figure-set/AvatarEditorFigureSetView.tsx b/src/components/avatar-editor/views/figure-set/AvatarEditorFigureSetView.tsx similarity index 94% rename from src/views/avatar-editor/views/figure-set/AvatarEditorFigureSetView.tsx rename to src/components/avatar-editor/views/figure-set/AvatarEditorFigureSetView.tsx index ecfb7fb3..4092696e 100644 --- a/src/views/avatar-editor/views/figure-set/AvatarEditorFigureSetView.tsx +++ b/src/components/avatar-editor/views/figure-set/AvatarEditorFigureSetView.tsx @@ -30,7 +30,7 @@ export const AvatarEditorFigureSetView: FC = pro }, [ model, category, setMaxPaletteCount ]); return ( - + { (category.parts.length > 0) && category.parts.map((item, index) => selectPart(item) } />) } diff --git a/src/views/avatar-editor/views/model/AvatarEditorModelView.tsx b/src/components/avatar-editor/views/model/AvatarEditorModelView.tsx similarity index 100% rename from src/views/avatar-editor/views/model/AvatarEditorModelView.tsx rename to src/components/avatar-editor/views/model/AvatarEditorModelView.tsx diff --git a/src/views/avatar-editor/views/palette-set/AvatarEditorPaletteSetItemView.tsx b/src/components/avatar-editor/views/palette-set/AvatarEditorPaletteSetItemView.tsx similarity index 62% rename from src/views/avatar-editor/views/palette-set/AvatarEditorPaletteSetItemView.tsx rename to src/components/avatar-editor/views/palette-set/AvatarEditorPaletteSetItemView.tsx index 3c6d8528..dd45397a 100644 --- a/src/views/avatar-editor/views/palette-set/AvatarEditorPaletteSetItemView.tsx +++ b/src/components/avatar-editor/views/palette-set/AvatarEditorPaletteSetItemView.tsx @@ -1,10 +1,9 @@ import { FC, useCallback, useEffect, useState } from 'react'; -import { NitroCardGridItemViewProps } from '../../../../layout'; -import { NitroCardGridItemView } from '../../../../layout/card/grid/item/NitroCardGridItemView'; -import { CurrencyIcon } from '../../../shared/currency-icon/CurrencyIcon'; +import { LayoutGridItem, LayoutGridItemProps } from '../../../../common/layout/LayoutGridItem'; +import { CurrencyIcon } from '../../../../views/shared/currency-icon/CurrencyIcon'; import { AvatarEditorGridColorItem } from '../../common/AvatarEditorGridColorItem'; -export interface AvatarEditorPaletteSetItemProps extends NitroCardGridItemViewProps +export interface AvatarEditorPaletteSetItemProps extends LayoutGridItemProps { colorItem: AvatarEditorGridColorItem; } @@ -27,9 +26,9 @@ export const AvatarEditorPaletteSetItem: FC = p }); return ( - + { colorItem.isHC && } { children } - + ); } diff --git a/src/views/avatar-editor/views/palette-set/AvatarEditorPaletteSetView.tsx b/src/components/avatar-editor/views/palette-set/AvatarEditorPaletteSetView.tsx similarity index 94% rename from src/views/avatar-editor/views/palette-set/AvatarEditorPaletteSetView.tsx rename to src/components/avatar-editor/views/palette-set/AvatarEditorPaletteSetView.tsx index 5ccf1069..0fbb7a0c 100644 --- a/src/views/avatar-editor/views/palette-set/AvatarEditorPaletteSetView.tsx +++ b/src/components/avatar-editor/views/palette-set/AvatarEditorPaletteSetView.tsx @@ -27,7 +27,7 @@ export const AvatarEditorPaletteSetView: FC = p }, [ model, category, paletteSet, paletteIndex ]); return ( - + { (paletteSet.length > 0) && paletteSet.map((item, index) => selectColor(item) } />) } diff --git a/src/views/avatar-editor/views/wardrobe/AvatarEditorWardrobeView.tsx b/src/components/avatar-editor/views/wardrobe/AvatarEditorWardrobeView.tsx similarity index 82% rename from src/views/avatar-editor/views/wardrobe/AvatarEditorWardrobeView.tsx rename to src/components/avatar-editor/views/wardrobe/AvatarEditorWardrobeView.tsx index 972ffdc4..f1a20a5d 100644 --- a/src/views/avatar-editor/views/wardrobe/AvatarEditorWardrobeView.tsx +++ b/src/components/avatar-editor/views/wardrobe/AvatarEditorWardrobeView.tsx @@ -3,10 +3,10 @@ import { Dispatch, FC, SetStateAction, useCallback, useMemo } from 'react'; import { Button } from 'react-bootstrap'; import { GetAvatarRenderManager, GetSessionDataManager } from '../../../../api'; import { Grid } from '../../../../common/Grid'; +import { LayoutGridItem } from '../../../../common/layout/LayoutGridItem'; import { SendMessageHook } from '../../../../hooks'; -import { NitroCardGridItemView } from '../../../../layout/card/grid/item/NitroCardGridItemView'; -import { AvatarImageView } from '../../../shared/avatar-image/AvatarImageView'; -import { CurrencyIcon } from '../../../shared/currency-icon/CurrencyIcon'; +import { AvatarImageView } from '../../../../views/shared/avatar-image/AvatarImageView'; +import { CurrencyIcon } from '../../../../views/shared/currency-icon/CurrencyIcon'; import { FigureData } from '../../common/FigureData'; export interface AvatarEditorWardrobeViewProps @@ -58,14 +58,15 @@ export const AvatarEditorWardrobeView: FC = props if(figureContainer) clubLevel = GetAvatarRenderManager().getFigureClubLevel(figureContainer, gender); items.push( - - { figureContainer && } + + { figureContainer && + } { (clubLevel > 0) && }
{ figureContainer && }
-
+ ); }); @@ -73,7 +74,7 @@ export const AvatarEditorWardrobeView: FC = props }, [ savedFigures, saveFigureAtWardrobeIndex, wearFigureAtIndex ]); return ( - + { figures } ); diff --git a/src/components/index.scss b/src/components/index.scss index 9c745437..81e4c379 100644 --- a/src/components/index.scss +++ b/src/components/index.scss @@ -1 +1,2 @@ +@import './avatar-editor/AvatarEditorView'; @import './inventory/InventoryView'; diff --git a/src/views/Styles.scss b/src/views/Styles.scss index f619727f..6f9feb96 100644 --- a/src/views/Styles.scss +++ b/src/views/Styles.scss @@ -1,11 +1,9 @@ @import "./shared/Shared"; -@import "./avatar-editor/AvatarEditorView"; @import "./camera/CameraWidgetView"; @import "./catalog/CatalogView"; @import "./friends/FriendsView"; @import "./groups/GroupView"; @import "./hotel-view/HotelView"; -@import "./inventory/InventoryView"; @import "./loading/LoadingView"; @import "./main/MainView"; @import "./navigator/NavigatorView"; diff --git a/src/views/avatar-editor/views/figure-actions/AvatarEditorFigureActionsView.tsx b/src/views/avatar-editor/views/figure-actions/AvatarEditorFigureActionsView.tsx deleted file mode 100644 index e7ebabe8..00000000 --- a/src/views/avatar-editor/views/figure-actions/AvatarEditorFigureActionsView.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import { FC } from 'react'; -import { LocalizeText } from '../../../../api'; -import { NitroLayoutButton, NitroLayoutButtonGroup, NitroLayoutFlexColumn } from '../../../../layout'; -import { AvatarEditorAction } from '../../common/AvatarEditorAction'; -import { AvatarEditorFigureActionsViewProps } from './AvatarEditorFigureActionsView.types'; - -export const AvatarEditorFigureActionsView: FC = props => -{ - const { processAction = null } = props; - - return ( - - - processAction(AvatarEditorAction.ACTION_RESET) }> - - - processAction(AvatarEditorAction.ACTION_CLEAR) }> - - - processAction(AvatarEditorAction.ACTION_RANDOMIZE) }> - - - - processAction(AvatarEditorAction.ACTION_SAVE) }> - { LocalizeText('avatareditor.save') } - - - ) -} diff --git a/src/views/avatar-editor/views/figure-actions/AvatarEditorFigureActionsView.types.ts b/src/views/avatar-editor/views/figure-actions/AvatarEditorFigureActionsView.types.ts deleted file mode 100644 index a144113f..00000000 --- a/src/views/avatar-editor/views/figure-actions/AvatarEditorFigureActionsView.types.ts +++ /dev/null @@ -1,5 +0,0 @@ - -export interface AvatarEditorFigureActionsViewProps -{ - processAction: (action: string) => void; -} diff --git a/src/views/avatar-editor/views/figure-preview/AvatarEditorFigurePreviewView.types.ts b/src/views/avatar-editor/views/figure-preview/AvatarEditorFigurePreviewView.types.ts deleted file mode 100644 index 3956305c..00000000 --- a/src/views/avatar-editor/views/figure-preview/AvatarEditorFigurePreviewView.types.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { FigureData } from '../../common/FigureData'; - -export interface AvatarEditorFigurePreviewViewProps -{ - figureData: FigureData; -} diff --git a/src/views/main/MainView.tsx b/src/views/main/MainView.tsx index c21bc3d7..2ecaab7e 100644 --- a/src/views/main/MainView.tsx +++ b/src/views/main/MainView.tsx @@ -1,11 +1,11 @@ import { HabboWebTools, RoomSessionEvent } from '@nitrots/nitro-renderer'; import { FC, useCallback, useEffect, useState } from 'react'; import { AddEventLinkTracker, GetCommunication, RemoveLinkEventTracker } from '../../api'; +import { AvatarEditorView } from '../../components/avatar-editor/AvatarEditorView'; import { InventoryView } from '../../components/inventory/InventoryView'; import { useRoomSessionManagerEvent } from '../../hooks/events/nitro/session/room-session-manager-event'; import { TransitionAnimation, TransitionAnimationTypes } from '../../layout'; import { AchievementsView } from '../achievements/AchievementsView'; -import { AvatarEditorView } from '../avatar-editor/AvatarEditorView'; import { CameraWidgetView } from '../camera/CameraWidgetView'; import { CampaignView } from '../campaign/CampaignView'; import { CatalogView } from '../catalog/CatalogView'; diff --git a/src/views/room/widgets/furniture/context-menu/views/purchaseable-clothing/PurchasableClothingConfirmView.tsx b/src/views/room/widgets/furniture/context-menu/views/purchaseable-clothing/PurchasableClothingConfirmView.tsx index d1e751b8..bdb93aec 100644 --- a/src/views/room/widgets/furniture/context-menu/views/purchaseable-clothing/PurchasableClothingConfirmView.tsx +++ b/src/views/room/widgets/furniture/context-menu/views/purchaseable-clothing/PurchasableClothingConfirmView.tsx @@ -1,9 +1,9 @@ import { RedeemItemClothingComposer, RoomObjectCategory, UserFigureComposer } from '@nitrots/nitro-renderer'; import { FC, useCallback, useEffect, useState } from 'react'; import { GetAvatarRenderManager, GetConnection, GetFurnitureDataForRoomObject, GetSessionDataManager, LocalizeText } from '../../../../../../../api'; +import { FigureData } from '../../../../../../../components/avatar-editor/common/FigureData'; import { FurniCategory } from '../../../../../../../components/inventory/common/FurniCategory'; import { NitroCardContentView, NitroCardHeaderView, NitroCardView } from '../../../../../../../layout'; -import { FigureData } from '../../../../../../avatar-editor/common/FigureData'; import { AvatarImageView } from '../../../../../../shared/avatar-image/AvatarImageView'; import { useRoomContext } from '../../../../../context/RoomContext'; import { PurchasableClothingConfirmViewProps } from './PurchasableClothingConfirmView.types'; diff --git a/src/views/shared/avatar-image/AvatarImageView.tsx b/src/views/shared/avatar-image/AvatarImageView.tsx index 94ffac65..54aa79e1 100644 --- a/src/views/shared/avatar-image/AvatarImageView.tsx +++ b/src/views/shared/avatar-image/AvatarImageView.tsx @@ -1,27 +1,62 @@ import { AvatarScaleType, AvatarSetType } from '@nitrots/nitro-renderer'; -import { FC, useEffect, useMemo, useRef, useState } from 'react'; +import { CSSProperties, FC, useEffect, useMemo, useRef, useState } from 'react'; import { GetAvatarRenderManager } from '../../../api'; -import { AvatarImageViewProps } from './AvatarImageView.types'; +import { Base, BaseProps } from '../../../common/Base'; + +export interface AvatarImageViewProps extends BaseProps +{ + figure: string; + gender?: string; + headOnly?: boolean; + direction?: number; + scale?: number; +} export const AvatarImageView: FC = props => { - const { figure = '', gender = 'M', headOnly = false, direction = 0, scale = 1 } = props; + const { figure = '', gender = 'M', headOnly = false, direction = 0, scale = 1, classNames = [], style = {}, ...rest } = props; const [ avatarUrl, setAvatarUrl ] = useState(null); const [ randomValue, setRandomValue ] = useState(-1); const isDisposed = useRef(false); - const getScaleStyle = useMemo(() => + const getClassNames = useMemo(() => { - if(scale === .5) return '0-5'; + const newClassNames: string[] = [ 'avatar-image' ]; - if(scale === .75) return '0-75'; + switch(scale) + { + case .5: + newClassNames.push('scale-0-5'); + break; + case .75: + newClassNames.push('scale-0-75'); + break; + case 1.25: + newClassNames.push('scale-1-25'); + break; + case 1.50: + newClassNames.push('scale-1-50'); + break; + default: + newClassNames.push(`scale-${ scale }`); + break; + } - if(scale === 1.25) return '1-25'; + if(classNames.length) newClassNames.push(...classNames); - if(scale === 1.50) return '1-50'; + return newClassNames; + }, [ scale, classNames ]); - return scale.toString(); - }, [ scale ]); + const getStyle = useMemo(() => + { + let newStyle: CSSProperties = {}; + + if(avatarUrl && avatarUrl.length) newStyle.backgroundImage = `url('${ avatarUrl }')`; + + if(Object.keys(style).length) newStyle = { ...newStyle, ...style }; + + return newStyle; + }, [ avatarUrl, style ]); useEffect(() => { @@ -60,8 +95,6 @@ export const AvatarImageView: FC = props => isDisposed.current = true; } }, []); - - const url = `url('${ avatarUrl }')`; - return
; + return ; } diff --git a/src/views/shared/avatar-image/AvatarImageView.types.ts b/src/views/shared/avatar-image/AvatarImageView.types.ts deleted file mode 100644 index a5abbe9c..00000000 --- a/src/views/shared/avatar-image/AvatarImageView.types.ts +++ /dev/null @@ -1,8 +0,0 @@ -export interface AvatarImageViewProps -{ - figure: string; - gender?: string; - headOnly?: boolean; - direction?: number; - scale?: number; -}