diff --git a/public/UITexts.example b/public/UITexts.example index 539f71a..887390c 100644 --- a/public/UITexts.example +++ b/public/UITexts.example @@ -29,6 +29,8 @@ "wiredfurni.params.anim_time.title": "Durata animazione movimento", "wiredfurni.params.anim_time.description": "Regola la velocita dello slide per i Wired che spostano utenti e furni.", "wiredfurni.params.anim_time.value": "%ms% ms", + "wiredfurni.params.pickamount": "Seleziona %picks% effetti", + "wiredfurni.params.skipactions": "Evita gli effetti delle ultime %skips% esecuzioni.", "wiredfurni.params.mov_no_animation.title": "Animazione movimento", "wiredfurni.params.mov_no_animation.description": "Questo extra disattiva lo slide per i Wired che spostano utenti e furni.", "wiredfurni.params.select_options": "Seleziona opzioni:", diff --git a/src/api/wired/WiredActionLayoutCode.ts b/src/api/wired/WiredActionLayoutCode.ts index 7508b70..0e38692 100644 --- a/src/api/wired/WiredActionLayoutCode.ts +++ b/src/api/wired/WiredActionLayoutCode.ts @@ -60,4 +60,6 @@ export class WiredActionLayoutCode public static MOVE_NO_ANIMATION_EXTRA: number = 59; public static ANIMATION_TIME_EXTRA: number = 60; public static MOVE_PHYSICS_EXTRA: number = 61; + public static UNSEEN_EXTRA: number = 62; + public static RANDOM_EXTRA: number = 63; } diff --git a/src/components/wired/views/actions/WiredActionLayoutView.tsx b/src/components/wired/views/actions/WiredActionLayoutView.tsx index d217f61..e218f6d 100644 --- a/src/components/wired/views/actions/WiredActionLayoutView.tsx +++ b/src/components/wired/views/actions/WiredActionLayoutView.tsx @@ -56,6 +56,8 @@ import { WiredExtraAnimationTimeView } from '../extras/WiredExtraAnimationTimeVi import { WiredExtraMoveCarryUsersView } from '../extras/WiredExtraMoveCarryUsersView'; import { WiredExtraMoveNoAnimationView } from '../extras/WiredExtraMoveNoAnimationView'; import { WiredExtraMovePhysicsView } from '../extras/WiredExtraMovePhysicsView'; +import { WiredExtraRandomView } from '../extras/WiredExtraRandomView'; +import { WiredExtraUnseenView } from '../extras/WiredExtraUnseenView'; export const WiredActionLayoutView = (code: number) => { @@ -177,6 +179,10 @@ export const WiredActionLayoutView = (code: number) => return ; case WiredActionLayoutCode.MOVE_PHYSICS_EXTRA: return ; + case WiredActionLayoutCode.UNSEEN_EXTRA: + return ; + case WiredActionLayoutCode.RANDOM_EXTRA: + return ; case WiredActionLayoutCode.SEND_SIGNAL: return ; } diff --git a/src/components/wired/views/extras/WiredExtraAnimationTimeView.tsx b/src/components/wired/views/extras/WiredExtraAnimationTimeView.tsx index 6fee1a2..48de6d3 100644 --- a/src/components/wired/views/extras/WiredExtraAnimationTimeView.tsx +++ b/src/components/wired/views/extras/WiredExtraAnimationTimeView.tsx @@ -1,5 +1,5 @@ import { FC, useEffect, useState } from 'react'; -import { LocalizeText, WiredFurniType } from '../../../../api'; +import { WiredFurniType } from '../../../../api'; import { Slider, Text } from '../../../../common'; import { useWired } from '../../../../hooks'; import { WiredExtraBaseView } from './WiredExtraBaseView'; @@ -37,9 +37,7 @@ export const WiredExtraAnimationTimeView: FC<{}> = () => return (
- { LocalizeText('wiredfurni.params.anim_time.title') } - { LocalizeText('wiredfurni.params.anim_time.description') } - { LocalizeText('wiredfurni.params.anim_time.value', [ 'ms' ], [ duration.toString() ]) } + { duration } ms setDuration(normalizeDuration(Array.isArray(value) ? value[0] : Number(value))) } />
diff --git a/src/components/wired/views/extras/WiredExtraMoveNoAnimationView.tsx b/src/components/wired/views/extras/WiredExtraMoveNoAnimationView.tsx index 0e13527..3a67fa5 100644 --- a/src/components/wired/views/extras/WiredExtraMoveNoAnimationView.tsx +++ b/src/components/wired/views/extras/WiredExtraMoveNoAnimationView.tsx @@ -1,6 +1,5 @@ import { FC } from 'react'; -import { LocalizeText, WiredFurniType } from '../../../../api'; -import { Text } from '../../../../common'; +import { WiredFurniType } from '../../../../api'; import { useWired } from '../../../../hooks'; import { WiredExtraBaseView } from './WiredExtraBaseView'; @@ -14,12 +13,5 @@ export const WiredExtraMoveNoAnimationView: FC<{}> = () => setStringParam(''); }; - return ( - -
- { LocalizeText('wiredfurni.params.mov_no_animation.title') } - { LocalizeText('wiredfurni.params.mov_no_animation.description') } -
-
- ); + return ; }; diff --git a/src/components/wired/views/extras/WiredExtraRandomView.tsx b/src/components/wired/views/extras/WiredExtraRandomView.tsx new file mode 100644 index 0000000..ef30d06 --- /dev/null +++ b/src/components/wired/views/extras/WiredExtraRandomView.tsx @@ -0,0 +1,71 @@ +import { FC, useEffect, useState } from 'react'; +import { LocalizeText, WiredFurniType } from '../../../../api'; +import { Slider, Text } from '../../../../common'; +import { useWired } from '../../../../hooks'; +import { WiredExtraBaseView } from './WiredExtraBaseView'; + +const MIN_PICK_AMOUNT = 1; +const MIN_SKIP_EXECUTIONS = 0; +const MAX_RANDOM_VALUE = 1000; + +const normalizePickAmount = (value: number) => +{ + if(isNaN(value)) return MIN_PICK_AMOUNT; + + return Math.max(MIN_PICK_AMOUNT, Math.min(MAX_RANDOM_VALUE, Math.floor(value))); +}; + +const normalizeSkipExecutions = (value: number) => +{ + if(isNaN(value)) return MIN_SKIP_EXECUTIONS; + + return Math.max(MIN_SKIP_EXECUTIONS, Math.min(MAX_RANDOM_VALUE, Math.floor(value))); +}; + +export const WiredExtraRandomView: FC<{}> = () => +{ + const { trigger = null, setIntParams = null, setStringParam = null } = useWired(); + const [ pickAmount, setPickAmount ] = useState(MIN_PICK_AMOUNT); + const [ skipExecutions, setSkipExecutions ] = useState(MIN_SKIP_EXECUTIONS); + + useEffect(() => + { + if(!trigger) return; + + setPickAmount(normalizePickAmount((trigger.intData.length > 0) ? trigger.intData[0] : MIN_PICK_AMOUNT)); + setSkipExecutions(normalizeSkipExecutions((trigger.intData.length > 1) ? trigger.intData[1] : MIN_SKIP_EXECUTIONS)); + }, [ trigger ]); + + const save = () => + { + setIntParams([ normalizePickAmount(pickAmount), normalizeSkipExecutions(skipExecutions) ]); + setStringParam(''); + }; + + return ( + +
+
+ { LocalizeText('wiredfurni.params.pickamount', [ 'picks' ], [ pickAmount.toString() ]) } + setPickAmount(normalizePickAmount(Array.isArray(value) ? value[0] : Number(value))) } /> + { pickAmount } +
+
+ { LocalizeText('wiredfurni.params.skipactions', [ 'skips' ], [ skipExecutions.toString() ]) } + setSkipExecutions(normalizeSkipExecutions(Array.isArray(value) ? value[0] : Number(value))) } /> + { skipExecutions } +
+
+
+ ); +}; diff --git a/src/components/wired/views/extras/WiredExtraUnseenView.tsx b/src/components/wired/views/extras/WiredExtraUnseenView.tsx new file mode 100644 index 0000000..4fc091a --- /dev/null +++ b/src/components/wired/views/extras/WiredExtraUnseenView.tsx @@ -0,0 +1,17 @@ +import { FC } from 'react'; +import { WiredFurniType } from '../../../../api'; +import { useWired } from '../../../../hooks'; +import { WiredExtraBaseView } from './WiredExtraBaseView'; + +export const WiredExtraUnseenView: FC<{}> = () => +{ + const { setIntParams = null, setStringParam = null } = useWired(); + + const save = () => + { + setIntParams([]); + setStringParam(''); + }; + + return ; +}; diff --git a/src/components/wired/views/triggers/WiredTriggerAvatarSaysSomethingView.tsx b/src/components/wired/views/triggers/WiredTriggerAvatarSaysSomethingView.tsx index 048c20c..531fa2b 100644 --- a/src/components/wired/views/triggers/WiredTriggerAvatarSaysSomethingView.tsx +++ b/src/components/wired/views/triggers/WiredTriggerAvatarSaysSomethingView.tsx @@ -16,10 +16,11 @@ export const WiredTriggerAvatarSaysSomethingView: FC<{}> = () => const [ hideMessage, setHideMessage ] = useState(false); const [ ownerOnly, setOwnerOnly ] = useState(false); const { trigger = null, setStringParam = null, setIntParams = null } = useWired(); + const isAnyTextMode = (matchMode === MATCH_ALL); const save = () => { - setStringParam(message); + setStringParam(isAnyTextMode ? '' : message); setIntParams([ matchMode, hideMessage ? 1 : 0, @@ -39,7 +40,11 @@ export const WiredTriggerAvatarSaysSomethingView: FC<{}> = () =>
{ LocalizeText('wiredfurni.params.whatissaid') } - setMessage(event.target.value) } /> + setMessage(event.target.value) } />