diff --git a/src/views/room/widgets/RoomWidgets.scss b/src/views/room/widgets/RoomWidgets.scss index 10c9d521..ed284cd9 100644 --- a/src/views/room/widgets/RoomWidgets.scss +++ b/src/views/room/widgets/RoomWidgets.scss @@ -7,4 +7,3 @@ @import './infostand/InfoStandWidgetView'; @import './object-location/ObjectLocationView'; @import './room-tools/RoomToolsWidgetView'; -@import './room-thumbnail/RoomThumbnailView'; diff --git a/src/views/room/widgets/room-thumbnail/RoomThumbnailView.scss b/src/views/room/widgets/room-thumbnail/RoomThumbnailView.scss deleted file mode 100644 index 0e39af10..00000000 --- a/src/views/room/widgets/room-thumbnail/RoomThumbnailView.scss +++ /dev/null @@ -1,14 +0,0 @@ -.nitro-room-thumbnail { - width: 300px; - - .option { - font-size: 30px; - height: 50px; - display: flex; - align-items: center; - cursor: pointer; - } -} - -@import './views/builder/RoomThumbnailWidgetBuilderView'; -@import './views/camera/RoomThumbnailWidgetCameraView'; diff --git a/src/views/room/widgets/room-thumbnail/RoomThumbnailWidgetView.tsx b/src/views/room/widgets/room-thumbnail/RoomThumbnailWidgetView.tsx index d7d736d2..032b6978 100644 --- a/src/views/room/widgets/room-thumbnail/RoomThumbnailWidgetView.tsx +++ b/src/views/room/widgets/room-thumbnail/RoomThumbnailWidgetView.tsx @@ -1,33 +1,28 @@ +import { NitroRenderTexture } from '@nitrots/nitro-renderer'; import { FC, useCallback, useState } from 'react'; +import { GetRoomEngine } from '../../../../api'; import { RoomWidgetThumbnailEvent } from '../../../../events/room-widgets/thumbnail'; import { useUiEvent } from '../../../../hooks/events'; -import { NitroCardContentView, NitroCardHeaderView, NitroCardView } from '../../../../layout'; -import { LocalizeText } from '../../../../utils/LocalizeText'; -import { RoomThumbnailWidgetBuilderView } from './views/builder/RoomThumbnailWidgetBuilderView'; -import { RoomThumbnailWidgetCameraView } from './views/camera/RoomThumbnailWidgetCameraView'; +import { NitroLayoutMiniCameraView } from '../../../../layout'; +import { useRoomContext } from '../../context/RoomContext'; export const RoomThumbnailWidgetView: FC<{}> = props => { - const [ isSelectorVisible, setIsSelectorVisible ] = useState(false); - const [ isBuilderVisible, setIsBuilderVisible ] = useState(false); - const [ isCameraVisible, setIsCameraVisible ] = useState(false); + const [ isVisible, setIsVisible ] = useState(false); + const { roomSession = null } = useRoomContext(); const onNitroEvent = useCallback((event: RoomWidgetThumbnailEvent) => { switch(event.type) { case RoomWidgetThumbnailEvent.SHOW_THUMBNAIL: - setIsSelectorVisible(true); + setIsVisible(true); return; case RoomWidgetThumbnailEvent.HIDE_THUMBNAIL: - setIsSelectorVisible(false); - setIsBuilderVisible(false); - setIsCameraVisible(false); + setIsVisible(false); return; case RoomWidgetThumbnailEvent.TOGGLE_THUMBNAIL: - setIsSelectorVisible(value => !value); - setIsBuilderVisible(false); - setIsCameraVisible(false); + setIsVisible(value => !value); return; } }, []); @@ -36,34 +31,14 @@ export const RoomThumbnailWidgetView: FC<{}> = props => useUiEvent(RoomWidgetThumbnailEvent.HIDE_THUMBNAIL, onNitroEvent); useUiEvent(RoomWidgetThumbnailEvent.TOGGLE_THUMBNAIL, onNitroEvent); - const handleAction = useCallback((action: string) => + const receiveTexture = useCallback((texture: NitroRenderTexture) => { - switch(action) - { - case 'camera': - setIsSelectorVisible(false); - setIsCameraVisible(true); - return; - case 'builder': - setIsSelectorVisible(false); - setIsBuilderVisible(true); - return; - } - }, [ setIsSelectorVisible, setIsCameraVisible, setIsBuilderVisible ]); + GetRoomEngine().saveTextureAsScreenshot(texture, true); - return (<> - { isSelectorVisible && - setIsSelectorVisible(false) } /> - - handleAction('camera') }> - - - handleAction('builder') }> - - - - } - { isBuilderVisible && setIsBuilderVisible(false) } /> } - { isCameraVisible && setIsCameraVisible(false) } /> } - >); + setIsVisible(false); + }, []); + + if(!isVisible) return null; + + return setIsVisible(false) } /> }; diff --git a/src/views/room/widgets/room-thumbnail/views/builder/RoomThumbnailWidgetBuilderView.props.ts b/src/views/room/widgets/room-thumbnail/views/builder/RoomThumbnailWidgetBuilderView.props.ts deleted file mode 100644 index 77c8b94b..00000000 --- a/src/views/room/widgets/room-thumbnail/views/builder/RoomThumbnailWidgetBuilderView.props.ts +++ /dev/null @@ -1,4 +0,0 @@ -export class RoomThumbnailWidgetBuilderViewProps -{ - onCloseClick: () => void; -} diff --git a/src/views/room/widgets/room-thumbnail/views/builder/RoomThumbnailWidgetBuilderView.scss b/src/views/room/widgets/room-thumbnail/views/builder/RoomThumbnailWidgetBuilderView.scss deleted file mode 100644 index d011f674..00000000 --- a/src/views/room/widgets/room-thumbnail/views/builder/RoomThumbnailWidgetBuilderView.scss +++ /dev/null @@ -1,3 +0,0 @@ -.nitro-room-thumbnail-builder { - width: 600px; -} diff --git a/src/views/room/widgets/room-thumbnail/views/builder/RoomThumbnailWidgetBuilderView.tsx b/src/views/room/widgets/room-thumbnail/views/builder/RoomThumbnailWidgetBuilderView.tsx deleted file mode 100644 index f5061555..00000000 --- a/src/views/room/widgets/room-thumbnail/views/builder/RoomThumbnailWidgetBuilderView.tsx +++ /dev/null @@ -1,63 +0,0 @@ -import { FC, useCallback, useState } from 'react'; -import { NitroCardContentView, NitroCardHeaderView, NitroCardTabsItemView, NitroCardTabsView, NitroCardView } from '../../../../../../layout'; -import { LocalizeText } from '../../../../../../utils/LocalizeText'; -import { RoomThumbnailWidgetBuilderViewProps } from './RoomThumbnailWidgetBuilderView.props'; - -const TABS: string[] = [ - 'navigator.thumbeditor.bgtab', - 'navigator.thumbeditor.objtab', - 'navigator.thumbeditor.toptab', -]; - -export const RoomThumbnailWidgetBuilderView: FC = props => -{ - const { onCloseClick = null } = props; - - const [ currentTab, setCurrentTab ] = useState(TABS[0]); - - const processAction = useCallback((action: string, value?: string) => - { - switch(action) - { - case 'change_tab': - setCurrentTab(value); - return; - } - }, [ setCurrentTab ]); - - return ( - - - - - - { TABS.map(tab => - { - return processAction('change_tab', tab) }> - { LocalizeText(tab) } - - }) } - - - - - - - - - - - - - - - processAction('cancel') }>{ LocalizeText('generic.cancel') } - processAction('checkout') }>{ LocalizeText('camera.preview.button.text') } - - - - - - - ); -}; diff --git a/src/views/room/widgets/room-thumbnail/views/camera/RoomThumbnailWidgetCameraView.scss b/src/views/room/widgets/room-thumbnail/views/camera/RoomThumbnailWidgetCameraView.scss deleted file mode 100644 index b472dcda..00000000 --- a/src/views/room/widgets/room-thumbnail/views/camera/RoomThumbnailWidgetCameraView.scss +++ /dev/null @@ -1,13 +0,0 @@ -.nitro-room-thumbnail-camera { - width: 132px; - height: 192px; - background-image: url('../../../../../../assets/images/room-widgets/thumbnail-widget/thumbnail-camera-spritesheet.png'); - - .camera-frame { - position: absolute; - width: 110px; - height: 110px; - margin-top: 38px; - margin-left: 3px; - } -} diff --git a/src/views/room/widgets/room-thumbnail/views/camera/RoomThumbnailWidgetCameraView.tsx b/src/views/room/widgets/room-thumbnail/views/camera/RoomThumbnailWidgetCameraView.tsx deleted file mode 100644 index 9f5fe6b9..00000000 --- a/src/views/room/widgets/room-thumbnail/views/camera/RoomThumbnailWidgetCameraView.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import { NitroRectangle } from '@nitrots/nitro-renderer'; -import { FC, useCallback, useRef } from 'react'; -import { GetRoomEngine, GetRoomSession } from '../../../../../../api'; -import { DraggableWindow } from '../../../../../../layout'; -import { LocalizeText } from '../../../../../../utils/LocalizeText'; -import { RoomThumbnailWidgetCameraViewProps } from './RoomThumbnailWidgetCameraView.types'; - -export const RoomThumbnailWidgetCameraView: FC = props => -{ - const { onCloseClick = null } = props; - - const cameraFrameRef = useRef(); - - const takePicture = useCallback(() => - { - const frameBounds = cameraFrameRef.current.getBoundingClientRect(); - - if(!frameBounds) return; - - const rectangle = new NitroRectangle(Math.floor(frameBounds.x), Math.floor(frameBounds.y), Math.floor(frameBounds.width), Math.floor(frameBounds.height)); - - const image = GetRoomEngine().createTextureFromRoom(GetRoomSession().roomId, 1, rectangle); - - onCloseClick(); - }, [ onCloseClick ]); - - return ( - - - - - { LocalizeText('cancel') } - takePicture() }>{ LocalizeText('navigator.thumbeditor.save') } - - - - ); -}; diff --git a/src/views/room/widgets/room-thumbnail/views/camera/RoomThumbnailWidgetCameraView.types.ts b/src/views/room/widgets/room-thumbnail/views/camera/RoomThumbnailWidgetCameraView.types.ts deleted file mode 100644 index ec49ac02..00000000 --- a/src/views/room/widgets/room-thumbnail/views/camera/RoomThumbnailWidgetCameraView.types.ts +++ /dev/null @@ -1,4 +0,0 @@ -export class RoomThumbnailWidgetCameraViewProps -{ - onCloseClick: () => void; -}