diff --git a/src/api/nitro/room/widgets/handlers/RoomWidgetAvatarInfoHandler.ts b/src/api/nitro/room/widgets/handlers/RoomWidgetAvatarInfoHandler.ts index 395c8298..43b8ade2 100644 --- a/src/api/nitro/room/widgets/handlers/RoomWidgetAvatarInfoHandler.ts +++ b/src/api/nitro/room/widgets/handlers/RoomWidgetAvatarInfoHandler.ts @@ -1,5 +1,5 @@ -import { NitroEvent, RoomEngineUseProductEvent, RoomObjectCategory, RoomObjectType, RoomObjectVariable, RoomSessionDanceEvent, RoomSessionUserDataUpdateEvent, RoomWidgetEnum } from '@nitrots/nitro-renderer'; -import { GetRoomEngine, GetRoomSession, GetSessionDataManager, IsOwnerOfFurniture } from '../../../..'; +import { NitroEvent, RoomEngineUseProductEvent, RoomObjectCategory, RoomObjectType, RoomObjectVariable, RoomSessionDanceEvent, RoomSessionPetStatusUpdateEvent, RoomSessionUserDataUpdateEvent, RoomWidgetEnum } from '@nitrots/nitro-renderer'; +import { GetRoomEngine, GetSessionDataManager, IsOwnerOfFurniture } from '../../../..'; import { FurniCategory } from '../../../../../components/inventory/common/FurniCategory'; import { RoomWidgetAvatarInfoEvent, RoomWidgetUpdateDanceStatusEvent, RoomWidgetUpdateEvent, RoomWidgetUpdateUserDataEvent, RoomWidgetUseProductBubbleEvent, UseProductItem } from '../events'; import { RoomWidgetAvatarExpressionMessage, RoomWidgetChangePostureMessage, RoomWidgetDanceMessage, RoomWidgetMessage, RoomWidgetRoomObjectMessage, RoomWidgetUseProductMessage, RoomWidgetUserActionMessage } from '../messages'; @@ -19,7 +19,7 @@ export class RoomWidgetAvatarInfoHandler extends RoomWidgetHandler let isDancing = false; - const userData = GetRoomSession().userDataManager.getUserData(GetSessionDataManager().userId); + const userData = this.container.roomSession.userDataManager.getUserData(GetSessionDataManager().userId); if(userData && (userData.roomIndex === danceEvent.roomIndex)) isDancing = (danceEvent.danceId !== 0); @@ -30,6 +30,9 @@ export class RoomWidgetAvatarInfoHandler extends RoomWidgetHandler case RoomEngineUseProductEvent.USE_PRODUCT_FROM_ROOM: this.processUsableRoomObject((event as RoomEngineUseProductEvent).objectId); return; + case RoomSessionPetStatusUpdateEvent.PET_STATUS_UPDATE: + this.processRoomSessionPetStatusUpdateEvent((event as RoomSessionPetStatusUpdateEvent)); + return; } } @@ -44,28 +47,39 @@ export class RoomWidgetAvatarInfoHandler extends RoomWidgetHandler case RoomWidgetRoomObjectMessage.GET_OWN_CHARACTER_INFO: this.processOwnCharacterInfo(); break; + case RoomWidgetUserActionMessage.START_NAME_CHANGE: + // habbo help - start name change + break; + case RoomWidgetUserActionMessage.REQUEST_PET_UPDATE: + break; + case RoomWidgetUseProductMessage.PET_PRODUCT: { + const productMessage = (message as RoomWidgetUseProductMessage); + + this.container.roomSession.usePetProduct(productMessage.objectId, productMessage.petId); + break; + } + case RoomWidgetUserActionMessage.HARVEST_PET: + this.container.roomSession.harvestPet(userId); + break; + case RoomWidgetUserActionMessage.COMPOST_PLANT: + this.container.roomSession.compostPlant(userId); + break; case RoomWidgetDanceMessage.DANCE: { const danceMessage = (message as RoomWidgetDanceMessage); - GetRoomSession().sendDanceMessage(danceMessage.style); + this.container.roomSession.sendDanceMessage(danceMessage.style); break; } case RoomWidgetAvatarExpressionMessage.AVATAR_EXPRESSION: { const expressionMessage = (message as RoomWidgetAvatarExpressionMessage); - GetRoomSession().sendExpressionMessage(expressionMessage.animation.ordinal) + this.container.roomSession.sendExpressionMessage(expressionMessage.animation.ordinal) break; } case RoomWidgetChangePostureMessage.CHANGE_POSTURE: { const postureMessage = (message as RoomWidgetChangePostureMessage); - GetRoomSession().sendPostureMessage(postureMessage.posture); - break; - } - case RoomWidgetUseProductMessage.PET_PRODUCT: { - const productMessage = (message as RoomWidgetUseProductMessage); - - GetRoomSession().usePetProduct(productMessage.objectId, productMessage.petId); + this.container.roomSession.sendPostureMessage(postureMessage.posture); break; } } @@ -78,9 +92,11 @@ export class RoomWidgetAvatarInfoHandler extends RoomWidgetHandler const userId = GetSessionDataManager().userId; const userName = GetSessionDataManager().userName; const allowNameChange = GetSessionDataManager().canChangeName; - const userData = GetRoomSession().userDataManager.getUserData(userId); + const userData = this.container.roomSession.userDataManager.getUserData(userId); - if(userData) this.container.eventDispatcher.dispatchEvent(new RoomWidgetAvatarInfoEvent(userId, userName, userData.type, userData.roomIndex, allowNameChange)); + if(!userData) return; + + this.container.eventDispatcher.dispatchEvent(new RoomWidgetAvatarInfoEvent(userId, userName, userData.type, userData.roomIndex, allowNameChange)); } private processUsableRoomObject(objectId: number): void @@ -151,6 +167,11 @@ export class RoomWidgetAvatarInfoHandler extends RoomWidgetHandler if(useProductBubbles.length) this.container.eventDispatcher.dispatchEvent(new RoomWidgetUseProductBubbleEvent(RoomWidgetUseProductBubbleEvent.USE_PRODUCT_BUBBLES, useProductBubbles)); } + private processRoomSessionPetStatusUpdateEvent(event: RoomSessionPetStatusUpdateEvent): void + { + + } + public get type(): string { return RoomWidgetEnum.AVATAR_INFO; @@ -162,18 +183,29 @@ export class RoomWidgetAvatarInfoHandler extends RoomWidgetHandler RoomSessionUserDataUpdateEvent.USER_DATA_UPDATED, RoomSessionDanceEvent.RSDE_DANCE, RoomEngineUseProductEvent.USE_PRODUCT_FROM_INVENTORY, - RoomEngineUseProductEvent.USE_PRODUCT_FROM_ROOM + RoomEngineUseProductEvent.USE_PRODUCT_FROM_ROOM, + RoomSessionPetStatusUpdateEvent.PET_STATUS_UPDATE ]; } + // UserNameUpdateEvent.UNUE_NAME_UPDATED + // RoomSessionNestBreedingSuccessEvent.RSPFUE_NEST_BREEDING_SUCCESS + // RoomSessionPetLevelUpdateEvent.RSPLUE_PET_LEVEL_UPDATE + public get messageTypes(): string[] { return [ RoomWidgetRoomObjectMessage.GET_OWN_CHARACTER_INFO, + RoomWidgetUserActionMessage.START_NAME_CHANGE, + RoomWidgetUserActionMessage.REQUEST_PET_UPDATE, + RoomWidgetUseProductMessage.PET_PRODUCT, + RoomWidgetUserActionMessage.REQUEST_BREED_PET, + RoomWidgetUserActionMessage.HARVEST_PET, + RoomWidgetUserActionMessage.REVIVE_PET, + RoomWidgetUserActionMessage.COMPOST_PLANT, RoomWidgetDanceMessage.DANCE, RoomWidgetAvatarExpressionMessage.AVATAR_EXPRESSION, RoomWidgetChangePostureMessage.CHANGE_POSTURE, - RoomWidgetUseProductMessage.PET_PRODUCT ]; } } diff --git a/src/api/nitro/room/widgets/handlers/RoomWidgetInfostandHandler.ts b/src/api/nitro/room/widgets/handlers/RoomWidgetInfostandHandler.ts index 206af214..b3af10a0 100644 --- a/src/api/nitro/room/widgets/handlers/RoomWidgetInfostandHandler.ts +++ b/src/api/nitro/room/widgets/handlers/RoomWidgetInfostandHandler.ts @@ -1,4 +1,4 @@ -import { IFurnitureData, NitroEvent, ObjectDataFactory, PetFigureData, PetRespectComposer, PetSupplementComposer, PetType, RoomControllerLevel, RoomModerationSettings, RoomObjectCategory, RoomObjectOperationType, RoomObjectType, RoomObjectVariable, RoomSessionPetInfoUpdateEvent, RoomSessionUserBadgesEvent, RoomTradingLevelEnum, RoomUnitDropHandItemComposer, RoomUnitGiveHandItemComposer, RoomUnitGiveHandItemPetComposer, RoomUserData, RoomWidgetEnum, RoomWidgetEnumItemExtradataParameter, Vector3d } from '@nitrots/nitro-renderer'; +import { IFurnitureData, NitroEvent, ObjectDataFactory, PetFigureData, PetRespectComposer, PetSupplementComposer, PetType, RoomControllerLevel, RoomModerationSettings, RoomObjectCategory, RoomObjectOperationType, RoomObjectType, RoomObjectVariable, RoomSessionPetInfoUpdateEvent, RoomSessionUserBadgesEvent, RoomSessionUserFigureUpdateEvent, RoomTradingLevelEnum, RoomUnitDropHandItemComposer, RoomUnitGiveHandItemComposer, RoomUnitGiveHandItemPetComposer, RoomUserData, RoomWidgetEnum, RoomWidgetEnumItemExtradataParameter, Vector3d } from '@nitrots/nitro-renderer'; import { GetNitroInstance, GetRoomEngine, GetSessionDataManager, IsOwnerOfFurniture } from '../../../..'; import { InventoryTradeRequestEvent, WiredSelectObjectEvent } from '../../../../../events'; import { FriendsSendFriendRequestEvent } from '../../../../../events/friends/FriendsSendFriendRequestEvent'; @@ -24,6 +24,9 @@ export class RoomWidgetInfostandHandler extends RoomWidgetHandler case RoomSessionUserBadgesEvent.RSUBE_BADGES: this.container.eventDispatcher.dispatchEvent(event); return; + case RoomSessionUserFigureUpdateEvent.USER_FIGURE: + this.processRoomSessionUserFigureUpdateEvent((event as RoomSessionUserFigureUpdateEvent)); + return; } } @@ -661,6 +664,17 @@ export class RoomWidgetInfostandHandler extends RoomWidgetHandler this.container.eventDispatcher.dispatchEvent(infostandEvent); } + private processRoomSessionUserFigureUpdateEvent(event: RoomSessionUserFigureUpdateEvent): void + { + const userData = this.container.roomSession.userDataManager.getUserDataByIndex(event.userId); + + if(!userData) return; + + // update active infostand figure + // update motto + // update activity points + } + private checkGuildSetting(event: RoomWidgetUpdateInfostandUserEvent): boolean { if(event.isGuildRoom) return (event.roomControllerLevel >= RoomControllerLevel.GUILD_ADMIN); @@ -766,7 +780,8 @@ export class RoomWidgetInfostandHandler extends RoomWidgetHandler { return [ RoomSessionPetInfoUpdateEvent.PET_INFO, - RoomSessionUserBadgesEvent.RSUBE_BADGES + RoomSessionUserBadgesEvent.RSUBE_BADGES, + RoomSessionUserFigureUpdateEvent.USER_FIGURE ]; } diff --git a/src/views/room/widgets/RoomWidgetsView.tsx b/src/views/room/widgets/RoomWidgetsView.tsx index 0521523a..d7694e38 100644 --- a/src/views/room/widgets/RoomWidgetsView.tsx +++ b/src/views/room/widgets/RoomWidgetsView.tsx @@ -1,4 +1,4 @@ -import { RoomEngineEvent, RoomEngineObjectEvent, RoomEngineRoomAdEvent, RoomEngineTriggerWidgetEvent, RoomEngineUseProductEvent, RoomId, RoomObjectCategory, RoomObjectOperationType, RoomObjectVariable, RoomSessionChatEvent, RoomSessionDanceEvent, RoomSessionDimmerPresetsEvent, RoomSessionDoorbellEvent, RoomSessionErrorMessageEvent, RoomSessionEvent, RoomSessionFriendRequestEvent, RoomSessionPetInfoUpdateEvent, RoomSessionPollEvent, RoomSessionPresentEvent, RoomSessionUserBadgesEvent, RoomSessionWordQuizEvent, RoomZoomEvent } from '@nitrots/nitro-renderer'; +import { RoomEngineEvent, RoomEngineObjectEvent, RoomEngineRoomAdEvent, RoomEngineTriggerWidgetEvent, RoomEngineUseProductEvent, RoomId, RoomObjectCategory, RoomObjectOperationType, RoomObjectVariable, RoomSessionChatEvent, RoomSessionDanceEvent, RoomSessionDimmerPresetsEvent, RoomSessionDoorbellEvent, RoomSessionErrorMessageEvent, RoomSessionEvent, RoomSessionFriendRequestEvent, RoomSessionPetInfoUpdateEvent, RoomSessionPetStatusUpdateEvent, RoomSessionPollEvent, RoomSessionPresentEvent, RoomSessionUserBadgesEvent, RoomSessionUserFigureUpdateEvent, RoomSessionWordQuizEvent, RoomZoomEvent } from '@nitrots/nitro-renderer'; import { FC, useCallback } from 'react'; import { CanManipulateFurniture, GetRoomEngine, GetSessionDataManager, IsFurnitureSelectionDisabled, LocalizeText, ProcessRoomObjectOperation, RoomWidgetFurniToWidgetMessage, RoomWidgetUpdateRoomEngineEvent, RoomWidgetUpdateRoomObjectEvent } from '../../../api'; import { FriendRequestEvent } from '../../../events'; @@ -264,6 +264,8 @@ export const RoomWidgetsView: FC<{}> = props => useRoomSessionManagerEvent(RoomSessionChatEvent.FLOOD_EVENT, onRoomSessionEvent); useRoomSessionManagerEvent(RoomSessionDanceEvent.RSDE_DANCE, onRoomSessionEvent); useRoomSessionManagerEvent(RoomSessionUserBadgesEvent.RSUBE_BADGES, onRoomSessionEvent); + useRoomSessionManagerEvent(RoomSessionUserFigureUpdateEvent.USER_FIGURE, onRoomSessionEvent); + useRoomSessionManagerEvent(RoomSessionPetStatusUpdateEvent.PET_STATUS_UPDATE, onRoomSessionEvent); useRoomSessionManagerEvent(RoomSessionDoorbellEvent.DOORBELL, onRoomSessionEvent); useRoomSessionManagerEvent(RoomSessionDoorbellEvent.RSDE_REJECTED, onRoomSessionEvent); useRoomSessionManagerEvent(RoomSessionDoorbellEvent.RSDE_ACCEPTED, onRoomSessionEvent); diff --git a/src/views/room/widgets/avatar-info/views/own-pet/AvatarInfoWidgetOwnPetView.tsx b/src/views/room/widgets/avatar-info/views/own-pet/AvatarInfoWidgetOwnPetView.tsx index 6a7a22cf..48b775eb 100644 --- a/src/views/room/widgets/avatar-info/views/own-pet/AvatarInfoWidgetOwnPetView.tsx +++ b/src/views/room/widgets/avatar-info/views/own-pet/AvatarInfoWidgetOwnPetView.tsx @@ -204,10 +204,10 @@ export const AvatarInfoWidgetOwnPetView: FC = p processAction('revive') }> { LocalizeText('infostand.button.revive') } } - { roomSession.isRoomOwner && - processAction('compost') }> - { LocalizeText('infostand.button.compost') } - } + { roomSession.isRoomOwner && + processAction('compost') }> + { LocalizeText('infostand.button.compost') } + } { !petData.dead && ((petData.energy / petData.maximumEnergy) < 0.98) && processAction('treat') }> { LocalizeText('infostand.button.treat') }