mirror of
https://github.com/billsonnn/nitro-react.git
synced 2024-10-23 11:23:05 +02:00
Conditions
This commit is contained in:
parent
537987b85e
commit
3e914a601a
@ -1,4 +1,4 @@
|
|||||||
import { Triggerable, TriggerDefinition, UpdateActionMessageComposer, UpdateTriggerMessageComposer, WiredActionDefinition } from 'nitro-renderer';
|
import { ConditionDefinition, Triggerable, TriggerDefinition, UpdateActionMessageComposer, UpdateConditionMessageComposer, UpdateTriggerMessageComposer, WiredActionDefinition } from 'nitro-renderer';
|
||||||
import { FC, useCallback, useMemo, useState } from 'react';
|
import { FC, useCallback, useMemo, useState } from 'react';
|
||||||
import { GetConnection } from '../../api';
|
import { GetConnection } from '../../api';
|
||||||
import { WiredEvent } from '../../events';
|
import { WiredEvent } from '../../events';
|
||||||
@ -34,6 +34,11 @@ export const WiredView: FC<WiredFurniSelectorViewProps> = props =>
|
|||||||
{
|
{
|
||||||
GetConnection().send(new UpdateTriggerMessageComposer(trigger.id, intParams, stringParam, furniIds, trigger.stuffTypeSelectionCode));
|
GetConnection().send(new UpdateTriggerMessageComposer(trigger.id, intParams, stringParam, furniIds, trigger.stuffTypeSelectionCode));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(trigger instanceof ConditionDefinition)
|
||||||
|
{
|
||||||
|
GetConnection().send(new UpdateConditionMessageComposer(trigger.id, intParams, stringParam, furniIds, trigger.stuffTypeSelectionCode));
|
||||||
|
}
|
||||||
}, [ trigger, intParams, stringParam, furniIds, actionDelay ]);
|
}, [ trigger, intParams, stringParam, furniIds, actionDelay ]);
|
||||||
|
|
||||||
useUiEvent(WiredEvent.SAVE_WIRED, onWiredEvent);
|
useUiEvent(WiredEvent.SAVE_WIRED, onWiredEvent);
|
||||||
|
55
src/views/wired/common/GetWiredConditionLayout.tsx
Normal file
55
src/views/wired/common/GetWiredConditionLayout.tsx
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
import { WiredConditionActorHasHandItemView } from '../views/conditions/actor-has-hand-item/WiredConditionActorHasHandItem';
|
||||||
|
import { WiredConditionActorIsGroupMemberView } from '../views/conditions/actor-is-group-member/WiredConditionActorIsGroupMemberView';
|
||||||
|
import { WiredConditionActorIsOnFurniView } from '../views/conditions/actor-is-on-furni/WiredConditionActorIsOnFurniView';
|
||||||
|
import { WiredConditionActorIsTeamMemberView } from '../views/conditions/actor-is-team-member/WiredConditionActorIsTeamMemberView';
|
||||||
|
import { WiredConditionActorIsWearingBadgeView } from '../views/conditions/actor-is-wearing-badge/WiredConditionActorIsWearingBadgeView';
|
||||||
|
import { WiredConditionActorIsWearingEffectView } from '../views/conditions/actor-is-wearing-effect/WiredConditionActorIsWearingEffectView';
|
||||||
|
import { WiredConditionFurniHasAvatarOnView } from '../views/conditions/furni-has-avatar-on/WiredConditionFurniHasAvatarOnView';
|
||||||
|
import { WiredConditionFurniHasFurniOnView } from '../views/conditions/furni-has-furni-on/WiredConditionFurniHasFurniOnView';
|
||||||
|
import { WiredConditionFurniHasNotFurniOnView } from '../views/conditions/furni-has-not-furni-on/WiredConditionFurniHasNotFurniOnView';
|
||||||
|
import { WiredConditionFurniIsOfTypeView } from '../views/conditions/furni-is-of-type/WiredConditionFurniIsOfTypeView';
|
||||||
|
import { WiredConditionFurniMatchesSnapshotView } from '../views/conditions/furni-matches-snapshot/WiredConditionFurniMatchesSnapshotView';
|
||||||
|
import { WiredConditionTimeElapsedLessView } from '../views/conditions/time-elapsed-less/WiredConditionTimeElapsedLessView';
|
||||||
|
import { WiredConditionTimeElapsedMoreView } from '../views/conditions/time-elapsed-more/WiredConditionTimeElapsedMoreView';
|
||||||
|
import { WiredConditionlayout } from './WiredConditionLayoutCode';
|
||||||
|
|
||||||
|
export function GetWiredConditionLayout(code: number): JSX.Element
|
||||||
|
{
|
||||||
|
switch(code)
|
||||||
|
{
|
||||||
|
case WiredConditionlayout.ACTOR_HAS_HANDITEM:
|
||||||
|
return <WiredConditionActorHasHandItemView />;
|
||||||
|
case WiredConditionlayout.ACTOR_IS_GROUP_MEMBER:
|
||||||
|
case WiredConditionlayout.NOT_ACTOR_IN_GROUP:
|
||||||
|
return <WiredConditionActorIsGroupMemberView />;
|
||||||
|
case WiredConditionlayout.ACTOR_IS_ON_FURNI:
|
||||||
|
case WiredConditionlayout.NOT_ACTOR_ON_FURNI:
|
||||||
|
return <WiredConditionActorIsOnFurniView />;
|
||||||
|
case WiredConditionlayout.ACTOR_IS_IN_TEAM:
|
||||||
|
case WiredConditionlayout.NOT_ACTOR_IN_TEAM:
|
||||||
|
return <WiredConditionActorIsTeamMemberView />;
|
||||||
|
case WiredConditionlayout.ACTOR_IS_WEARING_BADGE:
|
||||||
|
case WiredConditionlayout.NOT_ACTOR_WEARS_BADGE:
|
||||||
|
return <WiredConditionActorIsWearingBadgeView />;
|
||||||
|
case WiredConditionlayout.ACTOR_IS_WEARING_EFFECT:
|
||||||
|
case WiredConditionlayout.NOT_ACTOR_WEARING_EFFECT:
|
||||||
|
return <WiredConditionActorIsWearingEffectView />;
|
||||||
|
case WiredConditionlayout.FURNIS_HAVE_AVATARS:
|
||||||
|
case WiredConditionlayout.FURNI_NOT_HAVE_HABBO:
|
||||||
|
return <WiredConditionFurniHasAvatarOnView />;
|
||||||
|
case WiredConditionlayout.HAS_STACKED_FURNIS:
|
||||||
|
return <WiredConditionFurniHasFurniOnView />;
|
||||||
|
case WiredConditionlayout.NOT_HAS_STACKED_FURNIS:
|
||||||
|
return <WiredConditionFurniHasNotFurniOnView />;
|
||||||
|
case WiredConditionlayout.STUFF_TYPE_MATCHES:
|
||||||
|
case WiredConditionlayout.NOT_FURNI_IS_OF_TYPE:
|
||||||
|
return <WiredConditionFurniIsOfTypeView />;
|
||||||
|
case WiredConditionlayout.STATES_MATCH:
|
||||||
|
case WiredConditionlayout.NOT_STATES_MATCH:
|
||||||
|
return <WiredConditionFurniMatchesSnapshotView />;
|
||||||
|
case WiredConditionlayout.TIME_ELAPSED_LESS:
|
||||||
|
return <WiredConditionTimeElapsedLessView />;
|
||||||
|
case WiredConditionlayout.TIME_ELAPSED_MORE:
|
||||||
|
return <WiredConditionTimeElapsedMoreView />;
|
||||||
|
}
|
||||||
|
}
|
@ -1,5 +1,6 @@
|
|||||||
import { Triggerable, TriggerDefinition, WiredActionDefinition } from 'nitro-renderer';
|
import { ConditionDefinition, Triggerable, TriggerDefinition, WiredActionDefinition } from 'nitro-renderer';
|
||||||
import { GetWiredActionLayout } from './GetWiredActionLayout';
|
import { GetWiredActionLayout } from './GetWiredActionLayout';
|
||||||
|
import { GetWiredConditionLayout } from './GetWiredConditionLayout';
|
||||||
import { GetWiredTriggerLayout } from './GetWiredTriggerLayout';
|
import { GetWiredTriggerLayout } from './GetWiredTriggerLayout';
|
||||||
|
|
||||||
export function GetWiredLayout(trigger: Triggerable): JSX.Element
|
export function GetWiredLayout(trigger: Triggerable): JSX.Element
|
||||||
@ -8,5 +9,7 @@ export function GetWiredLayout(trigger: Triggerable): JSX.Element
|
|||||||
|
|
||||||
if(trigger instanceof TriggerDefinition) return GetWiredTriggerLayout(trigger.code);
|
if(trigger instanceof TriggerDefinition) return GetWiredTriggerLayout(trigger.code);
|
||||||
|
|
||||||
|
if(trigger instanceof ConditionDefinition) return GetWiredConditionLayout(trigger.code);
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
29
src/views/wired/common/WiredConditionLayoutCode.ts
Normal file
29
src/views/wired/common/WiredConditionLayoutCode.ts
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
export class WiredConditionlayout
|
||||||
|
{
|
||||||
|
public static STATES_MATCH: number = 0;
|
||||||
|
public static FURNIS_HAVE_AVATARS: number = 1;
|
||||||
|
public static ACTOR_IS_ON_FURNI: number = 2;
|
||||||
|
public static TIME_ELAPSED_MORE: number = 3;
|
||||||
|
public static TIME_ELAPSED_LESS: number = 4;
|
||||||
|
public static USER_COUNT_IN: number = 5;
|
||||||
|
public static ACTOR_IS_IN_TEAM: number = 6;
|
||||||
|
public static HAS_STACKED_FURNIS: number = 7;
|
||||||
|
public static STUFF_TYPE_MATCHES: number = 8;
|
||||||
|
public static STUFFS_IN_FORMATION: number = 9;
|
||||||
|
public static ACTOR_IS_GROUP_MEMBER: number = 10;
|
||||||
|
public static ACTOR_IS_WEARING_BADGE: number = 11;
|
||||||
|
public static ACTOR_IS_WEARING_EFFECT: number = 12;
|
||||||
|
public static NOT_STATES_MATCH: number = 13;
|
||||||
|
public static FURNI_NOT_HAVE_HABBO: number = 14;
|
||||||
|
public static NOT_ACTOR_ON_FURNI: number = 15;
|
||||||
|
public static NOT_USER_COUNT_IN: number = 16;
|
||||||
|
public static NOT_ACTOR_IN_TEAM: number = 17;
|
||||||
|
public static NOT_HAS_STACKED_FURNIS: number = 18;
|
||||||
|
public static NOT_FURNI_IS_OF_TYPE: number = 19;
|
||||||
|
public static NOT_STUFFS_IN_FORMATION: number = 20;
|
||||||
|
public static NOT_ACTOR_IN_GROUP: number = 21;
|
||||||
|
public static NOT_ACTOR_WEARS_BADGE: number = 22;
|
||||||
|
public static NOT_ACTOR_WEARING_EFFECT: number = 23;
|
||||||
|
public static DATE_RANGE_ACTIVE: number = 24;
|
||||||
|
public static ACTOR_HAS_HANDITEM: number = 25;
|
||||||
|
}
|
@ -30,7 +30,7 @@ export const WiredActionBotGiveHandItemView: FC<{}> = props =>
|
|||||||
<label className="fw-bold">{ LocalizeText('wiredfurni.params.bot.name') }</label>
|
<label className="fw-bold">{ LocalizeText('wiredfurni.params.bot.name') }</label>
|
||||||
<input type="text" className="form-control form-control-sm" maxLength={ 32 } value={ botName } onChange={ event => setBotName(event.target.value) } />
|
<input type="text" className="form-control form-control-sm" maxLength={ 32 } value={ botName } onChange={ event => setBotName(event.target.value) } />
|
||||||
</div>
|
</div>
|
||||||
<div className="fw-bold">{ LocalizeText('wiredfurni.tooltip.handitem') }</div>
|
<div className="fw-bold">{ LocalizeText('wiredfurni.params.handitem') }</div>
|
||||||
<select className="form-select" value={ handItemId } onChange={ (e) => setHandItemId(Number(e.target.value)) }>
|
<select className="form-select" value={ handItemId } onChange={ (e) => setHandItemId(Number(e.target.value)) }>
|
||||||
<option value="0">------</option>
|
<option value="0">------</option>
|
||||||
{allowedHanditemIds && allowedHanditemIds.map(value =>
|
{allowedHanditemIds && allowedHanditemIds.map(value =>
|
||||||
|
@ -25,6 +25,7 @@ export const WiredActionSetFurniStateToView: FC<{}> = props =>
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<WiredActionBaseView requiresFurni={ WiredFurniType.STUFF_SELECTION_OPTION_BY_ID } save={ save }>
|
<WiredActionBaseView requiresFurni={ WiredFurniType.STUFF_SELECTION_OPTION_BY_ID } save={ save }>
|
||||||
|
<div className="fw-bold">{ LocalizeText('wiredfurni.params.conditions') }</div>
|
||||||
<div className="form-check">
|
<div className="form-check">
|
||||||
<input className="form-check-input" type="checkbox" id="stateFlag" onChange={(e) => setStateFlag(e.target.checked ? 1 : 0)} />
|
<input className="form-check-input" type="checkbox" id="stateFlag" onChange={(e) => setStateFlag(e.target.checked ? 1 : 0)} />
|
||||||
<label className="form-check-label" htmlFor="stateFlag">
|
<label className="form-check-label" htmlFor="stateFlag">
|
||||||
|
@ -0,0 +1,35 @@
|
|||||||
|
import { FC, useCallback, useEffect, useState } from 'react';
|
||||||
|
import { LocalizeText } from '../../../../../utils/LocalizeText';
|
||||||
|
import { useWiredContext } from '../../../context/WiredContext';
|
||||||
|
import { WiredFurniType } from '../../../WiredView.types';
|
||||||
|
import { WiredConditionBaseView } from '../base/WiredConditionBaseView';
|
||||||
|
|
||||||
|
export const WiredConditionActorHasHandItemView: FC<{}> = props =>
|
||||||
|
{
|
||||||
|
const allowedHanditemIds: number[] = [2, 5, 7, 8, 9, 10, 27];
|
||||||
|
|
||||||
|
const [ handItemId, setHandItemId ] = useState(-1);
|
||||||
|
const { trigger = null, setIntParams = null } = useWiredContext();
|
||||||
|
|
||||||
|
useEffect(() =>
|
||||||
|
{
|
||||||
|
setHandItemId((trigger.intData.length > 0) ? trigger.intData[0] : 0);
|
||||||
|
}, [ trigger ]);
|
||||||
|
|
||||||
|
const save = useCallback(() =>
|
||||||
|
{
|
||||||
|
setIntParams([handItemId]);
|
||||||
|
}, [ handItemId, setIntParams ]);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<WiredConditionBaseView requiresFurni={ WiredFurniType.STUFF_SELECTION_OPTION_NONE } save={ save }>
|
||||||
|
<div className="fw-bold">{ LocalizeText('wiredfurni.params.handitem') }</div>
|
||||||
|
<select className="form-select" value={ handItemId } onChange={ (e) => setHandItemId(Number(e.target.value)) }>
|
||||||
|
{allowedHanditemIds && allowedHanditemIds.map(value =>
|
||||||
|
{
|
||||||
|
return <option value={ value }>{ LocalizeText('handitem' + value) }</option>
|
||||||
|
})}
|
||||||
|
</select>
|
||||||
|
</WiredConditionBaseView>
|
||||||
|
);
|
||||||
|
}
|
@ -0,0 +1,10 @@
|
|||||||
|
import { FC } from 'react';
|
||||||
|
import { WiredFurniType } from '../../../WiredView.types';
|
||||||
|
import { WiredConditionBaseView } from '../base/WiredConditionBaseView';
|
||||||
|
|
||||||
|
export const WiredConditionActorIsGroupMemberView: FC<{}> = props =>
|
||||||
|
{
|
||||||
|
return (
|
||||||
|
<WiredConditionBaseView requiresFurni={ WiredFurniType.STUFF_SELECTION_OPTION_NONE } save={ null }></WiredConditionBaseView>
|
||||||
|
);
|
||||||
|
}
|
@ -0,0 +1,10 @@
|
|||||||
|
import { FC } from 'react';
|
||||||
|
import { WiredFurniType } from '../../../WiredView.types';
|
||||||
|
import { WiredConditionBaseView } from '../base/WiredConditionBaseView';
|
||||||
|
|
||||||
|
export const WiredConditionActorIsOnFurniView: FC<{}> = props =>
|
||||||
|
{
|
||||||
|
return (
|
||||||
|
<WiredConditionBaseView requiresFurni={ WiredFurniType.STUFF_SELECTION_OPTION_BY_ID } save={ null }></WiredConditionBaseView>
|
||||||
|
);
|
||||||
|
}
|
@ -0,0 +1,38 @@
|
|||||||
|
import { FC, useCallback, useEffect, useState } from 'react';
|
||||||
|
import { LocalizeText } from '../../../../../utils/LocalizeText';
|
||||||
|
import { useWiredContext } from '../../../context/WiredContext';
|
||||||
|
import { WiredFurniType } from '../../../WiredView.types';
|
||||||
|
import { WiredConditionBaseView } from '../base/WiredConditionBaseView';
|
||||||
|
|
||||||
|
export const WiredConditionActorIsTeamMemberView: FC<{}> = props =>
|
||||||
|
{
|
||||||
|
const [ selectedTeam, setSelectedTeam ] = useState(-1);
|
||||||
|
const { trigger = null, setIntParams = null } = useWiredContext();
|
||||||
|
|
||||||
|
useEffect(() =>
|
||||||
|
{
|
||||||
|
setSelectedTeam((trigger.intData.length > 0) ? trigger.intData[0] : 0);
|
||||||
|
}, [ trigger ]);
|
||||||
|
|
||||||
|
const save = useCallback(() =>
|
||||||
|
{
|
||||||
|
setIntParams([selectedTeam]);
|
||||||
|
}, [ selectedTeam, setIntParams ]);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<WiredConditionBaseView requiresFurni={ WiredFurniType.STUFF_SELECTION_OPTION_NONE } save={ save }>
|
||||||
|
<div className="fw-bold">{ LocalizeText('wiredfurni.params.team') }</div>
|
||||||
|
{ [1, 2, 3, 4].map(team =>
|
||||||
|
{
|
||||||
|
return (
|
||||||
|
<div key={ team } className="form-check">
|
||||||
|
<input className="form-check-input" type="radio" name="selectedTeam" id={'selectedTeam' + team} checked={ selectedTeam === team } onChange={() => setSelectedTeam(team)} />
|
||||||
|
<label className="form-check-label" htmlFor={'selectedTeam' + team}>
|
||||||
|
{ LocalizeText('wiredfurni.params.team.' + team) }
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}) }
|
||||||
|
</WiredConditionBaseView>
|
||||||
|
);
|
||||||
|
}
|
@ -0,0 +1,30 @@
|
|||||||
|
import { FC, useCallback, useEffect, useState } from 'react';
|
||||||
|
import { LocalizeText } from '../../../../../utils/LocalizeText';
|
||||||
|
import { useWiredContext } from '../../../context/WiredContext';
|
||||||
|
import { WiredFurniType } from '../../../WiredView.types';
|
||||||
|
import { WiredConditionBaseView } from '../base/WiredConditionBaseView';
|
||||||
|
|
||||||
|
export const WiredConditionActorIsWearingBadgeView: FC<{}> = props =>
|
||||||
|
{
|
||||||
|
const [ badge, setBadge ] = useState('');
|
||||||
|
const { trigger = null, setStringParam = null } = useWiredContext();
|
||||||
|
|
||||||
|
useEffect(() =>
|
||||||
|
{
|
||||||
|
setBadge(trigger.stringData);
|
||||||
|
}, [ trigger ]);
|
||||||
|
|
||||||
|
const save = useCallback(() =>
|
||||||
|
{
|
||||||
|
setStringParam(badge);
|
||||||
|
}, [ badge, setStringParam ]);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<WiredConditionBaseView requiresFurni={ WiredFurniType.STUFF_SELECTION_OPTION_NONE } save={ save }>
|
||||||
|
<div className="form-group mb-2">
|
||||||
|
<label className="fw-bold">{ LocalizeText('wiredfurni.params.badgecode') }</label>
|
||||||
|
<input type="text" className="form-control form-control-sm" value={ badge } onChange={ event => setBadge(event.target.value) } />
|
||||||
|
</div>
|
||||||
|
</WiredConditionBaseView>
|
||||||
|
);
|
||||||
|
}
|
@ -0,0 +1,30 @@
|
|||||||
|
import { FC, useCallback, useEffect, useState } from 'react';
|
||||||
|
import { LocalizeText } from '../../../../../utils/LocalizeText';
|
||||||
|
import { useWiredContext } from '../../../context/WiredContext';
|
||||||
|
import { WiredFurniType } from '../../../WiredView.types';
|
||||||
|
import { WiredConditionBaseView } from '../base/WiredConditionBaseView';
|
||||||
|
|
||||||
|
export const WiredConditionActorIsWearingEffectView: FC<{}> = props =>
|
||||||
|
{
|
||||||
|
const [ effect, setEffect ] = useState(-1);
|
||||||
|
const { trigger = null, setIntParams = null } = useWiredContext();
|
||||||
|
|
||||||
|
useEffect(() =>
|
||||||
|
{
|
||||||
|
setEffect((trigger.intData.length > 0) ? trigger.intData[0] : 0);
|
||||||
|
}, [ trigger ]);
|
||||||
|
|
||||||
|
const save = useCallback(() =>
|
||||||
|
{
|
||||||
|
setIntParams([effect]);
|
||||||
|
}, [ effect, setIntParams ]);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<WiredConditionBaseView requiresFurni={ WiredFurniType.STUFF_SELECTION_OPTION_NONE } save={ save }>
|
||||||
|
<div className="form-group mb-2">
|
||||||
|
<label className="fw-bold">{ LocalizeText('wiredfurni.params.effectid') }</label>
|
||||||
|
<input type="number" className="form-control form-control-sm" value={ effect } onChange={ event => setEffect(Number(event.target.value)) } />
|
||||||
|
</div>
|
||||||
|
</WiredConditionBaseView>
|
||||||
|
);
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
import { FC, useCallback } from 'react';
|
||||||
|
import { WiredFurniType } from '../../../WiredView.types';
|
||||||
|
import { WiredBaseView } from '../../base/WiredBaseView';
|
||||||
|
import { WiredConditionBaseViewProps } from './WiredConditionBaseView.types';
|
||||||
|
|
||||||
|
export const WiredConditionBaseView: FC<WiredConditionBaseViewProps> = props =>
|
||||||
|
{
|
||||||
|
const { requiresFurni = WiredFurniType.STUFF_SELECTION_OPTION_NONE, save = null, children = null } = props;
|
||||||
|
|
||||||
|
const onSave = useCallback(() =>
|
||||||
|
{
|
||||||
|
if(save) save();
|
||||||
|
}, [ save ]);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<WiredBaseView wiredType="condition" requiresFurni={ requiresFurni } save={ onSave }>
|
||||||
|
{ children }
|
||||||
|
</WiredBaseView>
|
||||||
|
);
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
export interface WiredConditionBaseViewProps
|
||||||
|
{
|
||||||
|
requiresFurni: number;
|
||||||
|
save: () => void;
|
||||||
|
}
|
@ -0,0 +1,10 @@
|
|||||||
|
import { FC } from 'react';
|
||||||
|
import { WiredFurniType } from '../../../WiredView.types';
|
||||||
|
import { WiredConditionBaseView } from '../base/WiredConditionBaseView';
|
||||||
|
|
||||||
|
export const WiredConditionFurniHasAvatarOnView: FC<{}> = props =>
|
||||||
|
{
|
||||||
|
return (
|
||||||
|
<WiredConditionBaseView requiresFurni={ WiredFurniType.STUFF_SELECTION_OPTION_BY_ID } save={ null }></WiredConditionBaseView>
|
||||||
|
);
|
||||||
|
}
|
@ -0,0 +1,38 @@
|
|||||||
|
import { FC, useCallback, useEffect, useState } from 'react';
|
||||||
|
import { LocalizeText } from '../../../../../utils/LocalizeText';
|
||||||
|
import { useWiredContext } from '../../../context/WiredContext';
|
||||||
|
import { WiredFurniType } from '../../../WiredView.types';
|
||||||
|
import { WiredConditionBaseView } from '../base/WiredConditionBaseView';
|
||||||
|
|
||||||
|
export const WiredConditionFurniHasFurniOnView: FC<{}> = props =>
|
||||||
|
{
|
||||||
|
const [ requireAll, setRequireAll ] = useState(-1);
|
||||||
|
const { trigger = null, setIntParams = null } = useWiredContext();
|
||||||
|
|
||||||
|
useEffect(() =>
|
||||||
|
{
|
||||||
|
setRequireAll((trigger.intData.length > 0) ? trigger.intData[0] : 0);
|
||||||
|
}, [ trigger ]);
|
||||||
|
|
||||||
|
const save = useCallback(() =>
|
||||||
|
{
|
||||||
|
setIntParams([requireAll]);
|
||||||
|
}, [ requireAll, setIntParams ]);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<WiredConditionBaseView requiresFurni={ WiredFurniType.STUFF_SELECTION_OPTION_BY_ID } save={ save }>
|
||||||
|
<div className="fw-bold">{ LocalizeText('wiredfurni.params.requireall') }</div>
|
||||||
|
{ [0, 1].map(option =>
|
||||||
|
{
|
||||||
|
return (
|
||||||
|
<div key={ option } className="form-check">
|
||||||
|
<input className="form-check-input" type="radio" name="requireAll" id={'requireAll' + option} checked={ requireAll === option } onChange={() => setRequireAll(option)} />
|
||||||
|
<label className="form-check-label" htmlFor={'requireAll' + option}>
|
||||||
|
{ LocalizeText('wiredfurni.params.requireall.' + option) }
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}) }
|
||||||
|
</WiredConditionBaseView>
|
||||||
|
);
|
||||||
|
}
|
@ -0,0 +1,38 @@
|
|||||||
|
import { FC, useCallback, useEffect, useState } from 'react';
|
||||||
|
import { LocalizeText } from '../../../../../utils/LocalizeText';
|
||||||
|
import { useWiredContext } from '../../../context/WiredContext';
|
||||||
|
import { WiredFurniType } from '../../../WiredView.types';
|
||||||
|
import { WiredConditionBaseView } from '../base/WiredConditionBaseView';
|
||||||
|
|
||||||
|
export const WiredConditionFurniHasNotFurniOnView: FC<{}> = props =>
|
||||||
|
{
|
||||||
|
const [ requireAll, setRequireAll ] = useState(-1);
|
||||||
|
const { trigger = null, setIntParams = null } = useWiredContext();
|
||||||
|
|
||||||
|
useEffect(() =>
|
||||||
|
{
|
||||||
|
setRequireAll((trigger.intData.length > 0) ? trigger.intData[0] : 0);
|
||||||
|
}, [ trigger ]);
|
||||||
|
|
||||||
|
const save = useCallback(() =>
|
||||||
|
{
|
||||||
|
setIntParams([requireAll]);
|
||||||
|
}, [ requireAll, setIntParams ]);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<WiredConditionBaseView requiresFurni={ WiredFurniType.STUFF_SELECTION_OPTION_BY_ID } save={ save }>
|
||||||
|
<div className="fw-bold">{ LocalizeText('wiredfurni.params.not_requireall') }</div>
|
||||||
|
{ [0, 1].map(option =>
|
||||||
|
{
|
||||||
|
return (
|
||||||
|
<div key={ option } className="form-check">
|
||||||
|
<input className="form-check-input" type="radio" name="requireAll" id={'requireAll' + option} checked={ requireAll === option } onChange={() => setRequireAll(option)} />
|
||||||
|
<label className="form-check-label" htmlFor={'requireAll' + option}>
|
||||||
|
{ LocalizeText('wiredfurni.params.not_requireall.' + option) }
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}) }
|
||||||
|
</WiredConditionBaseView>
|
||||||
|
);
|
||||||
|
}
|
@ -0,0 +1,10 @@
|
|||||||
|
import { FC } from 'react';
|
||||||
|
import { WiredFurniType } from '../../../WiredView.types';
|
||||||
|
import { WiredConditionBaseView } from '../base/WiredConditionBaseView';
|
||||||
|
|
||||||
|
export const WiredConditionFurniIsOfTypeView: FC<{}> = props =>
|
||||||
|
{
|
||||||
|
return (
|
||||||
|
<WiredConditionBaseView requiresFurni={ WiredFurniType.STUFF_SELECTION_OPTION_BY_ID_OR_BY_TYPE } save={ null }></WiredConditionBaseView>
|
||||||
|
);
|
||||||
|
}
|
@ -0,0 +1,49 @@
|
|||||||
|
import { FC, useCallback, useEffect, useState } from 'react';
|
||||||
|
import { LocalizeText } from '../../../../../utils/LocalizeText';
|
||||||
|
import { useWiredContext } from '../../../context/WiredContext';
|
||||||
|
import { WiredFurniType } from '../../../WiredView.types';
|
||||||
|
import { WiredConditionBaseView } from '../base/WiredConditionBaseView';
|
||||||
|
|
||||||
|
export const WiredConditionFurniMatchesSnapshotView: FC<{}> = props =>
|
||||||
|
{
|
||||||
|
const [ stateFlag, setStateFlag ] = useState(-1);
|
||||||
|
const [ directionFlag, setDirectionFlag ] = useState(-1);
|
||||||
|
const [ positionFlag, setPositionFlag ] = useState(-1);
|
||||||
|
const { trigger = null, setIntParams = null } = useWiredContext();
|
||||||
|
|
||||||
|
useEffect(() =>
|
||||||
|
{
|
||||||
|
setStateFlag(trigger.getBoolean(0) ? 1 : 0);
|
||||||
|
setDirectionFlag(trigger.getBoolean(1) ? 1 : 0);
|
||||||
|
setPositionFlag(trigger.getBoolean(2) ? 1 : 0);
|
||||||
|
}, [ trigger ]);
|
||||||
|
|
||||||
|
const save = useCallback(() =>
|
||||||
|
{
|
||||||
|
setIntParams([stateFlag, directionFlag, positionFlag]);
|
||||||
|
}, [ directionFlag, positionFlag, setIntParams, stateFlag ]);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<WiredConditionBaseView requiresFurni={ WiredFurniType.STUFF_SELECTION_OPTION_BY_ID } save={ save }>
|
||||||
|
<div className="fw-bold">{ LocalizeText('wiredfurni.params.conditions') }</div>
|
||||||
|
<div className="form-check">
|
||||||
|
<input className="form-check-input" type="checkbox" id="stateFlag" onChange={(e) => setStateFlag(e.target.checked ? 1 : 0)} />
|
||||||
|
<label className="form-check-label" htmlFor="stateFlag">
|
||||||
|
{ LocalizeText('wiredfurni.params.condition.state') }
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div className="form-check">
|
||||||
|
<input className="form-check-input" type="checkbox" id="directionFlag" onChange={(e) => setDirectionFlag(e.target.checked ? 1 : 0)} />
|
||||||
|
<label className="form-check-label" htmlFor="directionFlag">
|
||||||
|
{ LocalizeText('wiredfurni.params.condition.direction') }
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div className="form-check">
|
||||||
|
<input className="form-check-input" type="checkbox" id="positionFlag" onChange={(e) => setPositionFlag(e.target.checked ? 1 : 0)} />
|
||||||
|
<label className="form-check-label" htmlFor="positionFlag">
|
||||||
|
{ LocalizeText('wiredfurni.params.condition.position') }
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</WiredConditionBaseView>
|
||||||
|
);
|
||||||
|
}
|
@ -0,0 +1,36 @@
|
|||||||
|
import Slider from 'rc-slider/lib/Slider';
|
||||||
|
import { FC, useCallback, useEffect, useState } from 'react';
|
||||||
|
import { LocalizeText } from '../../../../../utils/LocalizeText';
|
||||||
|
import { useWiredContext } from '../../../context/WiredContext';
|
||||||
|
import { WiredFurniType } from '../../../WiredView.types';
|
||||||
|
import { WiredConditionBaseView } from '../base/WiredConditionBaseView';
|
||||||
|
|
||||||
|
export const WiredConditionTimeElapsedLessView: FC<{}> = props =>
|
||||||
|
{
|
||||||
|
const [ time, setTime ] = useState(-1);
|
||||||
|
const { trigger = null, setIntParams = null } = useWiredContext();
|
||||||
|
|
||||||
|
useEffect(() =>
|
||||||
|
{
|
||||||
|
setTime((trigger.intData.length > 0) ? trigger.intData[0] : 0);
|
||||||
|
}, [ trigger ]);
|
||||||
|
|
||||||
|
const save = useCallback(() =>
|
||||||
|
{
|
||||||
|
setIntParams([time]);
|
||||||
|
}, [ time, setIntParams ]);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<WiredConditionBaseView requiresFurni={ WiredFurniType.STUFF_SELECTION_OPTION_NONE } save={ save }>
|
||||||
|
<div className="fw-bold">{ LocalizeText('wiredfurni.params.allowbefore', ['seconds'], [time.toString()]) }</div>
|
||||||
|
<Slider
|
||||||
|
defaultValue={ time }
|
||||||
|
dots={ true }
|
||||||
|
min={ 0.5 }
|
||||||
|
max={ 600 }
|
||||||
|
step={ 0.5 }
|
||||||
|
onChange={ event => setTime(event) }
|
||||||
|
/>
|
||||||
|
</WiredConditionBaseView>
|
||||||
|
);
|
||||||
|
}
|
@ -0,0 +1,36 @@
|
|||||||
|
import Slider from 'rc-slider/lib/Slider';
|
||||||
|
import { FC, useCallback, useEffect, useState } from 'react';
|
||||||
|
import { LocalizeText } from '../../../../../utils/LocalizeText';
|
||||||
|
import { useWiredContext } from '../../../context/WiredContext';
|
||||||
|
import { WiredFurniType } from '../../../WiredView.types';
|
||||||
|
import { WiredConditionBaseView } from '../base/WiredConditionBaseView';
|
||||||
|
|
||||||
|
export const WiredConditionTimeElapsedMoreView: FC<{}> = props =>
|
||||||
|
{
|
||||||
|
const [ time, setTime ] = useState(-1);
|
||||||
|
const { trigger = null, setIntParams = null } = useWiredContext();
|
||||||
|
|
||||||
|
useEffect(() =>
|
||||||
|
{
|
||||||
|
setTime((trigger.intData.length > 0) ? trigger.intData[0] : 0);
|
||||||
|
}, [ trigger ]);
|
||||||
|
|
||||||
|
const save = useCallback(() =>
|
||||||
|
{
|
||||||
|
setIntParams([time]);
|
||||||
|
}, [ time, setIntParams ]);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<WiredConditionBaseView requiresFurni={ WiredFurniType.STUFF_SELECTION_OPTION_NONE } save={ save }>
|
||||||
|
<div className="fw-bold">{ LocalizeText('wiredfurni.params.allowafter', ['seconds'], [time.toString()]) }</div>
|
||||||
|
<Slider
|
||||||
|
defaultValue={ time }
|
||||||
|
dots={ true }
|
||||||
|
min={ 0.5 }
|
||||||
|
max={ 600 }
|
||||||
|
step={ 0.5 }
|
||||||
|
onChange={ event => setTime(event) }
|
||||||
|
/>
|
||||||
|
</WiredConditionBaseView>
|
||||||
|
);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user