From 71c807db8f66273b6428944a47b20a195db03117 Mon Sep 17 00:00:00 2001 From: MyNameIsBatman Date: Sun, 20 Jun 2021 12:11:02 -0300 Subject: [PATCH] InfoStand updates --- .../views/furni/InfoStandWidgetFurniView.tsx | 89 +++++++++++++++---- 1 file changed, 72 insertions(+), 17 deletions(-) diff --git a/src/views/room/widgets/infostand/views/furni/InfoStandWidgetFurniView.tsx b/src/views/room/widgets/infostand/views/furni/InfoStandWidgetFurniView.tsx index 1e1f9f0e..7b517ecc 100644 --- a/src/views/room/widgets/infostand/views/furni/InfoStandWidgetFurniView.tsx +++ b/src/views/room/widgets/infostand/views/furni/InfoStandWidgetFurniView.tsx @@ -22,19 +22,32 @@ export const InfoStandWidgetFurniView: FC = props const [ isCrackable, setIsCrackable ] = useState(false); const [ crackableHits, setCrackableHits ] = useState(0); const [ crackableTarget, setCrackableTarget ] = useState(0); + const [ godMode, setGodMode ] = useState(false); useEffect(() => { + setFurniSettingsKeys([]); + setFurniSettingsValues([]); + const isValidController = (furniData.roomControllerLevel >= RoomControllerLevel.GUEST); - let godMode = false; - if(isValidController || furniData.isOwner || furniData.isRoomOwner || furniData.isAnyRoomController) { setCanMove(true); setCanRotate(!furniData.isWallItem); - if(furniData.roomControllerLevel >= RoomControllerLevel.MODERATOR) godMode = true; + if(furniData.roomControllerLevel >= RoomControllerLevel.MODERATOR) + { + setGodMode(true); + } + else + { + setGodMode(false); + } + } + else + { + setGodMode(false); } if((((furniData.usagePolicy === RoomWidgetFurniInfoUsagePolicyEnum.EVERYBODY) || ((furniData.usagePolicy === RoomWidgetFurniInfoUsagePolicyEnum.CONTROLLER) && isValidController)) || ((furniData.extraParam === RoomWidgetEnumItemExtradataParameter.JUKEBOX) && isValidController)) || ((furniData.extraParam === RoomWidgetEnumItemExtradataParameter.USABLE_PRODUCT) && isValidController)) setCanUse(true); @@ -92,13 +105,43 @@ export const InfoStandWidgetFurniView: FC = props } else if(furniData.isStickie) setPickupMode(PICKUP_MODE_NONE); - }, [ furniData ]); + }, [ furniData, godMode ]); const openFurniGroupInfo = useCallback(() => { }, []); + const onFurniSettingChange = useCallback((index: number, value: string) => + { + const clone = Array.from(furniSettingsValues); + + clone[index] = value; + + setFurniSettingsValues(clone); + }, [ furniSettingsValues ]); + + const getFurniSettingsAsString = useCallback(() => + { + if(furniSettingsKeys.length === 0 || furniSettingsValues.length === 0) return ''; + + let data = ''; + + let i = 0; + + while(i < furniSettingsKeys.length) + { + const key = furniSettingsKeys[i]; + const value = furniSettingsValues[i]; + + data = (data + (key + '=' + value + '\t')); + + i++; + } + + return data; + }, [ furniSettingsKeys, furniSettingsValues ]); + const processButtonAction = useCallback((action: string) => { if(!action || (action === '')) return; @@ -121,10 +164,10 @@ export const InfoStandWidgetFurniView: FC = props case 'use': messageType = FurniAction.USE; break; - // case 'save_branding_configuration': - // messageType = RoomWidgetFurniActionMessage.RWFAM_SAVE_STUFF_DATA; - // objectData = this.getSettingsAsString(); - // break; + case 'save_branding_configuration': + messageType = FurniAction.SAVE_STUFF_DATA; + objectData = getFurniSettingsAsString(); + break; } if(!messageType) return; @@ -151,9 +194,9 @@ export const InfoStandWidgetFurniView: FC = props
-

{furniData.description}

+
{furniData.description}

-

{ LocalizeText('furni.owner', [ 'name' ], [ furniData.ownerName ]) }

+
{ LocalizeText('furni.owner', [ 'name' ], [ furniData.ownerName ]) }
{isCrackable &&

{LocalizeText('infostand.crackable_furni.hits_remaining', ['hits', 'target'], [crackableHits.toString(), crackableTarget.toString()])}

@@ -163,12 +206,20 @@ export const InfoStandWidgetFurniView: FC = props
}
- {/*
- -

{{ furniSettingsKeys[i] }}

- -
-
*/} + { godMode && <> +
+
ID: { furniData.id }
+ {furniSettingsKeys.length > 0 && <> +
+ { furniSettingsKeys.map((key, index) => + { + return
+
{ key }
+ onFurniSettingChange(index, event.target.value) }/> +
; + }) } + } + }
@@ -192,7 +243,11 @@ export const InfoStandWidgetFurniView: FC = props {LocalizeText((pickupMode === PICKUP_MODE_EJECT) ? 'infostand.button.eject' : 'infostand.button.pickup')} } - {/* */} + { ((furniSettingsKeys.length > 0 && furniSettingsValues.length > 0) && (furniSettingsKeys.length === furniSettingsValues.length)) && + }
);