Update wired conditions

This commit is contained in:
Bill 2021-06-29 04:24:12 -04:00
parent 6fa35f9bcf
commit b7e822678f
15 changed files with 133 additions and 125 deletions

View File

@ -56,4 +56,6 @@ export function GetWiredConditionLayout(code: number): JSX.Element
case WiredConditionlayout.NOT_USER_COUNT_IN:
return <WiredConditionUserCountInRoomView />;
}
return null;
}

View File

@ -4,10 +4,10 @@ import { useWiredContext } from '../../../context/WiredContext';
import { WiredFurniType } from '../../../WiredView.types';
import { WiredConditionBaseView } from '../base/WiredConditionBaseView';
const allowedHanditemIds: number[] = [ 2, 5, 7, 8, 9, 10, 27 ];
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();
@ -18,18 +18,20 @@ export const WiredConditionActorHasHandItemView: FC<{}> = props =>
const save = useCallback(() =>
{
setIntParams([handItemId]);
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>
<div className="form-group">
<label className="fw-bold">{ LocalizeText('wiredfurni.params.handitem') }</label>
<select className="form-select form-select-sm" value={ handItemId } onChange={ event => setHandItemId(parseInt(event.target.value)) }>
{ allowedHanditemIds.map((value, index) =>
{
return <option key={ index } value={ value }>{ LocalizeText(`handitem${ value }`) }</option>
}) }
</select>
</div>
</WiredConditionBaseView>
);
}

View File

@ -4,7 +4,5 @@ import { WiredConditionBaseView } from '../base/WiredConditionBaseView';
export const WiredConditionActorIsGroupMemberView: FC<{}> = props =>
{
return (
<WiredConditionBaseView requiresFurni={ WiredFurniType.STUFF_SELECTION_OPTION_NONE } save={ null }></WiredConditionBaseView>
);
return <WiredConditionBaseView requiresFurni={ WiredFurniType.STUFF_SELECTION_OPTION_NONE } save={ null } />;
}

View File

@ -4,7 +4,5 @@ import { WiredConditionBaseView } from '../base/WiredConditionBaseView';
export const WiredConditionActorIsOnFurniView: FC<{}> = props =>
{
return (
<WiredConditionBaseView requiresFurni={ WiredFurniType.STUFF_SELECTION_OPTION_BY_ID } save={ null }></WiredConditionBaseView>
);
return <WiredConditionBaseView requiresFurni={ WiredFurniType.STUFF_SELECTION_OPTION_BY_ID } save={ null } />;
}

View File

@ -4,6 +4,8 @@ import { useWiredContext } from '../../../context/WiredContext';
import { WiredFurniType } from '../../../WiredView.types';
import { WiredConditionBaseView } from '../base/WiredConditionBaseView';
const teamIds: number[] = [ 1, 2, 3, 4 ];
export const WiredConditionActorIsTeamMemberView: FC<{}> = props =>
{
const [ selectedTeam, setSelectedTeam ] = useState(-1);
@ -16,23 +18,25 @@ export const WiredConditionActorIsTeamMemberView: FC<{}> = props =>
const save = useCallback(() =>
{
setIntParams([selectedTeam]);
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>
)
}) }
<div className="form-group">
<label className="fw-bold">{ LocalizeText('wiredfurni.params.team') }</label>
{ teamIds.map((value, index) =>
{
return (
<div key={ index } className="form-check">
<input className="form-check-input" type="radio" name="selectedTeam" id={ `selectedTeam${ value }` } checked={ (selectedTeam === value) } onChange={ event => setSelectedTeam(value) } />
<label className="form-check-label" htmlFor={ `selectedTeam${ value }` }>
{ LocalizeText(`wiredfurni.params.team.${ value }`) }
</label>
</div>
)
}) }
</div>
</WiredConditionBaseView>
);
}

View File

@ -21,7 +21,7 @@ export const WiredConditionActorIsWearingBadgeView: FC<{}> = props =>
return (
<WiredConditionBaseView requiresFurni={ WiredFurniType.STUFF_SELECTION_OPTION_NONE } save={ save }>
<div className="form-group mb-2">
<div className="form-group">
<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>

View File

@ -16,14 +16,14 @@ export const WiredConditionActorIsWearingEffectView: FC<{}> = props =>
const save = useCallback(() =>
{
setIntParams([effect]);
setIntParams([ effect ]);
}, [ effect, setIntParams ]);
return (
<WiredConditionBaseView requiresFurni={ WiredFurniType.STUFF_SELECTION_OPTION_NONE } save={ save }>
<div className="form-group mb-2">
<div className="form-group">
<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)) } />
<input type="number" className="form-control form-control-sm" value={ effect } onChange={ event => setEffect(parseInt(event.target.value)) } />
</div>
</WiredConditionBaseView>
);

View File

@ -4,7 +4,5 @@ import { WiredConditionBaseView } from '../base/WiredConditionBaseView';
export const WiredConditionFurniHasAvatarOnView: FC<{}> = props =>
{
return (
<WiredConditionBaseView requiresFurni={ WiredFurniType.STUFF_SELECTION_OPTION_BY_ID } save={ null }></WiredConditionBaseView>
);
return <WiredConditionBaseView requiresFurni={ WiredFurniType.STUFF_SELECTION_OPTION_BY_ID } save={ null } />;
}

View File

@ -16,23 +16,25 @@ export const WiredConditionFurniHasFurniOnView: FC<{}> = props =>
const save = useCallback(() =>
{
setIntParams([requireAll]);
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>
)
}) }
<div className="form-group">
<label className="fw-bold">{ LocalizeText('wiredfurni.params.requireall') }</label>
{ [0, 1].map(value =>
{
return (
<div key={ value } className="form-check">
<input className="form-check-input" type="radio" name="requireAll" id={ `requireAll${ value }` } checked={ (requireAll === value) } onChange={ event => setRequireAll(value) } />
<label className="form-check-label" htmlFor={ `requireAll${ value }` }>
{ LocalizeText('wiredfurni.params.requireall.' + value) }
</label>
</div>
)
}) }
</div>
</WiredConditionBaseView>
);
}

View File

@ -16,23 +16,25 @@ export const WiredConditionFurniHasNotFurniOnView: FC<{}> = props =>
const save = useCallback(() =>
{
setIntParams([requireAll]);
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>
)
}) }
<div className="form-group">
<label className="fw-bold">{ LocalizeText('wiredfurni.params.not_requireall') }</label>
{ [0, 1].map(value =>
{
return (
<div key={ value } className="form-check">
<input className="form-check-input" type="radio" name="requireAll" id={ `requireAll${ value }` } checked={ (requireAll === value) } onChange={ event => setRequireAll(value) } />
<label className="form-check-label" htmlFor={ `requireAll${ value }` }>
{ LocalizeText(`wiredfurni.params.not_requireall.${ value }`) }
</label>
</div>
)
}) }
</div>
</WiredConditionBaseView>
);
}

View File

@ -4,7 +4,5 @@ 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>
);
return <WiredConditionBaseView requiresFurni={ WiredFurniType.STUFF_SELECTION_OPTION_BY_ID_OR_BY_TYPE } save={ null } />;
}

View File

@ -20,29 +20,31 @@ export const WiredConditionFurniMatchesSnapshotView: FC<{}> = props =>
const save = useCallback(() =>
{
setIntParams([stateFlag, directionFlag, positionFlag]);
}, [ directionFlag, positionFlag, setIntParams, stateFlag ]);
setIntParams([ stateFlag, directionFlag, positionFlag ]);
}, [ directionFlag, positionFlag, stateFlag, setIntParams ]);
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 className="form-group">
<label className="fw-bold">{ LocalizeText('wiredfurni.params.conditions') }</label>
<div className="form-check">
<input className="form-check-input" type="checkbox" id="stateFlag" onChange={ event => setStateFlag(event.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={ event => setDirectionFlag(event.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={ event => setPositionFlag(event.target.checked ? 1 : 0) } />
<label className="form-check-label" htmlFor="positionFlag">
{ LocalizeText('wiredfurni.params.condition.position') }
</label>
</div>
</div>
</WiredConditionBaseView>
);

View File

@ -1,6 +1,7 @@
import Slider from 'rc-slider/lib/Slider';
import { FC, useCallback, useEffect, useState } from 'react';
import { LocalizeText } from '../../../../../utils/LocalizeText';
import { GetWiredTimeLocale } from '../../../common/GetWiredTimeLocale';
import { useWiredContext } from '../../../context/WiredContext';
import { WiredFurniType } from '../../../WiredView.types';
import { WiredConditionBaseView } from '../base/WiredConditionBaseView';
@ -17,20 +18,19 @@ export const WiredConditionTimeElapsedLessView: FC<{}> = props =>
const save = useCallback(() =>
{
setIntParams([time]);
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) }
/>
<div className="form-group">
<label className="fw-bold">{ LocalizeText('wiredfurni.params.allowbefore', [ 'seconds' ], [ GetWiredTimeLocale(time) ]) }</label>
<Slider
value={ time }
min={ 1 }
max={ 1200 }
onChange={ event => setTime(event) } />
</div>
</WiredConditionBaseView>
);
}

View File

@ -1,6 +1,7 @@
import Slider from 'rc-slider/lib/Slider';
import { FC, useCallback, useEffect, useState } from 'react';
import { LocalizeText } from '../../../../../utils/LocalizeText';
import { GetWiredTimeLocale } from '../../../common/GetWiredTimeLocale';
import { useWiredContext } from '../../../context/WiredContext';
import { WiredFurniType } from '../../../WiredView.types';
import { WiredConditionBaseView } from '../base/WiredConditionBaseView';
@ -17,20 +18,19 @@ export const WiredConditionTimeElapsedMoreView: FC<{}> = props =>
const save = useCallback(() =>
{
setIntParams([time]);
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) }
/>
<div className="form-group">
<label className="fw-bold">{ LocalizeText('wiredfurni.params.allowafter', [ 'seconds' ], [ GetWiredTimeLocale(time) ]) }</label>
<Slider
value={ time }
min={ 1 }
max={ 1200 }
onChange={ event => setTime(event) } />
</div>
</WiredConditionBaseView>
);
}

View File

@ -18,34 +18,36 @@ export const WiredConditionUserCountInRoomView: FC<{}> = props =>
setMin(trigger.intData[0]);
setMax(trigger.intData[1]);
}
else
{
setMin(1);
setMax(1);
}
}, [ trigger ]);
const save = useCallback(() =>
{
setIntParams([min, max]);
setIntParams([ min, max ]);
}, [ min, max, setIntParams ]);
return (
<WiredConditionBaseView requiresFurni={ WiredFurniType.STUFF_SELECTION_OPTION_NONE } save={ save }>
<div className="fw-bold">{ LocalizeText('wiredfurni.params.usercountmin', ['value'], [min.toString()]) }</div>
<Slider
defaultValue={ min }
dots={ true }
min={ 1 }
max={ 50 }
step={ 1 }
onChange={ event => setMin(event) }
/>
<hr className="my-1 mb-2 bg-dark" />
<div className="fw-bold">{ LocalizeText('wiredfurni.params.usercountmax', ['value'], [max.toString()]) }</div>
<Slider
defaultValue={ max }
dots={ true }
min={ 1 }
max={ 50 }
step={ 1 }
onChange={ event => setMax(event) }
/>
<div className="form-group mb-2">
<label className="fw-bold">{ LocalizeText('wiredfurni.params.usercountmin', [ 'value' ], [ min.toString() ]) }</label>
<Slider
value={ min }
min={ 1 }
max={ 50 }
onChange={ event => setMin(event) } />
</div>
<div className="form-group">
<label className="fw-bold">{ LocalizeText('wiredfurni.params.usercountmax', [ 'value' ], [ max.toString() ]) }</label>
<Slider
value={ max }
min={ 1 }
max={ 50 }
onChange={ event => setMax(event) } />
</div>
</WiredConditionBaseView>
);
}