added FurnitureRoomLinkHandler

This commit is contained in:
dank074 2022-03-16 21:44:43 -05:00
parent b35ca4b23e
commit 5d2384f8a8
4 changed files with 63 additions and 3 deletions

View File

@ -25,7 +25,6 @@ export class FurnitureInternalLinkHandler extends RoomWidgetHandler
{
let data = object.model.getValue<any>(RoomObjectVariable.FURNITURE_DATA);
let link = data[FurnitureInternalLinkHandler.INTERNALLINK];
console.log(link);
if(!link || !link.length) link = object.model.getValue<string>(RoomObjectVariable.FURNITURE_INTERNAL_LINK);
if(link && link.length) CreateLinkEvent(link);
}

View File

@ -0,0 +1,59 @@
import { IMessageEvent, NitroEvent, RoomEngineTriggerWidgetEvent, RoomObjectVariable, RoomWidgetEnum } from '@nitrots/nitro-renderer';
import { CreateLinkEvent } from '../../../CreateLinkEvent';
import { GetRoomEngine } from '../../GetRoomEngine';
import { RoomWidgetUpdateEvent } from '../events';
import { RoomWidgetMessage } from '../messages';
import { RoomWidgetHandler } from './RoomWidgetHandler';
export class FurnitureRoomLinkHandler extends RoomWidgetHandler
{
private static readonly INTERNALLINK = 'internalLink';
private onRoomInfo(event: IMessageEvent): void
{
//todo
}
public processEvent(event: NitroEvent): void
{
if(!event) return;
switch(event.type)
{
case RoomEngineTriggerWidgetEvent.REQUEST_ROOM_LINK:
const roomLinkEvent = (event as RoomEngineTriggerWidgetEvent);
const roomEngine = GetRoomEngine();
if(!roomLinkEvent || !roomEngine) return;
const object = roomEngine.getRoomObject(roomLinkEvent.roomId, roomLinkEvent.objectId, roomLinkEvent.category);
if(object)
{
const data = object.model.getValue<any>(RoomObjectVariable.FURNITURE_DATA);
let roomId = data[FurnitureRoomLinkHandler.INTERNALLINK];
if(!roomId || !roomId.length) roomId = object.model.getValue<string>(RoomObjectVariable.FURNITURE_INTERNAL_LINK);
if(roomId && roomId.length) CreateLinkEvent('navigator/goto/' + roomId);
}
}
}
public processWidgetMessage(message: RoomWidgetMessage): RoomWidgetUpdateEvent
{
return null;
}
public get type(): string
{
return RoomWidgetEnum.ROOM_LINK;
}
public get eventTypes(): string[]
{
return [RoomEngineTriggerWidgetEvent.REQUEST_ROOM_LINK];
}
public get messageTypes(): string[]
{
return [];
}
}

View File

@ -6,8 +6,10 @@ export * from './FurnitureCreditWidgetHandler';
export * from './FurnitureCustomStackHeightWidgetHandler';
export * from './FurnitureDimmerWidgetHandler';
export * from './FurnitureExternalImageWidgetHandler';
export * from './FurnitureInternalLinkHandler';
export * from './FurnitureMannequinWidgetHandler';
export * from './FurniturePresentWidgetHandler';
export * from './FurnitureRoomLinkHandler';
export * from './FurnitureTrophyWidgetHandler';
export * from './FurnitureYoutubeDisplayWidgetHandler';
export * from './IRoomWidgetHandler';

View File

@ -1,7 +1,6 @@
import { EventDispatcher, IRoomSession, NitroRectangle, RoomGeometry, RoomVariableEnum, Vector3d } from '@nitrots/nitro-renderer';
import { FC, useEffect, useRef, useState } from 'react';
import { DispatchMouseEvent, DispatchTouchEvent, DoorbellWidgetHandler, FriendRequestHandler, FurniChooserWidgetHandler, FurnitureContextMenuWidgetHandler, FurnitureCreditWidgetHandler, FurnitureCustomStackHeightWidgetHandler, FurnitureDimmerWidgetHandler, FurnitureExternalImageWidgetHandler, FurnitureMannequinWidgetHandler, FurniturePresentWidgetHandler, FurnitureYoutubeDisplayWidgetHandler, GetNitroInstance, GetRoomEngine, InitializeRoomInstanceRenderingCanvas, IRoomWidgetHandlerManager, PollWidgetHandler, RoomWidgetAvatarInfoHandler, RoomWidgetChatHandler, RoomWidgetChatInputHandler, RoomWidgetHandlerManager, RoomWidgetInfostandHandler, RoomWidgetRoomToolsHandler, RoomWidgetUpdateRoomViewEvent, UserChooserWidgetHandler, WordQuizWidgetHandler } from '../../api';
import { FurnitureInternalLinkHandler } from '../../api/nitro/room/widgets/handlers/FurnitureInternalLinkHandler';
import { DispatchMouseEvent, DispatchTouchEvent, DoorbellWidgetHandler, FriendRequestHandler, FurniChooserWidgetHandler, FurnitureContextMenuWidgetHandler, FurnitureCreditWidgetHandler, FurnitureCustomStackHeightWidgetHandler, FurnitureDimmerWidgetHandler, FurnitureExternalImageWidgetHandler, FurnitureInternalLinkHandler, FurnitureMannequinWidgetHandler, FurniturePresentWidgetHandler, FurnitureRoomLinkHandler, FurnitureYoutubeDisplayWidgetHandler, GetNitroInstance, GetRoomEngine, InitializeRoomInstanceRenderingCanvas, IRoomWidgetHandlerManager, PollWidgetHandler, RoomWidgetAvatarInfoHandler, RoomWidgetChatHandler, RoomWidgetChatInputHandler, RoomWidgetHandlerManager, RoomWidgetInfostandHandler, RoomWidgetRoomToolsHandler, RoomWidgetUpdateRoomViewEvent, UserChooserWidgetHandler, WordQuizWidgetHandler } from '../../api';
import { Base } from '../../common';
import { RoomColorView } from './RoomColorView';
import { RoomContextProvider } from './RoomContext';
@ -54,6 +53,7 @@ export const RoomView: FC<RoomViewProps> = props =>
widgetHandlerManager.registerHandler(new FurnitureYoutubeDisplayWidgetHandler());
widgetHandlerManager.registerHandler(new FurnitureMannequinWidgetHandler());
widgetHandlerManager.registerHandler(new FurnitureInternalLinkHandler());
widgetHandlerManager.registerHandler(new FurnitureRoomLinkHandler());
setWidgetHandler(widgetHandlerManager);