diff --git a/src/views/floorplan-editor/FloorplanEditorView.scss b/src/views/floorplan-editor/FloorplanEditorView.scss index 7bc41e59..dcacff14 100644 --- a/src/views/floorplan-editor/FloorplanEditorView.scss +++ b/src/views/floorplan-editor/FloorplanEditorView.scss @@ -9,9 +9,11 @@ overflow: scroll; } - .color { - height: 50px; - width: 10px; + .arrow-button { + + @include media-breakpoint-up(md) { + display:none; + } } } diff --git a/src/views/floorplan-editor/common/FloorplanEditor.ts b/src/views/floorplan-editor/common/FloorplanEditor.ts index 71fcbed9..7d1aad13 100644 --- a/src/views/floorplan-editor/common/FloorplanEditor.ts +++ b/src/views/floorplan-editor/common/FloorplanEditor.ts @@ -87,10 +87,10 @@ export class FloorplanEditor extends PixiApplicationProxy this._tilemapRenderer.on('pointerdown', (event: PixiInteractionEventProxy) => { - if(!(event.data.originalEvent instanceof PointerEvent)) return; + if(!(event.data.originalEvent instanceof PointerEvent) && !(event.data.originalEvent instanceof TouchEvent)) return; const pointerEvent = event.data.originalEvent; - if(pointerEvent.button === 2) return; + if((pointerEvent instanceof MouseEvent) && pointerEvent.button === 2) return; const location = event.data.global; diff --git a/src/views/floorplan-editor/views/FloorplanCanvasView.tsx b/src/views/floorplan-editor/views/FloorplanCanvasView.tsx index f68a9248..a52fae94 100644 --- a/src/views/floorplan-editor/views/FloorplanCanvasView.tsx +++ b/src/views/floorplan-editor/views/FloorplanCanvasView.tsx @@ -1,6 +1,7 @@ import { GetOccupiedTilesMessageComposer, GetRoomEntryTileMessageComposer, NitroPoint, RoomEntryTileMessageEvent, RoomOccupiedTilesMessageEvent } from '@nitrots/nitro-renderer'; import { FC, useCallback, useEffect, useRef, useState } from 'react'; import { CreateMessageHook, SendMessageHook, UseMountEffect } from '../../../hooks'; +import { NitroLayoutFlex } from '../../../layout'; import { FloorplanEditor } from '../common/FloorplanEditor'; import { useFloorplanEditorContext } from '../context/FloorplanEditorContext'; @@ -68,6 +69,29 @@ export const FloorplanCanvasView: FC<{}> = props => CreateMessageHook(RoomEntryTileMessageEvent, onRoomEntryTileMessageEvent); + const onClickArrowButton = useCallback((scrollDirection: string) => + { + const element = elementRef.current; + + if(!element) return; + + switch(scrollDirection) + { + case 'up': + element.scrollBy({ top: -10 }); + break; + case 'down': + element.scrollBy({ top: 10 }); + break; + case 'left': + element.scrollBy({ left: -10 }); + break; + case 'right': + element.scrollBy({ left: 10 }); + break; + } + }, []); + useEffect(() => { if(entryTileReceived && occupiedTilesReceived) @@ -75,6 +99,18 @@ export const FloorplanCanvasView: FC<{}> = props => }, [entryTileReceived, occupiedTilesReceived]) return ( -
+ <> + +
+
+ +
+
+
+ + +
+
+ ); } diff --git a/src/views/main/MainView.tsx b/src/views/main/MainView.tsx index ca00b8dc..e9eaab4f 100644 --- a/src/views/main/MainView.tsx +++ b/src/views/main/MainView.tsx @@ -1,6 +1,6 @@ -import { RoomSessionEvent } from '@nitrots/nitro-renderer'; +import { HabboWebTools, RoomSessionEvent } from '@nitrots/nitro-renderer'; import { FC, useCallback, useEffect, useState } from 'react'; -import { GetCommunication } from '../../api'; +import { AddEventLinkTracker, GetCommunication, RemoveLinkEventTracker } from '../../api'; import { useRoomSessionManagerEvent } from '../../hooks/events/nitro/session/room-session-manager-event'; import { TransitionAnimation, TransitionAnimationTypes } from '../../layout'; import { AchievementsView } from '../achievements/AchievementsView'; @@ -47,6 +47,32 @@ export const MainView: FC = props => useRoomSessionManagerEvent(RoomSessionEvent.CREATED, onRoomSessionEvent); useRoomSessionManagerEvent(RoomSessionEvent.ENDED, onRoomSessionEvent); + const onLinkReceived = useCallback((link: string) => + { + const parts = link.split('/'); + + if(parts.length < 2) return; + + switch(parts[1]) + { + case 'open': + if(parts.length > 2) + { + switch(parts[2]) + { + case 'credits': + //HabboWebTools.openWebPageAndMinimizeClient(this._windowManager.getProperty(ExternalVariables.WEB_SHOP_RELATIVE_URL)); + break; + default: { + const name = parts[2]; + HabboWebTools.openHabblet(name); + } + } + } + return; + } + }, []); + useEffect(() => { setIsReady(true); @@ -54,6 +80,17 @@ export const MainView: FC = props => GetCommunication().connection.onReady(); }, []); + useEffect(() => + { + const linkTracker = { linkReceived: onLinkReceived, eventUrlPrefix: 'habblet/' }; + AddEventLinkTracker(linkTracker); + + return () => + { + RemoveLinkEventTracker(linkTracker); + } + }, [onLinkReceived]); + return (
diff --git a/src/views/navigator/NavigatorView.tsx b/src/views/navigator/NavigatorView.tsx index d26d9147..62f8acad 100644 --- a/src/views/navigator/NavigatorView.tsx +++ b/src/views/navigator/NavigatorView.tsx @@ -1,7 +1,8 @@ -import { ILinkEventTracker, NavigatorInitComposer, NavigatorSearchComposer, RoomDataParser, RoomSessionEvent } from '@nitrots/nitro-renderer'; +import { ConvertGlobalRoomIdMessageComposer, HabboWebTools, ILinkEventTracker, LegacyExternalInterface, NavigatorInitComposer, NavigatorSearchComposer, RoomDataParser, RoomSessionEvent } from '@nitrots/nitro-renderer'; import { FC, useCallback, useEffect, useMemo, useReducer, useState } from 'react'; import { AddEventLinkTracker, GoToDesktop, LocalizeText, RemoveLinkEventTracker, TryVisitRoom } from '../../api'; import { NavigatorEvent, UpdateDoorStateEvent } from '../../events'; +import { UseMountEffect } from '../../hooks'; import { useRoomSessionManagerEvent } from '../../hooks/events/nitro/session/room-session-manager-event'; import { useUiEvent } from '../../hooks/events/ui/ui-event'; import { SendMessageHook } from '../../hooks/messages/message-event'; @@ -181,6 +182,16 @@ export const NavigatorView: FC = props => return () => RemoveLinkEventTracker(linkTracker); }, [ linkReceived]); + const enterRoomWebRequest = useCallback((k: string, _arg_2:boolean=false, _arg_3:string=null) => + { + SendMessageHook(new ConvertGlobalRoomIdMessageComposer(k)); + }, []); + + UseMountEffect(() => + { + LegacyExternalInterface.addCallback(HabboWebTools.OPENROOM, enterRoomWebRequest); + }); + useEffect(() => { if(!isVisible || !needsNavigatorUpdate) return;