mirror of
https://github.com/billsonnn/nitro-react.git
synced 2024-11-27 08:00:51 +01:00
Merge branch 'feature/widget-handlers' into 'dev'
add internal link widget handler See merge request nitro/nitro-react!13
This commit is contained in:
commit
6c842df26e
@ -0,0 +1,53 @@
|
|||||||
|
import { 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 FurnitureInternalLinkHandler extends RoomWidgetHandler
|
||||||
|
{
|
||||||
|
private static readonly INTERNALLINK = 'internalLink';
|
||||||
|
|
||||||
|
public processEvent(event: NitroEvent): void
|
||||||
|
{
|
||||||
|
if(!event) return;
|
||||||
|
|
||||||
|
switch(event.type)
|
||||||
|
{
|
||||||
|
case RoomEngineTriggerWidgetEvent.REQUEST_INTERNAL_LINK:
|
||||||
|
const linkEvent = event as RoomEngineTriggerWidgetEvent;
|
||||||
|
const roomEngine = GetRoomEngine();
|
||||||
|
if(!linkEvent || !roomEngine) return;
|
||||||
|
|
||||||
|
const object = roomEngine.getRoomObject(linkEvent.roomId, linkEvent.objectId, linkEvent.category);
|
||||||
|
if(object)
|
||||||
|
{
|
||||||
|
let data = object.model.getValue<any>(RoomObjectVariable.FURNITURE_DATA);
|
||||||
|
let link = data[FurnitureInternalLinkHandler.INTERNALLINK];
|
||||||
|
if(!link || !link.length) link = object.model.getValue<string>(RoomObjectVariable.FURNITURE_INTERNAL_LINK);
|
||||||
|
if(link && link.length) CreateLinkEvent(link);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public processWidgetMessage(message: RoomWidgetMessage): RoomWidgetUpdateEvent
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public get type(): string
|
||||||
|
{
|
||||||
|
return RoomWidgetEnum.INTERNAL_LINK;
|
||||||
|
}
|
||||||
|
|
||||||
|
public get eventTypes(): string[]
|
||||||
|
{
|
||||||
|
return [RoomEngineTriggerWidgetEvent.REQUEST_INTERNAL_LINK];
|
||||||
|
}
|
||||||
|
|
||||||
|
public get messageTypes(): string[]
|
||||||
|
{
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
}
|
@ -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 [];
|
||||||
|
}
|
||||||
|
}
|
@ -6,8 +6,10 @@ export * from './FurnitureCreditWidgetHandler';
|
|||||||
export * from './FurnitureCustomStackHeightWidgetHandler';
|
export * from './FurnitureCustomStackHeightWidgetHandler';
|
||||||
export * from './FurnitureDimmerWidgetHandler';
|
export * from './FurnitureDimmerWidgetHandler';
|
||||||
export * from './FurnitureExternalImageWidgetHandler';
|
export * from './FurnitureExternalImageWidgetHandler';
|
||||||
|
export * from './FurnitureInternalLinkHandler';
|
||||||
export * from './FurnitureMannequinWidgetHandler';
|
export * from './FurnitureMannequinWidgetHandler';
|
||||||
export * from './FurniturePresentWidgetHandler';
|
export * from './FurniturePresentWidgetHandler';
|
||||||
|
export * from './FurnitureRoomLinkHandler';
|
||||||
export * from './FurnitureTrophyWidgetHandler';
|
export * from './FurnitureTrophyWidgetHandler';
|
||||||
export * from './FurnitureYoutubeDisplayWidgetHandler';
|
export * from './FurnitureYoutubeDisplayWidgetHandler';
|
||||||
export * from './IRoomWidgetHandler';
|
export * from './IRoomWidgetHandler';
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { EventDispatcher, IRoomSession, NitroRectangle, RoomGeometry, RoomVariableEnum, Vector3d } from '@nitrots/nitro-renderer';
|
import { EventDispatcher, IRoomSession, NitroRectangle, RoomGeometry, RoomVariableEnum, Vector3d } from '@nitrots/nitro-renderer';
|
||||||
import { FC, useEffect, useRef, useState } from 'react';
|
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 { 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 { Base } from '../../common';
|
||||||
import { RoomColorView } from './RoomColorView';
|
import { RoomColorView } from './RoomColorView';
|
||||||
import { RoomContextProvider } from './RoomContext';
|
import { RoomContextProvider } from './RoomContext';
|
||||||
@ -52,6 +52,8 @@ export const RoomView: FC<RoomViewProps> = props =>
|
|||||||
widgetHandlerManager.registerHandler(new FurnitureDimmerWidgetHandler());
|
widgetHandlerManager.registerHandler(new FurnitureDimmerWidgetHandler());
|
||||||
widgetHandlerManager.registerHandler(new FurnitureYoutubeDisplayWidgetHandler());
|
widgetHandlerManager.registerHandler(new FurnitureYoutubeDisplayWidgetHandler());
|
||||||
widgetHandlerManager.registerHandler(new FurnitureMannequinWidgetHandler());
|
widgetHandlerManager.registerHandler(new FurnitureMannequinWidgetHandler());
|
||||||
|
widgetHandlerManager.registerHandler(new FurnitureInternalLinkHandler());
|
||||||
|
widgetHandlerManager.registerHandler(new FurnitureRoomLinkHandler());
|
||||||
|
|
||||||
setWidgetHandler(widgetHandlerManager);
|
setWidgetHandler(widgetHandlerManager);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user