mirror of
https://github.com/billsonnn/nitro-react.git
synced 2025-02-17 01:12:37 +01:00
im annoyed
This commit is contained in:
parent
9a94f59844
commit
4b202678c0
@ -14,3 +14,4 @@
|
||||
@import './room/RoomView';
|
||||
@import './room-host/RoomHostView';
|
||||
@import './toolbar/ToolbarView';
|
||||
@import './wired/WiredView';
|
||||
|
@ -11,6 +11,7 @@ import { NotificationCenterView } from '../notification-center/NotificationCente
|
||||
import { RightSideView } from '../right-side/RightSideView';
|
||||
import { RoomHostView } from '../room-host/RoomHostView';
|
||||
import { ToolbarView } from '../toolbar/ToolbarView';
|
||||
import { WiredView } from '../wired/WiredView';
|
||||
import { MainViewProps } from './MainView.types';
|
||||
|
||||
export const MainView: FC<MainViewProps> = props =>
|
||||
@ -46,6 +47,7 @@ export const MainView: FC<MainViewProps> = props =>
|
||||
{ landingViewVisible && <HotelView /> }
|
||||
<ToolbarView isInRoom={ !landingViewVisible } />
|
||||
<RoomHostView />
|
||||
<WiredView />
|
||||
<AvatarEditorView />
|
||||
<NavigatorView />
|
||||
<InventoryView />
|
||||
|
6
src/views/wired/WiredMessageHandler.tsx
Normal file
6
src/views/wired/WiredMessageHandler.tsx
Normal file
@ -0,0 +1,6 @@
|
||||
import { FC } from 'react';
|
||||
|
||||
export const WiredMessageHandler: FC<{}> = props =>
|
||||
{
|
||||
return null;
|
||||
};
|
3
src/views/wired/WiredView.scss
Normal file
3
src/views/wired/WiredView.scss
Normal file
@ -0,0 +1,3 @@
|
||||
.nitro-wired {
|
||||
width: 300px;
|
||||
}
|
81
src/views/wired/WiredView.tsx
Normal file
81
src/views/wired/WiredView.tsx
Normal file
@ -0,0 +1,81 @@
|
||||
import { ConditionDefinition, Nitro, TriggerDefinition, WiredActionDefinition, WiredFurniActionEvent, WiredFurniConditionEvent, WiredFurniTriggerEvent } from 'nitro-renderer';
|
||||
import { FC, useCallback, useEffect, useState } from 'react';
|
||||
import { CreateMessageHook } from '../../hooks/messages';
|
||||
import { NitroCardContentView, NitroCardHeaderView, NitroCardView } from '../../layout';
|
||||
import { LocalizeText } from '../../utils/LocalizeText';
|
||||
import { WiredActionBaseView } from './views/actions/base/WiredActionBaseView';
|
||||
import { WiredConditionBaseView } from './views/conditions/base/WiredConditionBaseView';
|
||||
import { WiredTriggerBaseView } from './views/triggers/base/WiredTriggerBaseView';
|
||||
import { WiredFurniSelectorViewProps } from './WiredView.types';
|
||||
|
||||
export const WiredView: FC<WiredFurniSelectorViewProps> = props =>
|
||||
{
|
||||
const [ wiredDefinition, setWiredDefinition ] = useState<TriggerDefinition | WiredActionDefinition | ConditionDefinition>(null);
|
||||
const [ name, setName ] = useState(null);
|
||||
const [ description, setDescription ] = useState(null);
|
||||
|
||||
useEffect(() =>
|
||||
{
|
||||
if(!wiredDefinition) return;
|
||||
|
||||
const itemData = Nitro.instance.sessionDataManager.getFloorItemData(wiredDefinition.spriteId);
|
||||
|
||||
if(!itemData) return;
|
||||
|
||||
setName(itemData.name);
|
||||
setDescription(itemData.description);
|
||||
}, [ wiredDefinition ]);
|
||||
|
||||
const getWiredType = useCallback(() =>
|
||||
{
|
||||
if(wiredDefinition instanceof TriggerDefinition)
|
||||
return 'trigger';
|
||||
else if(wiredDefinition instanceof ConditionDefinition)
|
||||
return 'condition';
|
||||
else
|
||||
return 'action';
|
||||
|
||||
}, [ wiredDefinition ]);
|
||||
|
||||
const getTypeBase = useCallback(() =>
|
||||
{
|
||||
if(wiredDefinition instanceof TriggerDefinition)
|
||||
return <WiredTriggerBaseView />;
|
||||
else if(wiredDefinition instanceof ConditionDefinition)
|
||||
return <WiredConditionBaseView />;
|
||||
else
|
||||
return <WiredActionBaseView wiredDefinition={ wiredDefinition } />;
|
||||
|
||||
}, [ wiredDefinition ]);
|
||||
|
||||
const onWiredFurniEvent = useCallback((event: WiredFurniTriggerEvent | WiredFurniConditionEvent | WiredFurniActionEvent) =>
|
||||
{
|
||||
setWiredDefinition(event.getParser().definition);
|
||||
}, [ setWiredDefinition ]);
|
||||
|
||||
CreateMessageHook(WiredFurniTriggerEvent, onWiredFurniEvent);
|
||||
CreateMessageHook(WiredFurniConditionEvent, onWiredFurniEvent);
|
||||
CreateMessageHook(WiredFurniActionEvent, onWiredFurniEvent);
|
||||
|
||||
if(!wiredDefinition) return null;
|
||||
|
||||
return (
|
||||
<NitroCardView className="nitro-wired" simple={ true }>
|
||||
<NitroCardHeaderView headerText={ LocalizeText('wiredfurni.title') } onCloseClick={ event => {} } />
|
||||
<NitroCardContentView className="text-black">
|
||||
<div className="d-flex align-items-center">
|
||||
<i className={ 'me-2 icon icon-wired-' + getWiredType()} />
|
||||
<div className="fw-bold">{ name }</div>
|
||||
</div>
|
||||
<div>{ description }</div>
|
||||
<div>
|
||||
{ getTypeBase() }
|
||||
</div>
|
||||
<div className="d-flex mt-2">
|
||||
<button className="btn btn-success me-2 w-100">{ LocalizeText('wiredfurni.ready') }</button>
|
||||
<button className="btn btn-secondary w-100">{ LocalizeText('cancel') }</button>
|
||||
</div>
|
||||
</NitroCardContentView>
|
||||
</NitroCardView>
|
||||
);
|
||||
};
|
9
src/views/wired/WiredView.types.ts
Normal file
9
src/views/wired/WiredView.types.ts
Normal file
@ -0,0 +1,9 @@
|
||||
import { ConditionDefinition, TriggerDefinition, WiredActionDefinition } from 'nitro-renderer';
|
||||
|
||||
export class WiredFurniSelectorViewProps
|
||||
{}
|
||||
|
||||
export class WiredLayoutViewProps
|
||||
{
|
||||
wiredDefinition: TriggerDefinition | WiredActionDefinition | ConditionDefinition;
|
||||
}
|
4
src/views/wired/utils/IWiredLayout.ts
Normal file
4
src/views/wired/utils/IWiredLayout.ts
Normal file
@ -0,0 +1,4 @@
|
||||
export interface IWiredLayout
|
||||
{
|
||||
code: number;
|
||||
}
|
29
src/views/wired/utils/WiredActionLayout.ts
Normal file
29
src/views/wired/utils/WiredActionLayout.ts
Normal file
@ -0,0 +1,29 @@
|
||||
export class WiredActionLayout
|
||||
{
|
||||
public static TOGGLE_FURNI_STATE: number = 0;
|
||||
public static RESET: number = 1;
|
||||
public static SET_FURNI_STATE: number = 3;
|
||||
public static MOVE_FURNI: number = 4;
|
||||
public static GIVE_SCORE: number = 6;
|
||||
public static CHAT: number = 7;
|
||||
public static TELEPORT: number = 8;
|
||||
public static JOIN_TEAM: number = 9;
|
||||
public static LEAVE_TEAM: number = 10;
|
||||
public static CHASE: number = 11;
|
||||
public static FLEE: number = 12;
|
||||
public static MOVE_TO_DIRECTION: number = 13;
|
||||
public static GIVE_SCORE_TO_PREDEFINED_TEAM: number = 14;
|
||||
public static TOGGLE_TO_RANDOM_STATE: number = 15;
|
||||
public static MOVE_FURNI_TO: number = 16;
|
||||
public static GIVE_REWARD: number = 17;
|
||||
public static CALL_ANOTHER_STACK: number = 18;
|
||||
public static KICK_FROM_ROOM: number = 19;
|
||||
public static MUTE_USER: number = 20;
|
||||
public static BOT_TELEPORT: number = 21;
|
||||
public static BOT_MOVE: number = 22;
|
||||
public static BOT_TALK: number = 23;
|
||||
public static BOT_GIVE_HAND_ITEM: number = 24;
|
||||
public static BOT_FOLLOW_AVATAR: number = 25;
|
||||
public static BOT_CHANGE_FIGURE: number = 26;
|
||||
public static BOT_TALK_DIRECT_TO_AVTR: number = 27;
|
||||
}
|
26
src/views/wired/views/actions/base/WiredActionBaseView.tsx
Normal file
26
src/views/wired/views/actions/base/WiredActionBaseView.tsx
Normal file
@ -0,0 +1,26 @@
|
||||
import { ConditionDefinition, TriggerDefinition, WiredActionDefinition } from 'nitro-renderer';
|
||||
import { FC, useCallback } from 'react';
|
||||
import { WiredActionLayout } from '../../../utils/WiredActionLayout';
|
||||
import { WiredActionToggleFurniStateView } from '../toggle-furni-state/WiredActionToggleFurniStateView';
|
||||
|
||||
export const WiredActionBaseView: FC<{ wiredDefinition: TriggerDefinition | WiredActionDefinition | ConditionDefinition }> = props =>
|
||||
{
|
||||
const { wiredDefinition = null } = props;
|
||||
|
||||
const getActionlayout = useCallback((code: number) =>
|
||||
{
|
||||
switch(code)
|
||||
{
|
||||
case WiredActionLayout.TOGGLE_FURNI_STATE:
|
||||
return <WiredActionToggleFurniStateView wiredDefinition={ wiredDefinition } />;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}, [ wiredDefinition ]);
|
||||
|
||||
return (
|
||||
<>
|
||||
{ wiredDefinition && getActionlayout(wiredDefinition.code) }
|
||||
</>
|
||||
);
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
import { FC } from 'react';
|
||||
import { WiredLayoutViewProps } from '../../../WiredView.types';
|
||||
import { WiredFurniSelectorView } from '../../furni-selector/WiredFurniSelectorView';
|
||||
|
||||
export const WiredActionToggleFurniStateView: FC<WiredLayoutViewProps> = props =>
|
||||
{
|
||||
return (
|
||||
<>
|
||||
<WiredFurniSelectorView selectedItemsCount={ 0 } maximumItemsCount={ 0 } />
|
||||
</>
|
||||
);
|
||||
};
|
@ -0,0 +1,14 @@
|
||||
import { FC, useCallback, useState } from 'react';
|
||||
import { IWiredLayout } from '../../../utils/IWiredLayout';
|
||||
|
||||
export const WiredConditionBaseView: FC<{}> = props =>
|
||||
{
|
||||
const [ conditionLayouts, setConditionLayouts ] = useState<IWiredLayout[]>([]);
|
||||
|
||||
const RegisterActionLayout = useCallback((layout: IWiredLayout) =>
|
||||
{
|
||||
setConditionLayouts(layouts => [...layouts, layout]);
|
||||
}, [ setConditionLayouts ]);
|
||||
|
||||
return null;
|
||||
};
|
@ -0,0 +1,17 @@
|
||||
import { FC } from 'react';
|
||||
import { LocalizeText } from '../../../../utils/LocalizeText';
|
||||
import { WiredFurniSelectorViewProps } from './WiredFurniSelectorView.types';
|
||||
|
||||
export const WiredFurniSelectorView: FC<WiredFurniSelectorViewProps> = props =>
|
||||
{
|
||||
const { selectedItemsCount = null, maximumItemsCount = null } = props;
|
||||
|
||||
return (
|
||||
<>
|
||||
<hr className="p-0 m-1" />
|
||||
<div className="fw-bold">{ LocalizeText('wiredfurni.pickfurnis.caption', ['count', 'limit'], [selectedItemsCount.toString(), maximumItemsCount.toString()]) }</div>
|
||||
<div>{ LocalizeText('wiredfurni.pickfurnis.desc') }</div>
|
||||
<hr className="p-0 m-1" />
|
||||
</>
|
||||
);
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
export class WiredFurniSelectorViewProps
|
||||
{
|
||||
selectedItemsCount: number;
|
||||
maximumItemsCount: number;
|
||||
}
|
14
src/views/wired/views/triggers/base/WiredTriggerBaseView.tsx
Normal file
14
src/views/wired/views/triggers/base/WiredTriggerBaseView.tsx
Normal file
@ -0,0 +1,14 @@
|
||||
import { FC, useCallback, useState } from 'react';
|
||||
import { IWiredLayout } from '../../../utils/IWiredLayout';
|
||||
|
||||
export const WiredTriggerBaseView: FC<{}> = props =>
|
||||
{
|
||||
const [ triggerLayouts, setTriggerLayouts ] = useState<IWiredLayout[]>([]);
|
||||
|
||||
const RegisterActionLayout = useCallback((layout: IWiredLayout) =>
|
||||
{
|
||||
setTriggerLayouts(layouts => [...layouts, layout]);
|
||||
}, [ setTriggerLayouts ]);
|
||||
|
||||
return null;
|
||||
};
|
Loading…
x
Reference in New Issue
Block a user