From 4b202678c073abf862254ecf899ce56413f88f79 Mon Sep 17 00:00:00 2001 From: MyNameIsBatman Date: Sat, 26 Jun 2021 23:46:40 -0300 Subject: [PATCH] im annoyed --- src/views/Styles.scss | 1 + src/views/main/MainView.tsx | 2 + src/views/wired/WiredMessageHandler.tsx | 6 ++ src/views/wired/WiredView.scss | 3 + src/views/wired/WiredView.tsx | 81 +++++++++++++++++++ src/views/wired/WiredView.types.ts | 9 +++ src/views/wired/utils/IWiredLayout.ts | 4 + src/views/wired/utils/WiredActionLayout.ts | 29 +++++++ .../actions/base/WiredActionBaseView.tsx | 26 ++++++ .../WiredActionToggleFurniStateView.tsx | 12 +++ .../base/WiredConditionBaseView.tsx | 14 ++++ .../furni-selector/WiredFurniSelectorView.tsx | 17 ++++ .../WiredFurniSelectorView.types.ts | 5 ++ .../triggers/base/WiredTriggerBaseView.tsx | 14 ++++ 14 files changed, 223 insertions(+) create mode 100644 src/views/wired/WiredMessageHandler.tsx create mode 100644 src/views/wired/WiredView.scss create mode 100644 src/views/wired/WiredView.tsx create mode 100644 src/views/wired/WiredView.types.ts create mode 100644 src/views/wired/utils/IWiredLayout.ts create mode 100644 src/views/wired/utils/WiredActionLayout.ts create mode 100644 src/views/wired/views/actions/base/WiredActionBaseView.tsx create mode 100644 src/views/wired/views/actions/toggle-furni-state/WiredActionToggleFurniStateView.tsx create mode 100644 src/views/wired/views/conditions/base/WiredConditionBaseView.tsx create mode 100644 src/views/wired/views/furni-selector/WiredFurniSelectorView.tsx create mode 100644 src/views/wired/views/furni-selector/WiredFurniSelectorView.types.ts create mode 100644 src/views/wired/views/triggers/base/WiredTriggerBaseView.tsx diff --git a/src/views/Styles.scss b/src/views/Styles.scss index c6117f4c..c4964b7e 100644 --- a/src/views/Styles.scss +++ b/src/views/Styles.scss @@ -14,3 +14,4 @@ @import './room/RoomView'; @import './room-host/RoomHostView'; @import './toolbar/ToolbarView'; +@import './wired/WiredView'; diff --git a/src/views/main/MainView.tsx b/src/views/main/MainView.tsx index 3d06d83d..540ff32f 100644 --- a/src/views/main/MainView.tsx +++ b/src/views/main/MainView.tsx @@ -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 = props => @@ -46,6 +47,7 @@ export const MainView: FC = props => { landingViewVisible && } + diff --git a/src/views/wired/WiredMessageHandler.tsx b/src/views/wired/WiredMessageHandler.tsx new file mode 100644 index 00000000..30990fc4 --- /dev/null +++ b/src/views/wired/WiredMessageHandler.tsx @@ -0,0 +1,6 @@ +import { FC } from 'react'; + +export const WiredMessageHandler: FC<{}> = props => +{ + return null; +}; diff --git a/src/views/wired/WiredView.scss b/src/views/wired/WiredView.scss new file mode 100644 index 00000000..b5980200 --- /dev/null +++ b/src/views/wired/WiredView.scss @@ -0,0 +1,3 @@ +.nitro-wired { + width: 300px; +} diff --git a/src/views/wired/WiredView.tsx b/src/views/wired/WiredView.tsx new file mode 100644 index 00000000..67b2cbad --- /dev/null +++ b/src/views/wired/WiredView.tsx @@ -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 = props => +{ + const [ wiredDefinition, setWiredDefinition ] = useState(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 ; + else if(wiredDefinition instanceof ConditionDefinition) + return ; + else + return ; + + }, [ 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 ( + + {} } /> + +
+ +
{ name }
+
+
{ description }
+
+ { getTypeBase() } +
+
+ + +
+
+
+ ); +}; diff --git a/src/views/wired/WiredView.types.ts b/src/views/wired/WiredView.types.ts new file mode 100644 index 00000000..44aaf900 --- /dev/null +++ b/src/views/wired/WiredView.types.ts @@ -0,0 +1,9 @@ +import { ConditionDefinition, TriggerDefinition, WiredActionDefinition } from 'nitro-renderer'; + +export class WiredFurniSelectorViewProps +{} + +export class WiredLayoutViewProps +{ + wiredDefinition: TriggerDefinition | WiredActionDefinition | ConditionDefinition; +} diff --git a/src/views/wired/utils/IWiredLayout.ts b/src/views/wired/utils/IWiredLayout.ts new file mode 100644 index 00000000..96d965d5 --- /dev/null +++ b/src/views/wired/utils/IWiredLayout.ts @@ -0,0 +1,4 @@ +export interface IWiredLayout +{ + code: number; +} diff --git a/src/views/wired/utils/WiredActionLayout.ts b/src/views/wired/utils/WiredActionLayout.ts new file mode 100644 index 00000000..78ec45d2 --- /dev/null +++ b/src/views/wired/utils/WiredActionLayout.ts @@ -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; +} diff --git a/src/views/wired/views/actions/base/WiredActionBaseView.tsx b/src/views/wired/views/actions/base/WiredActionBaseView.tsx new file mode 100644 index 00000000..42422a86 --- /dev/null +++ b/src/views/wired/views/actions/base/WiredActionBaseView.tsx @@ -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 ; + default: + return null; + } + }, [ wiredDefinition ]); + + return ( + <> + { wiredDefinition && getActionlayout(wiredDefinition.code) } + + ); +} diff --git a/src/views/wired/views/actions/toggle-furni-state/WiredActionToggleFurniStateView.tsx b/src/views/wired/views/actions/toggle-furni-state/WiredActionToggleFurniStateView.tsx new file mode 100644 index 00000000..a1e47312 --- /dev/null +++ b/src/views/wired/views/actions/toggle-furni-state/WiredActionToggleFurniStateView.tsx @@ -0,0 +1,12 @@ +import { FC } from 'react'; +import { WiredLayoutViewProps } from '../../../WiredView.types'; +import { WiredFurniSelectorView } from '../../furni-selector/WiredFurniSelectorView'; + +export const WiredActionToggleFurniStateView: FC = props => +{ + return ( + <> + + + ); +}; diff --git a/src/views/wired/views/conditions/base/WiredConditionBaseView.tsx b/src/views/wired/views/conditions/base/WiredConditionBaseView.tsx new file mode 100644 index 00000000..05ed3e90 --- /dev/null +++ b/src/views/wired/views/conditions/base/WiredConditionBaseView.tsx @@ -0,0 +1,14 @@ +import { FC, useCallback, useState } from 'react'; +import { IWiredLayout } from '../../../utils/IWiredLayout'; + +export const WiredConditionBaseView: FC<{}> = props => +{ + const [ conditionLayouts, setConditionLayouts ] = useState([]); + + const RegisterActionLayout = useCallback((layout: IWiredLayout) => + { + setConditionLayouts(layouts => [...layouts, layout]); + }, [ setConditionLayouts ]); + + return null; +}; diff --git a/src/views/wired/views/furni-selector/WiredFurniSelectorView.tsx b/src/views/wired/views/furni-selector/WiredFurniSelectorView.tsx new file mode 100644 index 00000000..a9b3a38e --- /dev/null +++ b/src/views/wired/views/furni-selector/WiredFurniSelectorView.tsx @@ -0,0 +1,17 @@ +import { FC } from 'react'; +import { LocalizeText } from '../../../../utils/LocalizeText'; +import { WiredFurniSelectorViewProps } from './WiredFurniSelectorView.types'; + +export const WiredFurniSelectorView: FC = props => +{ + const { selectedItemsCount = null, maximumItemsCount = null } = props; + + return ( + <> +
+
{ LocalizeText('wiredfurni.pickfurnis.caption', ['count', 'limit'], [selectedItemsCount.toString(), maximumItemsCount.toString()]) }
+
{ LocalizeText('wiredfurni.pickfurnis.desc') }
+
+ + ); +} diff --git a/src/views/wired/views/furni-selector/WiredFurniSelectorView.types.ts b/src/views/wired/views/furni-selector/WiredFurniSelectorView.types.ts new file mode 100644 index 00000000..88144289 --- /dev/null +++ b/src/views/wired/views/furni-selector/WiredFurniSelectorView.types.ts @@ -0,0 +1,5 @@ +export class WiredFurniSelectorViewProps +{ + selectedItemsCount: number; + maximumItemsCount: number; +} diff --git a/src/views/wired/views/triggers/base/WiredTriggerBaseView.tsx b/src/views/wired/views/triggers/base/WiredTriggerBaseView.tsx new file mode 100644 index 00000000..05071f98 --- /dev/null +++ b/src/views/wired/views/triggers/base/WiredTriggerBaseView.tsx @@ -0,0 +1,14 @@ +import { FC, useCallback, useState } from 'react'; +import { IWiredLayout } from '../../../utils/IWiredLayout'; + +export const WiredTriggerBaseView: FC<{}> = props => +{ + const [ triggerLayouts, setTriggerLayouts ] = useState([]); + + const RegisterActionLayout = useCallback((layout: IWiredLayout) => + { + setTriggerLayouts(layouts => [...layouts, layout]); + }, [ setTriggerLayouts ]); + + return null; +};