From 63eee81b540e43eb63fe3f70e3fa846378991909 Mon Sep 17 00:00:00 2001 From: Gurkengewuerz Date: Fri, 17 Mar 2023 00:22:55 +0100 Subject: [PATCH] chore: use prettier on all projects --- .prettierignore | 1 + .prettierrc | 22 +- .vscode/extensions.json | 6 +- apps/frontend-e2e/cypress.config.ts | 6 +- apps/frontend-e2e/src/e2e/app.cy.ts | 12 +- apps/frontend-e2e/src/support/app.po.ts | 2 +- apps/frontend-e2e/src/support/commands.ts | 4 +- apps/frontend-e2e/src/support/e2e.ts | 3 +- apps/frontend/index.html | 32 +- apps/frontend/public/site.webmanifest | 36 +- apps/frontend/src/App.scss | 8 +- apps/frontend/src/App.tsx | 259 +- apps/frontend/src/api/GetRendererVersion.ts | 2 +- apps/frontend/src/api/GetUIVersion.ts | 2 +- .../api/achievements/AchievementCategory.ts | 58 +- .../api/achievements/AchievementUtilities.ts | 165 +- .../api/achievements/IAchievementCategory.ts | 9 +- apps/frontend/src/api/achievements/index.ts | 6 +- .../src/api/avatar/AvatarEditorAction.ts | 11 +- .../api/avatar/AvatarEditorGridColorItem.ts | 93 +- .../api/avatar/AvatarEditorGridPartItem.ts | 568 +- .../src/api/avatar/AvatarEditorUtilities.ts | 440 +- apps/frontend/src/api/avatar/BodyModel.ts | 108 +- .../src/api/avatar/CategoryBaseModel.ts | 367 +- apps/frontend/src/api/avatar/CategoryData.ts | 857 +-- apps/frontend/src/api/avatar/FigureData.ts | 443 +- .../src/api/avatar/FigureGenerator.ts | 129 +- apps/frontend/src/api/avatar/HeadModel.ts | 36 +- .../api/avatar/IAvatarEditorCategoryModel.ts | 33 +- apps/frontend/src/api/avatar/LegModel.ts | 32 +- apps/frontend/src/api/avatar/TorsoModel.ts | 34 +- apps/frontend/src/api/avatar/index.ts | 26 +- .../src/api/camera/CameraEditorTabs.ts | 7 +- apps/frontend/src/api/camera/CameraPicture.ts | 10 +- .../src/api/camera/CameraPictureThumbnail.ts | 8 +- apps/frontend/src/api/camera/index.ts | 6 +- .../frontend/src/api/campaign/CalendarItem.ts | 43 +- .../src/api/campaign/CalendarItemState.ts | 11 +- .../src/api/campaign/ICalendarItem.ts | 9 +- apps/frontend/src/api/campaign/index.ts | 6 +- .../catalog/BuilderFurniPlaceableStatus.ts | 17 +- apps/frontend/src/api/catalog/CatalogNode.ts | 185 +- apps/frontend/src/api/catalog/CatalogPage.ts | 93 +- .../src/api/catalog/CatalogPageName.ts | 49 +- .../src/api/catalog/CatalogPetPalette.ts | 11 +- .../src/api/catalog/CatalogPurchaseState.ts | 17 +- apps/frontend/src/api/catalog/CatalogType.ts | 7 +- .../src/api/catalog/CatalogUtilities.ts | 306 +- .../src/api/catalog/FurnitureOffer.ts | 180 +- .../api/catalog/GetImageIconUrlForProduct.ts | 30 +- .../api/catalog/GiftWrappingConfiguration.ts | 76 +- apps/frontend/src/api/catalog/ICatalogNode.ts | 39 +- .../src/api/catalog/ICatalogOptions.ts | 22 +- apps/frontend/src/api/catalog/ICatalogPage.ts | 19 +- .../api/catalog/IMarketplaceSearchOptions.ts | 11 +- .../src/api/catalog/IPageLocalization.ts | 7 +- apps/frontend/src/api/catalog/IProduct.ts | 28 +- .../src/api/catalog/IPurchasableOffer.ts | 45 +- .../src/api/catalog/IPurchaseOptions.ts | 13 +- .../src/api/catalog/MarketplaceOfferData.ts | 199 +- .../src/api/catalog/MarketplaceOfferState.ts | 11 +- .../src/api/catalog/MarketplaceSearchType.ts | 9 +- apps/frontend/src/api/catalog/Offer.ts | 440 +- .../src/api/catalog/PageLocalization.ts | 46 +- .../api/catalog/PlacedObjectPurchaseData.ts | 63 +- apps/frontend/src/api/catalog/Product.ts | 231 +- .../src/api/catalog/ProductTypeEnum.ts | 19 +- .../frontend/src/api/catalog/RequestedPage.ts | 94 +- apps/frontend/src/api/catalog/SearchResult.ts | 13 +- apps/frontend/src/api/catalog/index.ts | 58 +- .../src/api/chat-history/ChatEntryType.ts | 9 +- .../chat-history/ChatHistoryCurrentDate.ts | 9 +- .../src/api/chat-history/IChatEntry.ts | 31 +- .../src/api/chat-history/IRoomHistoryEntry.ts | 7 +- .../MessengerHistoryCurrentDate.ts | 11 +- apps/frontend/src/api/chat-history/index.ts | 10 +- apps/frontend/src/api/events/DispatchEvent.ts | 2 +- .../src/api/events/DispatchMainEvent.ts | 7 +- .../src/api/events/DispatchUiEvent.ts | 7 +- .../src/api/events/UI_EVENT_DISPATCHER.ts | 2 +- apps/frontend/src/api/events/index.ts | 8 +- .../src/api/friends/GetGroupChatData.ts | 21 +- .../src/api/friends/IGroupChatData.ts | 9 +- .../src/api/friends/MessengerFriend.ts | 76 +- .../src/api/friends/MessengerGroupType.ts | 7 +- .../src/api/friends/MessengerIconState.ts | 9 +- .../src/api/friends/MessengerRequest.ts | 58 +- .../src/api/friends/MessengerSettings.ts | 17 +- .../src/api/friends/MessengerThread.ts | 133 +- .../src/api/friends/MessengerThreadChat.ts | 82 +- .../api/friends/MessengerThreadChatGroup.ts | 59 +- .../src/api/friends/OpenMessengerChat.ts | 9 +- apps/frontend/src/api/friends/index.ts | 22 +- .../src/api/groups/GetGroupInformation.ts | 10 +- .../src/api/groups/GetGroupManager.ts | 7 +- .../src/api/groups/GetGroupMembers.ts | 9 +- .../frontend/src/api/groups/GroupBadgePart.ts | 45 +- .../src/api/groups/GroupMembershipType.ts | 9 +- apps/frontend/src/api/groups/GroupType.ts | 9 +- .../src/api/groups/IGroupCustomize.ts | 13 +- apps/frontend/src/api/groups/IGroupData.ts | 21 +- .../src/api/groups/ToggleFavoriteGroup.ts | 12 +- apps/frontend/src/api/groups/TryJoinGroup.ts | 5 +- apps/frontend/src/api/groups/index.ts | 20 +- .../src/api/guide-tool/GuideSessionState.ts | 43 +- .../src/api/guide-tool/GuideToolMessage.ts | 32 +- .../api/guide-tool/GuideToolMessageGroup.ts | 39 +- apps/frontend/src/api/guide-tool/index.ts | 6 +- apps/frontend/src/api/hc-center/ClubStatus.ts | 9 +- .../src/api/hc-center/GetClubBadge.ts | 15 +- apps/frontend/src/api/hc-center/index.ts | 4 +- .../src/api/help/CallForHelpResult.ts | 7 +- .../src/api/help/GetCloseReasonKey.ts | 11 +- apps/frontend/src/api/help/IHelpReport.ts | 33 +- apps/frontend/src/api/help/IReportedUser.ts | 7 +- apps/frontend/src/api/help/ReportState.ts | 13 +- apps/frontend/src/api/help/ReportType.ts | 19 +- apps/frontend/src/api/help/index.ts | 12 +- apps/frontend/src/api/index.ts | 58 +- .../src/api/inventory/FurniCategory.ts | 49 +- .../src/api/inventory/FurnitureItem.ts | 420 +- .../src/api/inventory/FurnitureUtilities.ts | 262 +- apps/frontend/src/api/inventory/GroupItem.ts | 713 +- apps/frontend/src/api/inventory/IBotItem.ts | 7 +- .../src/api/inventory/IFurnitureItem.ts | 29 +- apps/frontend/src/api/inventory/IPetItem.ts | 7 +- .../src/api/inventory/IUnseenItemTracker.ts | 21 +- .../src/api/inventory/InventoryUtilities.ts | 191 +- .../src/api/inventory/PetUtilities.ts | 148 +- apps/frontend/src/api/inventory/TradeState.ts | 17 +- .../src/api/inventory/TradeUserData.ts | 26 +- .../api/inventory/TradingNotificationType.ts | 21 +- .../src/api/inventory/TradingUtilities.ts | 108 +- .../src/api/inventory/UnseenItemCategory.ts | 15 +- apps/frontend/src/api/inventory/index.ts | 30 +- .../src/api/mod-tools/GetIssueCategoryName.ts | 66 +- .../src/api/mod-tools/ISelectedUser.ts | 7 +- apps/frontend/src/api/mod-tools/IUserInfo.ts | 9 +- .../src/api/mod-tools/ModActionDefinition.ts | 75 +- apps/frontend/src/api/mod-tools/index.ts | 8 +- .../src/api/navigator/DoorStateType.ts | 21 +- .../src/api/navigator/INavigatorData.ts | 29 +- .../api/navigator/INavigatorSearchFilter.ts | 7 +- .../src/api/navigator/IRoomChatSettings.ts | 13 +- apps/frontend/src/api/navigator/IRoomData.ts | 41 +- apps/frontend/src/api/navigator/IRoomModel.ts | 9 +- .../api/navigator/IRoomModerationSettings.ts | 9 +- .../NavigatorSearchResultViewDisplayMode.ts | 9 +- .../src/api/navigator/RoomInfoData.ts | 85 +- .../src/api/navigator/RoomSettingsUtils.ts | 11 +- .../src/api/navigator/SearchFilterOptions.ts | 42 +- .../src/api/navigator/TryVisitRoom.ts | 10 +- apps/frontend/src/api/navigator/index.ts | 24 +- .../src/api/nitro/AddLinkEventTracker.ts | 10 +- .../frontend/src/api/nitro/CreateLinkEvent.ts | 11 +- .../src/api/nitro/GetCommunication.ts | 10 +- .../src/api/nitro/GetConfiguration.ts | 7 +- apps/frontend/src/api/nitro/GetConnection.ts | 10 +- .../frontend/src/api/nitro/GetLocalization.ts | 10 +- .../src/api/nitro/GetNitroInstance.ts | 7 +- apps/frontend/src/api/nitro/OpenUrl.ts | 27 +- .../src/api/nitro/RemoveLinkEventTracker.ts | 10 +- .../src/api/nitro/SendMessageComposer.ts | 5 +- .../src/api/nitro/avatar/GetAvatarPalette.ts | 10 +- .../nitro/avatar/GetAvatarRenderManager.ts | 10 +- .../src/api/nitro/avatar/GetAvatarSetType.ts | 10 +- apps/frontend/src/api/nitro/avatar/index.ts | 6 +- .../camera/GetRoomCameraWidgetManager.ts | 10 +- apps/frontend/src/api/nitro/camera/index.ts | 2 +- .../api/nitro/core/GetConfigurationManager.ts | 10 +- .../src/api/nitro/core/GetNitroCore.ts | 10 +- apps/frontend/src/api/nitro/core/index.ts | 4 +- apps/frontend/src/api/nitro/index.ts | 30 +- .../src/api/nitro/room/DispatchMouseEvent.ts | 85 +- .../src/api/nitro/room/DispatchTouchEvent.ts | 135 +- .../src/api/nitro/room/GetOwnRoomObject.ts | 43 +- .../src/api/nitro/room/GetRoomEngine.ts | 10 +- .../src/api/nitro/room/GetRoomObjectBounds.ts | 17 +- .../nitro/room/GetRoomObjectScreenLocation.ts | 17 +- .../InitializeRoomInstanceRenderingCanvas.ts | 13 +- .../room/IsFurnitureSelectionDisabled.ts | 30 +- .../nitro/room/ProcessRoomObjectOperation.ts | 7 +- .../src/api/nitro/room/SetActiveRoomId.ts | 7 +- apps/frontend/src/api/nitro/room/index.ts | 20 +- .../nitro/session/CanManipulateFurniture.ts | 21 +- .../api/nitro/session/CreateRoomSession.ts | 7 +- .../src/api/nitro/session/GetCanStandUp.ts | 20 +- .../api/nitro/session/GetCanUseExpression.ts | 20 +- .../api/nitro/session/GetClubMemberLevel.ts | 16 +- .../src/api/nitro/session/GetFurnitureData.ts | 31 +- .../GetFurnitureDataForProductOffer.ts | 31 +- .../session/GetFurnitureDataForRoomObject.ts | 31 +- .../src/api/nitro/session/GetOwnPosture.ts | 20 +- .../session/GetProductDataForLocalization.ts | 12 +- .../src/api/nitro/session/GetRoomSession.ts | 10 +- .../nitro/session/GetRoomSessionManager.ts | 10 +- .../nitro/session/GetSessionDataManager.ts | 10 +- .../src/api/nitro/session/GoToDesktop.ts | 10 +- .../src/api/nitro/session/HasHabboClub.ts | 10 +- .../src/api/nitro/session/HasHabboVip.ts | 10 +- .../nitro/session/IsOwnerOfFloorFurniture.ts | 22 +- .../api/nitro/session/IsOwnerOfFurniture.ts | 16 +- .../src/api/nitro/session/IsRidingHorse.ts | 22 +- .../src/api/nitro/session/StartRoomSession.ts | 10 +- .../src/api/nitro/session/VisitDesktop.ts | 13 +- apps/frontend/src/api/nitro/session/index.ts | 42 +- .../api/notification/NotificationAlertItem.ts | 105 +- .../api/notification/NotificationAlertType.ts | 17 +- .../notification/NotificationBubbleItem.ts | 69 +- .../notification/NotificationBubbleType.ts | 35 +- .../notification/NotificationConfirmItem.ts | 100 +- .../notification/NotificationConfirmType.ts | 5 +- apps/frontend/src/api/notification/index.ts | 12 +- apps/frontend/src/api/purse/IPurse.ts | 27 +- apps/frontend/src/api/purse/Purse.ts | 246 +- apps/frontend/src/api/purse/index.ts | 4 +- .../room/events/RoomWidgetPollUpdateEvent.ts | 160 +- ...WidgetUpdateBackgroundColorPreviewEvent.ts | 49 +- .../RoomWidgetUpdateChatInputContentEvent.ts | 40 +- .../api/room/events/RoomWidgetUpdateEvent.ts | 5 +- .../RoomWidgetUpdateRentableBotChatEvent.ts | 91 +- .../events/RoomWidgetUpdateRoomObjectEvent.ts | 65 +- apps/frontend/src/api/room/events/index.ts | 12 +- apps/frontend/src/api/room/index.ts | 4 +- .../src/api/room/widgets/AvatarInfoFurni.ts | 67 +- .../src/api/room/widgets/AvatarInfoName.ts | 19 +- .../src/api/room/widgets/AvatarInfoPet.ts | 82 +- .../api/room/widgets/AvatarInfoRentableBot.ts | 36 +- .../src/api/room/widgets/AvatarInfoUser.ts | 85 +- .../api/room/widgets/AvatarInfoUtilities.ts | 761 +- .../src/api/room/widgets/BotSkillsEnum.ts | 33 +- .../src/api/room/widgets/ChatBubbleMessage.ts | 86 +- .../api/room/widgets/ChatMessageTypeEnum.ts | 9 +- .../DimmerFurnitureWidgetPresetItem.ts | 10 +- .../src/api/room/widgets/DoChatsOverlap.ts | 15 +- .../room/widgets/FurnitureDimmerUtilities.ts | 41 +- .../src/api/room/widgets/GetDiskColor.ts | 49 +- .../src/api/room/widgets/IAvatarInfo.ts | 5 +- .../api/room/widgets/ICraftingIngredient.ts | 9 +- .../src/api/room/widgets/ICraftingRecipe.ts | 9 +- .../src/api/room/widgets/IPhotoData.ts | 69 +- .../api/room/widgets/MannequinUtilities.ts | 60 +- .../src/api/room/widgets/PetSupplementEnum.ts | 7 +- .../src/api/room/widgets/PostureTypeEnum.ts | 7 +- .../src/api/room/widgets/RoomDimmerPreset.ts | 52 +- .../src/api/room/widgets/RoomObjectItem.ts | 41 +- .../src/api/room/widgets/UseProductItem.ts | 21 +- .../src/api/room/widgets/VoteValue.ts | 11 +- .../widgets/YoutubeVideoPlaybackStateEnum.ts | 15 +- apps/frontend/src/api/room/widgets/index.ts | 50 +- apps/frontend/src/api/user/GetUserProfile.ts | 10 +- apps/frontend/src/api/user/index.ts | 2 +- apps/frontend/src/api/utils/CloneObject.ts | 20 +- apps/frontend/src/api/utils/ColorUtils.ts | 102 +- apps/frontend/src/api/utils/ConvertSeconds.ts | 23 +- .../frontend/src/api/utils/GetLocalStorage.ts | 18 +- .../src/api/utils/LocalStorageKeys.ts | 7 +- .../src/api/utils/LocalizeBadgeDescription.ts | 13 +- .../src/api/utils/LocalizeBageName.ts | 13 +- .../src/api/utils/LocalizeFormattedNumber.ts | 9 +- .../src/api/utils/LocalizeShortNumber.ts | 47 +- apps/frontend/src/api/utils/LocalizeText.ts | 7 +- apps/frontend/src/api/utils/PlaySound.ts | 27 +- .../src/api/utils/ProductImageUtility.ts | 86 +- apps/frontend/src/api/utils/Randomizer.ts | 45 +- .../src/api/utils/RoomChatFormatter.ts | 125 +- apps/frontend/src/api/utils/SoundNames.ts | 15 +- .../src/api/utils/WindowSaveOptions.ts | 7 +- apps/frontend/src/api/utils/index.ts | 34 +- .../src/api/wired/GetWiredTimeLocale.ts | 11 +- .../src/api/wired/WiredActionLayoutCode.ts | 55 +- .../src/api/wired/WiredConditionLayoutCode.ts | 55 +- .../src/api/wired/WiredDateToString.ts | 5 +- apps/frontend/src/api/wired/WiredFurniType.ts | 11 +- .../src/api/wired/WiredSelectionFilter.ts | 108 +- .../src/api/wired/WiredSelectionVisualizer.ts | 102 +- .../src/api/wired/WiredStringDelimeter.ts | 2 +- .../src/api/wired/WiredTriggerLayoutCode.ts | 31 +- apps/frontend/src/api/wired/index.ts | 18 +- .../assets/styles/bootstrap/_accordion.scss | 9 +- .../src/assets/styles/bootstrap/_alert.scss | 2 - .../assets/styles/bootstrap/_breadcrumb.scss | 5 +- .../styles/bootstrap/_button-group.scss | 23 +- .../src/assets/styles/bootstrap/_buttons.scss | 3 - .../src/assets/styles/bootstrap/_card.scss | 14 +- .../assets/styles/bootstrap/_carousel.scss | 11 +- .../assets/styles/bootstrap/_dropdown.scss | 1 - .../assets/styles/bootstrap/_functions.scss | 53 +- .../src/assets/styles/bootstrap/_grid.scss | 1 - .../src/assets/styles/bootstrap/_images.scss | 3 +- .../assets/styles/bootstrap/_list-group.scss | 5 - .../src/assets/styles/bootstrap/_modal.scss | 17 +- .../src/assets/styles/bootstrap/_nav.scss | 208 +- .../src/assets/styles/bootstrap/_navbar.scss | 7 +- .../assets/styles/bootstrap/_offcanvas.scss | 8 +- .../assets/styles/bootstrap/_pagination.scss | 1 - .../styles/bootstrap/_placeholders.scss | 4 +- .../src/assets/styles/bootstrap/_popover.scss | 18 +- .../assets/styles/bootstrap/_progress.scss | 4 +- .../src/assets/styles/bootstrap/_reboot.scss | 370 +- .../assets/styles/bootstrap/_spinners.scss | 4 +- .../src/assets/styles/bootstrap/_tables.scss | 4 - .../src/assets/styles/bootstrap/_toasts.scss | 2 +- .../src/assets/styles/bootstrap/_tooltip.scss | 12 +- .../src/assets/styles/bootstrap/_type.scss | 2 - .../assets/styles/bootstrap/_utilities.scss | 548 +- .../assets/styles/bootstrap/_variables.scss | 1658 ++-- .../styles/bootstrap/bootstrap-grid.scss | 2 +- .../styles/bootstrap/forms/_form-range.scss | 10 +- .../styles/bootstrap/forms/_input-group.scss | 3 - .../styles/bootstrap/mixins/_backdrop.scss | 8 +- .../bootstrap/mixins/_border-radius.scss | 3 +- .../styles/bootstrap/mixins/_breakpoints.scss | 6 +- .../styles/bootstrap/mixins/_buttons.scss | 23 +- .../styles/bootstrap/mixins/_forms.scss | 4 +- .../styles/bootstrap/mixins/_gradients.scss | 2 +- .../assets/styles/bootstrap/mixins/_grid.scss | 12 +- .../styles/bootstrap/mixins/_image.scss | 1 - .../styles/bootstrap/mixins/_utilities.scss | 3 +- .../styles/bootstrap/utilities/_api.scss | 2 - .../assets/styles/bootstrap/vendor/_rfs.scss | 73 +- apps/frontend/src/assets/styles/fonts.scss | 4 +- apps/frontend/src/assets/styles/icons.scss | 1248 +-- apps/frontend/src/assets/styles/index.scss | 14 +- .../src/assets/styles/scrollbars.scss | 70 +- apps/frontend/src/assets/styles/slider.scss | 92 +- apps/frontend/src/assets/styles/utils.scss | 100 +- apps/frontend/src/common/AutoGrid.tsx | 38 +- apps/frontend/src/common/Base.tsx | 137 +- apps/frontend/src/common/Button.tsx | 46 +- apps/frontend/src/common/ButtonGroup.tsx | 29 +- apps/frontend/src/common/Column.tsx | 62 +- apps/frontend/src/common/Flex.tsx | 80 +- apps/frontend/src/common/FormGroup.tsx | 29 +- apps/frontend/src/common/Grid.tsx | 100 +- apps/frontend/src/common/GridContext.tsx | 16 +- apps/frontend/src/common/HorizontalRule.tsx | 49 +- apps/frontend/src/common/InfiniteScroll.tsx | 97 +- apps/frontend/src/common/Text.tsx | 100 +- .../src/common/card/NitroCardContentView.tsx | 25 +- .../src/common/card/NitroCardContext.tsx | 16 +- .../src/common/card/NitroCardHeaderView.tsx | 88 +- .../common/card/NitroCardSubHeaderView.tsx | 29 +- .../src/common/card/NitroCardView.scss | 407 +- .../src/common/card/NitroCardView.tsx | 63 +- .../accordion/NitroCardAccordionContext.tsx | 24 +- .../accordion/NitroCardAccordionItemView.tsx | 25 +- .../accordion/NitroCardAccordionSetView.tsx | 123 +- .../card/accordion/NitroCardAccordionView.tsx | 38 +- .../src/common/card/accordion/index.ts | 8 +- apps/frontend/src/common/card/index.ts | 14 +- .../card/tabs/NitroCardTabsItemView.tsx | 51 +- .../common/card/tabs/NitroCardTabsView.tsx | 33 +- apps/frontend/src/common/card/tabs/index.ts | 4 +- apps/frontend/src/common/classNames.ts | 2 +- .../draggable-window/DraggableWindow.tsx | 422 +- .../DraggableWindowPosition.ts | 11 +- .../src/common/draggable-window/index.ts | 4 +- apps/frontend/src/common/index.scss | 847 ++- apps/frontend/src/common/index.ts | 44 +- .../common/layout/LayoutAvatarImageView.tsx | 131 +- .../common/layout/LayoutBackgroundImage.tsx | 30 +- .../common/layout/LayoutBadgeImageView.tsx | 154 +- .../common/layout/LayoutCounterTimeView.tsx | 79 +- .../src/common/layout/LayoutCurrencyIcon.tsx | 58 +- .../layout/LayoutFurniIconImageView.tsx | 25 +- .../common/layout/LayoutFurniImageView.tsx | 131 +- .../src/common/layout/LayoutGiftTagView.tsx | 84 +- .../src/common/layout/LayoutGridItem.tsx | 128 +- .../src/common/layout/LayoutImage.tsx | 16 +- .../src/common/layout/LayoutItemCountView.tsx | 40 +- .../layout/LayoutLoadingSpinnerView.tsx | 28 +- .../common/layout/LayoutMiniCameraView.tsx | 75 +- .../layout/LayoutNotificationAlertView.tsx | 54 +- .../layout/LayoutNotificationBubbleView.tsx | 73 +- .../src/common/layout/LayoutPetImageView.tsx | 202 +- .../layout/LayoutPrizeProductImageView.tsx | 48 +- .../src/common/layout/LayoutProgressBar.tsx | 51 +- .../common/layout/LayoutRarityLevelView.tsx | 40 +- .../common/layout/LayoutRoomPreviewerView.tsx | 154 +- .../common/layout/LayoutRoomThumbnailView.tsx | 53 +- .../src/common/layout/LayoutTrophyView.tsx | 68 +- .../src/common/layout/UserProfileIconView.tsx | 42 +- apps/frontend/src/common/layout/index.ts | 46 +- .../LayoutLimitedEditionCompactPlateView.tsx | 54 +- .../LayoutLimitedEditionCompletePlateView.tsx | 70 +- .../LayoutLimitedEditionStyledNumberView.tsx | 30 +- .../common/layout/limited-edition/index.ts | 6 +- .../transitions/TransitionAnimation.tsx | 81 +- .../transitions/TransitionAnimationStyles.ts | 257 +- .../transitions/TransitionAnimationTypes.ts | 19 +- apps/frontend/src/common/transitions/index.ts | 6 +- .../src/common/types/AlignItemType.ts | 2 +- .../src/common/types/AlignSelfType.ts | 2 +- .../src/common/types/ButtonSizeType.ts | 2 +- .../src/common/types/ColorVariantType.ts | 2 +- apps/frontend/src/common/types/DisplayType.ts | 2 +- apps/frontend/src/common/types/FloatType.ts | 2 +- .../src/common/types/FontWeightType.ts | 2 +- .../src/common/types/JustifyContentType.ts | 2 +- .../frontend/src/common/types/OverflowType.ts | 2 +- .../frontend/src/common/types/PositionType.ts | 2 +- .../src/common/types/TextAlignType.ts | 2 +- apps/frontend/src/common/types/index.ts | 28 +- .../common/utils/CreateTransitionToIcon.ts | 22 +- .../src/common/utils/FriendlyTimeView.tsx | 38 +- apps/frontend/src/common/utils/index.ts | 4 +- .../achievements/AchievementsView.scss | 14 +- .../achievements/AchievementsView.tsx | 164 +- .../views/AchievementBadgeView.tsx | 34 +- .../views/AchievementCategoryView.tsx | 56 +- .../views/AchievementDetailsView.tsx | 109 +- .../AchievementListItemView.tsx | 41 +- .../achievement-list/AchievementListView.tsx | 31 +- .../views/achievement-list/index.ts | 4 +- .../AchievementsCategoryListItemView.tsx | 59 +- .../AchievementsCategoryListView.tsx | 44 +- .../achievements/views/category-list/index.ts | 4 +- .../components/achievements/views/index.ts | 10 +- .../avatar-editor/AvatarEditorView.scss | 578 +- .../avatar-editor/AvatarEditorView.tsx | 569 +- .../views/AvatarEditorFigurePreviewView.tsx | 86 +- .../avatar-editor/views/AvatarEditorIcon.tsx | 38 +- .../views/AvatarEditorModelView.tsx | 150 +- .../views/AvatarEditorWardrobeView.tsx | 125 +- .../AvatarEditorFigureSetItemView.tsx | 52 +- .../figure-set/AvatarEditorFigureSetView.tsx | 66 +- .../AvatarEditorPaletteSetItemView.tsx | 46 +- .../AvatarEditorPaletteSetView.tsx | 64 +- .../components/camera/CameraWidgetView.scss | 209 +- .../components/camera/CameraWidgetView.tsx | 183 +- .../camera/views/CameraWidgetCaptureView.tsx | 150 +- .../camera/views/CameraWidgetCheckoutView.tsx | 292 +- .../views/CameraWidgetShowPhotoView.tsx | 110 +- .../views/editor/CameraWidgetEditorView.tsx | 446 +- .../CameraWidgetEffectListItemView.tsx | 78 +- .../CameraWidgetEffectListView.tsx | 62 +- .../components/campaign/CalendarItemView.tsx | 96 +- .../src/components/campaign/CalendarView.tsx | 264 +- .../src/components/campaign/CampaignView.scss | 124 +- .../src/components/campaign/CampaignView.tsx | 177 +- .../src/components/catalog/CatalogView.scss | 217 +- .../src/components/catalog/CatalogView.tsx | 215 +- .../views/CatalogPurchaseConfirmView.tsx | 13 +- .../catalog-header/CatalogHeaderView.tsx | 44 +- .../views/catalog-icon/CatalogIconView.tsx | 28 +- .../CatalogRoomPreviewerView.tsx | 61 +- .../catalog/views/gift/CatalogGiftView.tsx | 528 +- .../navigation/CatalogNavigationItemView.tsx | 65 +- .../navigation/CatalogNavigationSetView.tsx | 44 +- .../navigation/CatalogNavigationView.tsx | 61 +- .../page/common/CatalogGridOfferView.tsx | 106 +- .../page/common/CatalogRedeemVoucherView.tsx | 99 +- .../views/page/common/CatalogSearchView.tsx | 183 +- .../views/page/layout/CatalogLayout.types.ts | 9 +- .../layout/CatalogLayoutBadgeDisplayView.tsx | 110 +- .../layout/CatalogLayoutColorGroupingView.tsx | 326 +- .../page/layout/CatalogLayoutDefaultView.tsx | 121 +- .../CatalogLayoutGuildCustomFurniView.tsx | 94 +- .../layout/CatalogLayoutGuildForumView.tsx | 94 +- .../CatalogLayoutGuildFrontpageView.tsx | 54 +- .../layout/CatalogLayoutInfoLoyaltyView.tsx | 28 +- .../page/layout/CatalogLayoutPets2View.tsx | 14 +- .../page/layout/CatalogLayoutPets3View.tsx | 50 +- .../page/layout/CatalogLayoutRoomAdsView.tsx | 234 +- .../layout/CatalogLayoutRoomBundleView.tsx | 83 +- .../layout/CatalogLayoutSingleBundleView.tsx | 83 +- .../layout/CatalogLayoutSoundMachineView.tsx | 194 +- .../page/layout/CatalogLayoutSpacesView.tsx | 91 +- .../page/layout/CatalogLayoutTrophiesView.tsx | 100 +- .../page/layout/CatalogLayoutVipBuyView.tsx | 384 +- .../views/page/layout/GetCatalogLayout.tsx | 152 +- .../CatalogLayoutFrontPageItemView.tsx | 62 +- .../CatalogLayoutFrontpage4View.tsx | 85 +- .../CatalogLayoutMarketplaceItemView.tsx | 154 +- .../CatalogLayoutMarketplaceOwnItemsView.tsx | 180 +- ...atalogLayoutMarketplacePublicItemsView.tsx | 328 +- ...CatalogLayoutMarketplaceSearchFormView.tsx | 128 +- .../marketplace/MarketplacePostOfferView.tsx | 223 +- .../page/layout/pets/CatalogLayoutPetView.tsx | 439 +- .../vip-gifts/CatalogLayoutVipGiftsView.tsx | 117 +- .../page/layout/vip-gifts/VipGiftItemView.tsx | 101 +- .../widgets/CatalogAddOnBadgeWidgetView.tsx | 23 +- .../CatalogBadgeSelectorWidgetView.tsx | 109 +- .../widgets/CatalogBundleGridWidgetView.tsx | 44 +- .../CatalogFirstProductSelectorWidgetView.tsx | 23 +- .../widgets/CatalogGuildBadgeWidgetView.tsx | 40 +- .../CatalogGuildSelectorWidgetView.tsx | 116 +- .../widgets/CatalogItemGridWidgetView.tsx | 81 +- .../widgets/CatalogLimitedItemWidgetView.tsx | 38 +- .../widgets/CatalogPriceDisplayWidgetView.tsx | 64 +- .../widgets/CatalogPurchaseWidgetView.tsx | 349 +- .../widgets/CatalogSimplePriceWidgetView.tsx | 31 +- .../widgets/CatalogSingleViewWidgetView.tsx | 12 +- .../page/widgets/CatalogSpacesWidgetView.tsx | 190 +- .../page/widgets/CatalogSpinnerWidgetView.tsx | 71 +- .../page/widgets/CatalogTotalPriceWidget.tsx | 31 +- .../widgets/CatalogViewProductWidgetView.tsx | 164 +- .../catalog/views/targeted-offer/Offer.scss | 40 +- .../views/targeted-offer/OfferBubbleView.tsx | 30 +- .../views/targeted-offer/OfferView.tsx | 48 +- .../views/targeted-offer/OfferWindowView.tsx | 155 +- .../chat-history/ChatHistoryView.scss | 4 +- .../chat-history/ChatHistoryView.tsx | 188 +- .../FloorplanEditorContext.tsx | 28 +- .../floorplan-editor/FloorplanEditorView.scss | 8 +- .../floorplan-editor/FloorplanEditorView.tsx | 331 +- .../floorplan-editor/common/ActionSettings.ts | 55 +- .../floorplan-editor/common/Constants.ts | 71 +- .../common/ConvertMapToString.ts | 2 +- .../common/FloorplanEditor.ts | 719 +- .../common/IFloorplanSettings.ts | 11 +- .../common/IVisualizationSettings.ts | 11 +- .../floorplan-editor/common/Tile.ts | 44 +- .../floorplan-editor/common/Utils.ts | 83 +- .../views/FloorplanCanvasView.tsx | 250 +- .../views/FloorplanImportExportView.tsx | 97 +- .../views/FloorplanOptionsView.tsx | 313 +- .../src/components/friends/FriendsView.scss | 408 +- .../src/components/friends/FriendsView.tsx | 36 +- .../views/friends-bar/FriendBarItemView.tsx | 100 +- .../views/friends-bar/FriendsBarView.tsx | 51 +- .../FriendsListRemoveConfirmationView.tsx | 51 +- .../FriendsListRoomInviteView.tsx | 62 +- .../friends-list/FriendsListSearchView.tsx | 218 +- .../views/friends-list/FriendsListView.tsx | 252 +- .../FriendsListGroupItemView.tsx | 185 +- .../FriendsListGroupView.tsx | 42 +- .../FriendsListRequestItemView.tsx | 44 +- .../FriendsListRequestView.tsx | 52 +- .../views/messenger/FriendsMessengerView.tsx | 345 +- .../FriendsMessengerThreadGroup.tsx | 141 +- .../FriendsMessengerThreadView.tsx | 22 +- .../game-center/GameCenterView.scss | 64 +- .../components/game-center/GameCenterView.tsx | 82 +- .../game-center/views/GameListView.tsx | 53 +- .../game-center/views/GameStageView.tsx | 67 +- .../components/game-center/views/GameView.tsx | 92 +- .../src/components/groups/GroupView.scss | 264 +- .../src/components/groups/GroupsView.tsx | 106 +- .../groups/views/GroupBadgeCreatorView.tsx | 169 +- .../groups/views/GroupCreatorView.tsx | 312 +- .../views/GroupInformationStandaloneView.tsx | 45 +- .../groups/views/GroupInformationView.tsx | 300 +- .../groups/views/GroupManagerView.tsx | 199 +- .../groups/views/GroupMembersView.tsx | 458 +- .../groups/views/GroupRoomInformationView.tsx | 245 +- .../groups/views/tabs/GroupTabBadgeView.tsx | 181 +- .../groups/views/tabs/GroupTabColorsView.tsx | 227 +- .../tabs/GroupTabCreatorConfirmationView.tsx | 113 +- .../views/tabs/GroupTabIdentityView.tsx | 228 +- .../views/tabs/GroupTabSettingsView.tsx | 135 +- .../components/guide-tool/GuideToolView.scss | 149 +- .../components/guide-tool/GuideToolView.tsx | 707 +- .../guide-tool/views/GuideToolAcceptView.tsx | 61 +- .../guide-tool/views/GuideToolMenuView.tsx | 163 +- .../guide-tool/views/GuideToolOngoingView.tsx | 239 +- .../views/GuideToolUserCreateRequestView.tsx | 54 +- .../views/GuideToolUserFeedbackView.tsx | 80 +- .../views/GuideToolUserNoHelpersView.tsx | 24 +- .../views/GuideToolUserPendingView.tsx | 57 +- .../views/GuideToolUserSomethingWrogView.tsx | 22 +- .../views/GuideToolUserThanksView.tsx | 22 +- .../components/hc-center/HcCenterView.scss | 70 +- .../src/components/hc-center/HcCenterView.tsx | 407 +- .../src/components/help/HelpView.scss | 18 +- .../frontend/src/components/help/HelpView.tsx | 202 +- .../help/views/DescribeReportView.tsx | 84 +- .../components/help/views/HelpIndexView.tsx | 68 +- .../help/views/ReportSummaryView.tsx | 118 +- .../help/views/SanctionStatusView.tsx | 142 +- .../help/views/SelectReportedChatsView.tsx | 157 +- .../help/views/SelectReportedUserView.tsx | 146 +- .../components/help/views/SelectTopicView.tsx | 105 +- .../NameChangeConfirmationView.tsx | 76 +- .../views/name-change/NameChangeInitView.tsx | 40 +- .../views/name-change/NameChangeInputView.tsx | 172 +- .../help/views/name-change/NameChangeView.tsx | 116 +- .../views/name-change/NameChangeView.types.ts | 7 +- .../src/components/hotel-view/HotelView.scss | 167 +- .../src/components/hotel-view/HotelView.tsx | 190 +- .../views/widgets/GetWidgetLayout.tsx | 50 +- .../views/widgets/HotelViewWidgets.scss | 8 +- .../views/widgets/WidgetSlotView.tsx | 33 +- .../bonus-rare/BonusRareWidgetView.scss | 14 +- .../bonus-rare/BonusRareWidgetView.tsx | 70 +- .../hall-of-fame-item/HallOfFameItemView.tsx | 45 +- .../hall-of-fame/HallOfFameWidgetView.scss | 130 +- .../hall-of-fame/HallOfFameWidgetView.tsx | 60 +- .../HallOfFameWidgetView.types.ts | 7 +- .../promo-article/PromoArticleWidgetView.scss | 44 +- .../promo-article/PromoArticleWidgetView.tsx | 87 +- .../widget-container/WidgetContainerView.scss | 14 +- .../widget-container/WidgetContainerView.tsx | 61 +- apps/frontend/src/components/index.scss | 52 +- .../components/inventory/InventoryView.scss | 26 +- .../components/inventory/InventoryView.tsx | 270 +- .../views/InventoryCategoryEmptyView.tsx | 47 +- .../views/badge/InventoryBadgeItemView.tsx | 40 +- .../views/badge/InventoryBadgeView.tsx | 129 +- .../views/bot/InventoryBotItemView.tsx | 82 +- .../inventory/views/bot/InventoryBotView.tsx | 146 +- .../furniture/InventoryFurnitureItemView.tsx | 76 +- .../InventoryFurnitureSearchView.tsx | 77 +- .../furniture/InventoryFurnitureView.tsx | 266 +- .../views/furniture/InventoryTradeView.tsx | 514 +- .../views/pet/InventoryPetItemView.tsx | 82 +- .../inventory/views/pet/InventoryPetView.tsx | 146 +- .../src/components/loading/LoadingView.scss | 114 +- .../src/components/loading/LoadingView.tsx | 62 +- .../frontend/src/components/main/MainView.tsx | 200 +- .../components/mod-tools/ModToolsView.scss | 72 +- .../src/components/mod-tools/ModToolsView.tsx | 328 +- .../mod-tools/views/chatlog/ChatlogRecord.ts | 19 +- .../mod-tools/views/chatlog/ChatlogView.tsx | 162 +- .../views/room/ModToolsChatlogView.tsx | 66 +- .../mod-tools/views/room/ModToolsRoomView.tsx | 218 +- .../views/tickets/CfhChatlogView.tsx | 65 +- .../views/tickets/ModToolsIssueInfoView.tsx | 166 +- .../views/tickets/ModToolsMyIssuesTabView.tsx | 90 +- .../tickets/ModToolsOpenIssuesTabView.tsx | 81 +- .../tickets/ModToolsPickedIssuesTabView.tsx | 72 +- .../views/tickets/ModToolsTicketsView.tsx | 155 +- .../views/user/ModToolsUserChatlogView.tsx | 66 +- .../views/user/ModToolsUserModActionView.tsx | 313 +- .../views/user/ModToolsUserRoomVisitsView.tsx | 105 +- .../user/ModToolsUserSendMessageView.tsx | 73 +- .../mod-tools/views/user/ModToolsUserView.tsx | 276 +- .../components/navigator/NavigatorView.scss | 78 +- .../components/navigator/NavigatorView.tsx | 414 +- .../views/NavigatorDoorStateView.tsx | 182 +- .../views/NavigatorRoomCreatorView.tsx | 239 +- .../navigator/views/NavigatorRoomInfoView.tsx | 359 +- .../navigator/views/NavigatorRoomLinkView.tsx | 65 +- .../NavigatorRoomSettingsAccessTabView.tsx | 209 +- .../NavigatorRoomSettingsBasicTabView.tsx | 337 +- .../NavigatorRoomSettingsModTabView.tsx | 215 +- .../NavigatorRoomSettingsRightsTabView.tsx | 152 +- .../NavigatorRoomSettingsView.tsx | 372 +- .../NavigatorRoomSettingsVipChatTabView.tsx | 168 +- .../NavigatorSearchResultItemInfoView.tsx | 160 +- .../search/NavigatorSearchResultItemView.tsx | 239 +- .../search/NavigatorSearchResultView.tsx | 205 +- .../views/search/NavigatorSearchView.tsx | 147 +- .../components/nitropedia/NitropediaView.scss | 88 +- .../components/nitropedia/NitropediaView.tsx | 150 +- .../NotificationCenterView.scss | 86 +- .../NotificationCenterView.tsx | 107 +- .../views/alert-layouts/GetAlertLayout.tsx | 34 +- .../alert-layouts/NitroSystemAlertView.tsx | 81 +- .../NotificationDefaultAlertView.tsx | 106 +- .../NotificationSearchAlertView.tsx | 104 +- .../views/bubble-layouts/GetBubbleLayout.tsx | 28 +- .../NotificationClubGiftBubbleView.tsx | 47 +- .../NotificationDefaultBubbleView.tsx | 46 +- .../confirm-layouts/GetConfirmLayout.tsx | 22 +- .../NotificationDefaultConfirmView.tsx | 67 +- .../src/components/purse/PurseView.scss | 40 +- .../src/components/purse/PurseView.tsx | 145 +- .../components/purse/views/CurrencyView.tsx | 61 +- .../components/purse/views/SeasonalView.tsx | 39 +- .../components/right-side/RightSideView.scss | 16 +- .../components/right-side/RightSideView.tsx | 46 +- .../src/components/room/RoomView.scss | 4 +- .../frontend/src/components/room/RoomView.tsx | 72 +- .../room/spectator/RoomSpectatorView.scss | 17 +- .../room/spectator/RoomSpectatorView.tsx | 9 +- .../components/room/widgets/RoomWidgets.scss | 158 +- .../room/widgets/RoomWidgetsView.tsx | 324 +- .../AvatarInfoPetTrainingPanelView.tsx | 102 +- .../AvatarInfoRentableBotChatView.tsx | 136 +- .../AvatarInfoUseProductConfirmView.tsx | 544 +- .../avatar-info/AvatarInfoUseProductView.tsx | 239 +- .../avatar-info/AvatarInfoWidgetView.scss | 236 +- .../avatar-info/AvatarInfoWidgetView.tsx | 264 +- .../infostand/InfoStandWidgetBotView.tsx | 102 +- .../infostand/InfoStandWidgetFurniView.tsx | 927 +-- .../infostand/InfoStandWidgetPetView.tsx | 440 +- .../InfoStandWidgetRentableBotView.tsx | 156 +- ...nfoStandWidgetUserRelationshipItemView.tsx | 50 +- .../InfoStandWidgetUserRelationshipsView.tsx | 44 +- .../infostand/InfoStandWidgetUserTagsView.tsx | 54 +- .../infostand/InfoStandWidgetUserView.tsx | 388 +- .../menu/AvatarInfoWidgetAvatarView.tsx | 691 +- .../menu/AvatarInfoWidgetDecorateView.tsx | 49 +- .../menu/AvatarInfoWidgetFurniView.tsx | 118 +- .../menu/AvatarInfoWidgetNameView.tsx | 51 +- .../menu/AvatarInfoWidgetOwnAvatarView.tsx | 524 +- .../menu/AvatarInfoWidgetOwnPetView.tsx | 378 +- .../menu/AvatarInfoWidgetPetView.tsx | 236 +- .../menu/AvatarInfoWidgetRentableBotView.tsx | 391 +- .../chat-input/ChatInputStyleSelectorView.tsx | 110 +- .../widgets/chat-input/ChatInputView.scss | 140 +- .../room/widgets/chat-input/ChatInputView.tsx | 424 +- .../widgets/chat/ChatWidgetMessageView.tsx | 153 +- .../room/widgets/chat/ChatWidgetView.scss | 1566 ++-- .../room/widgets/chat/ChatWidgetView.tsx | 258 +- .../widgets/choosers/ChooserWidgetView.scss | 4 +- .../widgets/choosers/ChooserWidgetView.tsx | 96 +- .../choosers/FurniChooserWidgetView.tsx | 48 +- .../choosers/UserChooserWidgetView.tsx | 48 +- .../widgets/context-menu/ContextMenu.scss | 225 +- .../context-menu/ContextMenuCaretView.tsx | 38 +- .../context-menu/ContextMenuHeaderView.tsx | 25 +- .../context-menu/ContextMenuListItemView.tsx | 41 +- .../context-menu/ContextMenuListView.tsx | 25 +- .../widgets/context-menu/ContextMenuView.tsx | 241 +- .../widgets/doorbell/DoorbellWidgetView.tsx | 94 +- .../FriendRequestDialogView.scss | 4 +- .../FriendRequestDialogView.tsx | 63 +- .../FriendRequestWidgetView.tsx | 36 +- .../FurnitureBackgroundColorView.tsx | 59 +- .../furniture/FurnitureBadgeDisplayView.tsx | 18 +- .../furniture/FurnitureCraftingView.tsx | 255 +- .../widgets/furniture/FurnitureDimmerView.tsx | 214 +- .../furniture/FurnitureExchangeCreditView.tsx | 60 +- .../furniture/FurnitureExternalImageView.tsx | 50 +- .../furniture/FurnitureFriendFurniView.tsx | 123 +- .../furniture/FurnitureGiftOpeningView.tsx | 158 +- .../furniture/FurnitureHighScoreView.tsx | 119 +- .../furniture/FurnitureInternalLinkView.tsx | 14 +- .../furniture/FurnitureMannequinView.tsx | 258 +- .../FurnitureMysteryBoxOpenDialogView.tsx | 145 +- .../FurnitureMysteryTrophyOpenDialogView.tsx | 98 +- .../furniture/FurnitureRoomLinkView.tsx | 14 +- .../furniture/FurnitureSpamWallPostItView.tsx | 84 +- .../furniture/FurnitureStackHeightView.tsx | 103 +- .../furniture/FurnitureStickieView.tsx | 129 +- .../widgets/furniture/FurnitureTrophyView.tsx | 18 +- .../widgets/furniture/FurnitureWidgets.scss | 840 +-- .../furniture/FurnitureWidgetsView.tsx | 94 +- .../furniture/FurnitureYoutubeDisplayView.tsx | 207 +- .../context-menu/EffectBoxConfirmView.tsx | 72 +- .../context-menu/FurnitureContextMenuView.tsx | 277 +- .../MonsterPlantSeedConfirmView.tsx | 141 +- .../PurchasableClothingConfirmView.tsx | 180 +- .../playlist-editor/DiskInventoryView.tsx | 167 +- .../FurniturePlaylistEditorWidgetView.tsx | 67 +- .../playlist-editor/SongPlaylistView.tsx | 154 +- .../mysterybox/MysteryBoxExtensionView.scss | 85 +- .../mysterybox/MysteryBoxExtensionView.tsx | 117 +- .../object-location/ObjectLocationView.tsx | 97 +- .../pet-package/PetPackageWidgetView.scss | 188 +- .../pet-package/PetPackageWidgetView.tsx | 104 +- .../RoomFilterWordsWidgetView.tsx | 129 +- .../room-promotes/RoomPromotesWidgetView.tsx | 101 +- .../views/RoomPromoteEditWidgetView.tsx | 94 +- .../views/RoomPromoteMyOwnEventWidgetView.tsx | 61 +- .../views/RoomPromoteOtherEventWidgetView.tsx | 52 +- .../room/widgets/room-promotes/views/index.ts | 6 +- .../RoomThumbnailWidgetView.tsx | 62 +- .../room-tools/RoomToolsWidgetView.tsx | 189 +- .../user-location/UserLocationView.tsx | 33 +- .../word-quiz/WordQuizQuestionView.tsx | 85 +- .../widgets/word-quiz/WordQuizVoteView.tsx | 39 +- .../widgets/word-quiz/WordQuizWidgetView.tsx | 40 +- .../src/components/toolbar/ToolbarMeView.tsx | 85 +- .../src/components/toolbar/ToolbarView.scss | 124 +- .../src/components/toolbar/ToolbarView.tsx | 193 +- .../user-profile/UserProfileVew.scss | 115 +- .../user-profile/UserProfileView.tsx | 218 +- .../views/BadgesContainerView.tsx | 42 +- .../views/FriendsContainerView.tsx | 49 +- .../views/GroupsContainerView.tsx | 150 +- .../views/RelationshipsContainerView.tsx | 107 +- .../user-profile/views/UserContainerView.tsx | 130 +- .../user-settings/UserSettingsView.tsx | 392 +- .../src/components/wired/WiredView.scss | 297 +- .../src/components/wired/WiredView.tsx | 32 +- .../components/wired/views/WiredBaseView.tsx | 205 +- .../wired/views/WiredFurniSelectorView.tsx | 32 +- .../views/actions/WiredActionBaseView.tsx | 65 +- .../WiredActionBotChangeFigureView.tsx | 61 +- .../WiredActionBotFollowAvatarView.tsx | 76 +- .../WiredActionBotGiveHandItemView.tsx | 76 +- .../views/actions/WiredActionBotMoveView.tsx | 45 +- .../WiredActionBotTalkToAvatarView.tsx | 100 +- .../views/actions/WiredActionBotTalkView.tsx | 100 +- .../actions/WiredActionBotTeleportView.tsx | 45 +- .../WiredActionCallAnotherStackView.tsx | 14 +- .../views/actions/WiredActionChaseView.tsx | 14 +- .../views/actions/WiredActionChatView.tsx | 51 +- .../views/actions/WiredActionFleeView.tsx | 14 +- .../actions/WiredActionGiveRewardView.tsx | 301 +- ...redActionGiveScoreToPredefinedTeamView.tsx | 118 +- .../actions/WiredActionGiveScoreView.tsx | 82 +- .../views/actions/WiredActionJoinTeamView.tsx | 67 +- .../actions/WiredActionKickFromRoomView.tsx | 51 +- .../views/actions/WiredActionLayoutView.tsx | 164 +- .../actions/WiredActionLeaveTeamView.tsx | 14 +- .../WiredActionMoveAndRotateFurniView.tsx | 158 +- .../actions/WiredActionMoveFurniToView.tsx | 139 +- .../actions/WiredActionMoveFurniView.tsx | 194 +- .../views/actions/WiredActionMuteUserView.tsx | 77 +- .../views/actions/WiredActionResetView.tsx | 14 +- .../WiredActionSetFurniStateToView.tsx | 93 +- .../views/actions/WiredActionTeleportView.tsx | 14 +- .../WiredActionToggleFurniStateView.tsx | 14 +- .../WiredConditionActorHasHandItem.tsx | 60 +- .../WiredConditionActorIsGroupMemberView.tsx | 14 +- .../WiredConditionActorIsOnFurniView.tsx | 14 +- .../WiredConditionActorIsTeamMemberView.tsx | 71 +- .../WiredConditionActorIsWearingBadgeView.tsx | 47 +- ...WiredConditionActorIsWearingEffectView.tsx | 47 +- .../conditions/WiredConditionBaseView.tsx | 37 +- .../WiredConditionDateRangeView.tsx | 92 +- .../WiredConditionFurniHasAvatarOnView.tsx | 14 +- .../WiredConditionFurniHasFurniOnView.tsx | 69 +- .../WiredConditionFurniHasNotFurniOnView.tsx | 69 +- .../WiredConditionFurniIsOfTypeView.tsx | 14 +- ...WiredConditionFurniMatchesSnapshotView.tsx | 95 +- .../conditions/WiredConditionLayoutView.tsx | 122 +- .../WiredConditionTimeElapsedLessView.tsx | 54 +- .../WiredConditionTimeElapsedMoreView.tsx | 54 +- .../WiredConditionUserCountInRoomView.tsx | 84 +- .../WiredTriggerAvatarEnterRoomView.tsx | 68 +- .../WiredTriggerAvatarSaysSomethingView.tsx | 94 +- .../WiredTriggerAvatarWalksOffFurniView.tsx | 14 +- .../WiredTriggerAvatarWalksOnFurni.tsx | 14 +- .../views/triggers/WiredTriggerBaseView.tsx | 37 +- .../WiredTriggerBotReachedAvatarView.tsx | 47 +- .../WiredTriggerBotReachedStuffView.tsx | 47 +- .../triggers/WiredTriggerCollisionView.tsx | 14 +- .../triggers/WiredTriggerExecuteOnceView.tsx | 52 +- ...iredTriggerExecutePeriodicallyLongView.tsx | 54 +- .../WiredTriggerExecutePeriodicallyView.tsx | 52 +- .../triggers/WiredTriggerGameEndsView.tsx | 14 +- .../triggers/WiredTriggerGameStartsView.tsx | 14 +- .../views/triggers/WiredTriggerLayoutView.tsx | 98 +- .../WiredTriggerScoreAchievedView.tsx | 52 +- .../triggers/WiredTriggerToggleFurniView.tsx | 14 +- .../src/events/catalog/CatalogEvent.ts | 23 +- .../events/catalog/CatalogInitGiftEvent.ts | 45 +- .../CatalogPostMarketplaceOfferEvent.ts | 29 +- .../catalog/CatalogPurchaseFailureEvent.ts | 25 +- .../catalog/CatalogPurchaseNotAllowedEvent.ts | 25 +- .../catalog/CatalogPurchaseOverrideEvent.ts | 26 +- .../catalog/CatalogPurchaseSoldOutEvent.ts | 14 +- .../events/catalog/CatalogPurchasedEvent.ts | 25 +- .../CatalogSetRoomPreviewerStuffDataEvent.ts | 26 +- .../src/events/catalog/CatalogWidgetEvent.ts | 47 +- .../catalog/SetRoomPreviewerStuffDataEvent.ts | 39 +- apps/frontend/src/events/catalog/index.ts | 22 +- .../src/events/guide-tool/GuideToolEvent.ts | 15 +- apps/frontend/src/events/guide-tool/index.ts | 2 +- .../src/events/help/HelpNameChangeEvent.ts | 7 +- apps/frontend/src/events/help/index.ts | 2 +- apps/frontend/src/events/index.ts | 12 +- .../inventory/InventoryFurniAddedEvent.ts | 17 +- apps/frontend/src/events/inventory/index.ts | 2 +- .../frontend/src/events/room-widgets/index.ts | 2 +- .../thumbnail/RoomWidgetThumbnailEvent.ts | 11 +- .../events/room-widgets/thumbnail/index.ts | 2 +- apps/frontend/src/hooks/UseMountEffect.tsx | 3 +- apps/frontend/src/hooks/achievements/index.ts | 2 +- .../src/hooks/achievements/useAchievements.ts | 279 +- apps/frontend/src/hooks/camera/index.ts | 2 +- apps/frontend/src/hooks/camera/useCamera.ts | 62 +- apps/frontend/src/hooks/catalog/index.ts | 6 +- apps/frontend/src/hooks/catalog/useCatalog.ts | 1911 ++--- .../catalog/useCatalogPlaceMultipleItems.ts | 7 +- .../useCatalogSkipPurchaseConfirmation.ts | 7 +- apps/frontend/src/hooks/chat-history/index.ts | 2 +- .../src/hooks/chat-history/useChatHistory.ts | 176 +- apps/frontend/src/hooks/events/core/index.ts | 4 +- .../events/core/useCommunicationEvent.tsx | 10 +- .../events/core/useConfigurationEvent.tsx | 10 +- apps/frontend/src/hooks/events/index.ts | 10 +- apps/frontend/src/hooks/events/nitro/index.ts | 16 +- .../src/hooks/events/nitro/useAvatarEvent.tsx | 10 +- .../src/hooks/events/nitro/useCameraEvent.tsx | 10 +- .../events/nitro/useLocalizationEvent.tsx | 10 +- .../src/hooks/events/nitro/useMainEvent.tsx | 10 +- .../hooks/events/nitro/useRoomEngineEvent.tsx | 10 +- .../nitro/useRoomSessionManagerEvent.tsx | 10 +- .../nitro/useSessionDataManagerEvent.tsx | 10 +- .../src/hooks/events/nitro/useSoundEvent.tsx | 10 +- .../src/hooks/events/useEventDispatcher.tsx | 52 +- .../src/hooks/events/useMessageEvent.tsx | 29 +- apps/frontend/src/hooks/events/useUiEvent.tsx | 10 +- apps/frontend/src/hooks/friends/index.ts | 4 +- apps/frontend/src/hooks/friends/useFriends.ts | 432 +- .../src/hooks/friends/useMessenger.ts | 352 +- apps/frontend/src/hooks/game-center/index.ts | 2 +- .../src/hooks/game-center/useGameCenter.ts | 132 +- apps/frontend/src/hooks/groups/index.ts | 2 +- apps/frontend/src/hooks/groups/useGroup.ts | 81 +- apps/frontend/src/hooks/help/index.ts | 2 +- apps/frontend/src/hooks/help/useHelp.ts | 257 +- apps/frontend/src/hooks/index.ts | 44 +- apps/frontend/src/hooks/inventory/index.ts | 12 +- .../src/hooks/inventory/useInventoryBadges.ts | 207 +- .../src/hooks/inventory/useInventoryBots.ts | 269 +- .../src/hooks/inventory/useInventoryFurni.ts | 525 +- .../src/hooks/inventory/useInventoryPets.ts | 135 +- .../src/hooks/inventory/useInventoryTrade.ts | 517 +- .../inventory/useInventoryUnseenTracker.ts | 215 +- apps/frontend/src/hooks/mod-tools/index.ts | 2 +- .../src/hooks/mod-tools/useModTools.ts | 351 +- apps/frontend/src/hooks/navigator/index.ts | 2 +- .../src/hooks/navigator/useNavigator.ts | 762 +- apps/frontend/src/hooks/notification/index.ts | 2 +- .../src/hooks/notification/useNotification.ts | 928 ++- apps/frontend/src/hooks/purse/index.ts | 2 +- apps/frontend/src/hooks/purse/usePurse.ts | 171 +- apps/frontend/src/hooks/rooms/engine/index.ts | 18 +- .../hooks/rooms/engine/useFurniAddedEvent.ts | 28 +- .../rooms/engine/useFurniRemovedEvent.ts | 28 +- .../rooms/engine/useObjectDeselectedEvent.ts | 11 +- .../engine/useObjectDoubleClickedEvent.ts | 11 +- .../rooms/engine/useObjectRollOutEvent.ts | 11 +- .../rooms/engine/useObjectRollOverEvent.ts | 11 +- .../rooms/engine/useObjectSelectedEvent.ts | 11 +- .../hooks/rooms/engine/useUserAddedEvent.ts | 28 +- .../hooks/rooms/engine/useUserRemovedEvent.ts | 28 +- apps/frontend/src/hooks/rooms/index.ts | 8 +- .../src/hooks/rooms/promotes/index.ts | 2 +- .../hooks/rooms/promotes/useRoomPromote.ts | 31 +- apps/frontend/src/hooks/rooms/useRoom.ts | 536 +- .../hooks/rooms/widgets/furniture/index.ts | 38 +- .../useFurnitureBackgroundColorWidget.ts | 110 +- .../useFurnitureBadgeDisplayWidget.ts | 126 +- .../useFurnitureContextMenuWidget.ts | 336 +- .../furniture/useFurnitureCraftingWidget.ts | 271 +- .../furniture/useFurnitureDimmerWidget.ts | 202 +- .../furniture/useFurnitureExchangeWidget.ts | 68 +- .../useFurnitureExternalImageWidget.ts | 110 +- .../useFurnitureFriendFurniWidget.ts | 120 +- .../furniture/useFurnitureHighScoreWidget.ts | 72 +- .../useFurnitureInternalLinkWidget.ts | 35 +- .../furniture/useFurnitureMannequinWidget.ts | 123 +- .../useFurniturePlaylistEditorWidget.ts | 202 +- .../furniture/useFurniturePresentWidget.ts | 401 +- .../furniture/useFurnitureRoomLinkWidget.ts | 60 +- .../useFurnitureSpamWallPostItWidget.ts | 99 +- .../useFurnitureStackHeightWidget.ts | 104 +- .../furniture/useFurnitureStickieWidget.ts | 144 +- .../furniture/useFurnitureTrophyWidget.ts | 91 +- .../furniture/useFurnitureYoutubeWidget.ts | 216 +- .../frontend/src/hooks/rooms/widgets/index.ts | 24 +- .../rooms/widgets/useAvatarInfoWidget.ts | 535 +- .../hooks/rooms/widgets/useChatInputWidget.ts | 490 +- .../src/hooks/rooms/widgets/useChatWidget.ts | 452 +- .../hooks/rooms/widgets/useDoorbellWidget.ts | 57 +- .../rooms/widgets/useFilterWordsWidget.ts | 31 +- .../rooms/widgets/useFriendRequestWidget.ts | 137 +- .../rooms/widgets/useFurniChooserWidget.ts | 192 +- .../rooms/widgets/usePetPackageWidget.ts | 121 +- .../src/hooks/rooms/widgets/usePollWidget.ts | 69 +- .../rooms/widgets/useUserChooserWidget.ts | 105 +- .../hooks/rooms/widgets/useWordQuizWidget.ts | 230 +- apps/frontend/src/hooks/session/index.ts | 2 +- .../src/hooks/session/useSessionInfo.ts | 155 +- apps/frontend/src/hooks/useLocalStorage.ts | 62 +- .../frontend/src/hooks/useSharedVisibility.ts | 55 +- apps/frontend/src/hooks/wired/index.ts | 2 +- apps/frontend/src/hooks/wired/useWired.ts | 221 +- apps/frontend/src/index.scss | 32 +- apps/frontend/src/index.tsx | 9 +- .../frontend/src/workers/IntervalWebWorker.ts | 38 +- apps/frontend/src/workers/WorkerBuilder.ts | 14 +- apps/frontend/tsconfig.app.json | 5 +- apps/frontend/tsconfig.spec.json | 5 +- apps/frontend/vite.config.ts | 28 +- libs/renderer/index.ts | 2 +- libs/renderer/src/api/INitroCore.ts | 13 +- libs/renderer/src/api/asset/AssetManager.ts | 321 +- .../renderer/src/api/asset/GetAssetManager.ts | 2 +- libs/renderer/src/api/asset/GraphicAsset.ts | 221 +- .../src/api/asset/GraphicAssetCollection.ts | 734 +- .../api/asset/GraphicAssetGifCollection.ts | 12 +- .../src/api/asset/GraphicAssetPalette.ts | 92 +- libs/renderer/src/api/asset/IAsset.ts | 15 +- libs/renderer/src/api/asset/IAssetAlias.ts | 9 +- libs/renderer/src/api/asset/IAssetData.ts | 40 +- libs/renderer/src/api/asset/IAssetManager.ts | 29 +- libs/renderer/src/api/asset/IAssetPalette.ts | 21 +- libs/renderer/src/api/asset/IGraphicAsset.ts | 33 +- .../src/api/asset/IGraphicAssetCollection.ts | 46 +- .../api/asset/IGraphicAssetGifCollection.ts | 11 +- .../src/api/asset/IGraphicAssetPalette.ts | 13 +- .../api/asset/animation/IAssetAnimation.ts | 41 +- .../api/asset/animation/IAssetAnimationAdd.ts | 13 +- .../asset/animation/IAssetAnimationAvatar.ts | 9 +- .../animation/IAssetAnimationDirection.ts | 5 +- .../asset/animation/IAssetAnimationFrame.ts | 11 +- .../animation/IAssetAnimationFramePart.ts | 23 +- .../animation/IAssetAnimationFramePartItem.ts | 7 +- .../animation/IAssetAnimationOverride.ts | 11 +- .../asset/animation/IAssetAnimationRemove.ts | 5 +- .../asset/animation/IAssetAnimationShadow.ts | 5 +- .../asset/animation/IAssetAnimationSprite.ts | 17 +- .../IAssetAnimationSpriteDirection.ts | 11 +- .../renderer/src/api/asset/animation/index.ts | 24 +- libs/renderer/src/api/asset/index.ts | 52 +- .../api/asset/logic/IAssetLogicCustomVars.ts | 5 +- .../src/api/asset/logic/IAssetLogicData.ts | 29 +- .../asset/logic/IAssetLogicPlanetSystem.ts | 19 +- .../src/api/asset/logic/ISoundSample.ts | 7 +- libs/renderer/src/api/asset/logic/index.ts | 12 +- .../api/asset/logic/model/IAssetDimension.ts | 11 +- .../api/asset/logic/model/IAssetLogicModel.ts | 9 +- .../src/api/asset/logic/model/index.ts | 4 +- .../logic/particlesystem/IParticleSystem.ts | 17 +- .../particlesystem/IParticleSystemEmitter.ts | 25 +- .../particlesystem/IParticleSystemParticle.ts | 11 +- .../IParticleSystemSimulation.ts | 15 +- .../api/asset/logic/particlesystem/index.ts | 8 +- .../asset/room-visualization/IAssetPlane.ts | 11 +- .../room-visualization/IAssetPlaneMask.ts | 9 +- .../room-visualization/IAssetPlaneMaskData.ts | 7 +- .../IAssetPlaneMaskVisualization.ts | 9 +- .../room-visualization/IAssetPlaneMaterial.ts | 9 +- .../IAssetPlaneMaterialCell.ts | 9 +- .../IAssetPlaneMaterialCellColumn.ts | 11 +- .../IAssetPlaneMaterialCellExtraItemData.ts | 9 +- .../IAssetPlaneMaterialCellMatrix.ts | 19 +- .../room-visualization/IAssetPlaneTexture.ts | 9 +- .../IAssetPlaneTextureBitmap.ts | 13 +- .../IAssetPlaneVisualization.ts | 15 +- .../IAssetPlaneVisualizationAnimatedLayer.ts | 7 +- ...ssetPlaneVisualizationAnimatedLayerItem.ts | 19 +- .../IAssetPlaneVisualizationData.ts | 15 +- .../IAssetPlaneVisualizationLayer.ts | 11 +- .../IAssetRoomVisualizationData.ts | 15 +- .../src/api/asset/room-visualization/index.ts | 34 +- .../api/asset/spritesheet/ISpritesheetData.ts | 10 +- .../asset/spritesheet/ISpritesheetFrame.ts | 47 +- .../api/asset/spritesheet/ISpritesheetMeta.ts | 21 +- .../src/api/asset/spritesheet/index.ts | 6 +- .../visualization/IAssetVisualizationData.ts | 35 +- .../IAssetVisualizationDirection.ts | 7 +- .../visualization/IAssetVisualizationLayer.ts | 19 +- .../animation/IAssetVisualAnimation.ts | 15 +- .../animation/IAssetVisualAnimationLayer.ts | 13 +- .../IAssetVisualAnimationSequence.ts | 11 +- .../IAssetVisualAnimationSequenceFrame.ts | 17 +- ...AssetVisualAnimationSequenceFrameOffset.ts | 9 +- .../asset/visualization/animation/index.ts | 10 +- .../asset/visualization/color/IAssetColor.ts | 7 +- .../visualization/color/IAssetColorLayer.ts | 5 +- .../api/asset/visualization/color/index.ts | 4 +- .../visualization/gestures/IAssetGesture.ts | 7 +- .../api/asset/visualization/gestures/index.ts | 2 +- .../src/api/asset/visualization/index.ts | 14 +- .../visualization/postures/IAssetPosture.ts | 7 +- .../api/asset/visualization/postures/index.ts | 2 +- libs/renderer/src/api/common/IDisposable.ts | 9 +- .../src/api/common/IEventDispatcher.ts | 15 +- .../src/api/common/ILinkEventTracker.ts | 9 +- libs/renderer/src/api/common/INitroEvent.ts | 5 +- libs/renderer/src/api/common/INitroManager.ts | 15 +- .../src/api/common/IUpdateReceiver.ts | 7 +- libs/renderer/src/api/common/NitroLogger.ts | 65 +- libs/renderer/src/api/common/index.ts | 14 +- libs/renderer/src/api/communication/ICodec.ts | 13 +- .../communication/ICommunicationManager.ts | 11 +- .../src/api/communication/IConnection.ts | 33 +- .../communication/IConnectionStateListener.ts | 7 +- .../src/api/communication/IMessageComposer.ts | 9 +- .../communication/IMessageConfiguration.ts | 9 +- .../api/communication/IMessageDataWrapper.ts | 25 +- .../src/api/communication/IMessageEvent.ts | 17 +- .../src/api/communication/IMessageParser.ts | 11 +- .../enums/ClientDeviceCategoryEnum.ts | 9 +- .../communication/enums/ClientPlatformEnum.ts | 12 +- .../communication/enums/WebSocketEventEnum.ts | 13 +- .../src/api/communication/enums/index.ts | 6 +- libs/renderer/src/api/communication/index.ts | 20 +- .../configuration/IConfigurationManager.ts | 4 +- .../api/configuration/NitroConfiguration.ts | 166 +- libs/renderer/src/api/configuration/index.ts | 4 +- libs/renderer/src/api/index.ts | 96 +- .../avatar/IAvatarAssetDownloadLibrary.ts | 11 +- .../api/nitro/avatar/IAvatarEffectListener.ts | 7 +- .../nitro/avatar/IAvatarFigureContainer.ts | 17 +- .../src/api/nitro/avatar/IAvatarImage.ts | 68 +- .../api/nitro/avatar/IAvatarImageListener.ts | 7 +- .../api/nitro/avatar/IAvatarRenderManager.ts | 47 +- .../avatar/IEffectAssetDownloadLibrary.ts | 15 +- libs/renderer/src/api/nitro/avatar/IOutfit.ts | 9 +- .../nitro/avatar/actions/IActionDefinition.ts | 35 +- .../nitro/avatar/actions/IActiveActionData.ts | 17 +- .../src/api/nitro/avatar/actions/index.ts | 4 +- .../api/nitro/avatar/animation/IAnimation.ts | 19 +- .../avatar/animation/IAnimationLayerData.ts | 19 +- .../avatar/animation/IAnimationManager.ts | 13 +- .../avatar/animation/IAvatarDataContainer.ts | 19 +- .../avatar/animation/ISpriteDataContainer.ts | 23 +- .../src/api/nitro/avatar/animation/index.ts | 10 +- .../src/api/nitro/avatar/enum/AvatarAction.ts | 242 +- .../nitro/avatar/enum/AvatarDirectionAngle.ts | 13 +- .../avatar/enum/AvatarEditorFigureCategory.ts | 19 +- .../avatar/enum/AvatarEditorInstanceId.ts | 11 +- .../avatar/enum/AvatarEditorSideCategory.ts | 9 +- .../nitro/avatar/enum/AvatarFigurePartType.ts | 69 +- .../nitro/avatar/enum/AvatarGuideStatus.ts | 11 +- .../api/nitro/avatar/enum/AvatarScaleType.ts | 9 +- .../api/nitro/avatar/enum/AvatarSetType.ts | 11 +- .../src/api/nitro/avatar/enum/GeometryType.ts | 15 +- .../src/api/nitro/avatar/enum/RenderMode.ts | 13 +- .../src/api/nitro/avatar/enum/index.ts | 22 +- .../nitro/avatar/figuredata/IFigureData.ts | 11 +- .../avatar/figuredata/IFigureDataColor.ts | 13 +- .../figuredata/IFigureDataHiddenLayer.ts | 5 +- .../avatar/figuredata/IFigureDataPalette.ts | 9 +- .../avatar/figuredata/IFigureDataPart.ts | 13 +- .../nitro/avatar/figuredata/IFigureDataSet.ts | 25 +- .../avatar/figuredata/IFigureDataSetType.ts | 19 +- .../src/api/nitro/avatar/figuredata/index.ts | 14 +- libs/renderer/src/api/nitro/avatar/index.ts | 28 +- .../api/nitro/avatar/pet/IPetCustomPart.ts | 9 +- .../src/api/nitro/avatar/pet/PetType.ts | 75 +- .../src/api/nitro/avatar/pet/index.ts | 4 +- .../api/nitro/avatar/structure/IFigurePart.ts | 15 +- .../nitro/avatar/structure/IFigurePartSet.ts | 27 +- .../nitro/avatar/structure/IFigureSetData.ts | 9 +- .../api/nitro/avatar/structure/IPalette.ts | 13 +- .../api/nitro/avatar/structure/IPartColor.ts | 13 +- .../api/nitro/avatar/structure/ISetType.ts | 19 +- .../nitro/avatar/structure/IStructureData.ts | 19 +- .../src/api/nitro/avatar/structure/index.ts | 14 +- .../nitro/camera/IRoomCameraWidgetEffect.ts | 17 +- .../nitro/camera/IRoomCameraWidgetManager.ts | 22 +- .../camera/IRoomCameraWidgetSelectedEffect.ts | 9 +- libs/renderer/src/api/nitro/camera/index.ts | 6 +- .../communication/INitroCommunicationDemo.ts | 4 +- .../INitroCommunicationManager.ts | 17 +- .../src/api/nitro/communication/index.ts | 4 +- .../api/nitro/enums/RelationshipStatusEnum.ts | 17 +- .../src/api/nitro/enums/ToolbarIconEnum.ts | 19 +- libs/renderer/src/api/nitro/enums/index.ts | 4 +- libs/renderer/src/api/nitro/index.ts | 40 +- .../localization/INitroLocalizationManager.ts | 29 +- .../src/api/nitro/localization/index.ts | 2 +- .../src/api/nitro/room/IGetImageListener.ts | 9 +- .../src/api/nitro/room/IImageResult.ts | 13 +- .../src/api/nitro/room/IPetColorResult.ts | 17 +- .../api/nitro/room/IRoomContentListener.ts | 7 +- .../src/api/nitro/room/IRoomContentLoader.ts | 64 +- .../src/api/nitro/room/IRoomCreator.ts | 155 +- .../src/api/nitro/room/IRoomEngine.ts | 335 +- .../src/api/nitro/room/IRoomEngineServices.ts | 143 +- .../api/nitro/room/IRoomObjectEventManager.ts | 7 +- .../api/nitro/room/ISelectedRoomObjectData.ts | 31 +- .../enums/FriendFurniEngravingWidgetType.ts | 13 +- .../room/enums/RoomObjectPlacementSource.ts | 7 +- .../src/api/nitro/room/enums/index.ts | 4 +- libs/renderer/src/api/nitro/room/index.ts | 30 +- .../api/nitro/room/object/IPetFigureData.ts | 17 +- .../src/api/nitro/room/object/IRoomMapData.ts | 25 +- .../nitro/room/object/RoomObjectCategory.ts | 17 +- .../nitro/room/object/RoomObjectLogicType.ts | 147 +- .../room/object/RoomObjectOperationType.ts | 29 +- .../api/nitro/room/object/RoomObjectType.ts | 13 +- .../nitro/room/object/RoomObjectUserType.ts | 64 +- .../nitro/room/object/RoomObjectVariable.ts | 287 +- .../object/RoomObjectVisualizationType.ts | 77 +- .../api/nitro/room/object/data/IObjectData.ts | 29 +- .../nitro/room/object/data/ObjectDataBase.ts | 143 +- .../room/object/data/ObjectDataFactory.ts | 77 +- .../nitro/room/object/data/ObjectDataFlags.ts | 7 +- .../nitro/room/object/data/ObjectDataKey.ts | 21 +- .../src/api/nitro/room/object/data/index.ts | 12 +- .../object/data/type/CrackableDataType.ts | 107 +- .../room/object/data/type/EmptyDataType.ts | 53 +- .../room/object/data/type/HighScoreData.ts | 53 +- .../object/data/type/HighScoreDataType.ts | 192 +- .../room/object/data/type/LegacyDataType.ts | 80 +- .../room/object/data/type/MapDataType.ts | 117 +- .../room/object/data/type/NumberDataType.ts | 146 +- .../room/object/data/type/StringDataType.ts | 147 +- .../room/object/data/type/VoteDataType.ts | 90 +- .../api/nitro/room/object/data/type/index.ts | 18 +- .../src/api/nitro/room/object/index.ts | 22 +- .../room/utils/IFurnitureStackingHeightMap.ts | 30 +- .../nitro/room/utils/ILegacyWallGeometry.ts | 31 +- .../api/nitro/room/utils/ITileObjectMap.ts | 17 +- .../src/api/nitro/room/utils/ObjectRolling.ts | 58 +- .../src/api/nitro/room/utils/index.ts | 8 +- .../src/api/nitro/session/FurnitureType.ts | 19 +- .../src/api/nitro/session/IFurnitureData.ts | 63 +- .../nitro/session/IFurnitureDataListener.ts | 7 +- .../nitro/session/IGroupInformationManager.ts | 9 +- .../api/nitro/session/IIgnoredUsersManager.ts | 15 +- .../src/api/nitro/session/IPollChoice.ts | 9 +- .../src/api/nitro/session/IPollQuestion.ts | 23 +- .../src/api/nitro/session/IProductData.ts | 9 +- .../api/nitro/session/IProductDataListener.ts | 7 +- .../src/api/nitro/session/IQuestion.ts | 21 +- .../api/nitro/session/IRoomHandlerListener.ts | 15 +- .../nitro/session/IRoomModerationSettings.ts | 9 +- .../src/api/nitro/session/IRoomPetData.ts | 57 +- .../src/api/nitro/session/IRoomSession.ts | 129 +- .../api/nitro/session/IRoomSessionManager.ts | 21 +- .../src/api/nitro/session/IRoomUserData.ts | 49 +- .../api/nitro/session/ISessionDataManager.ts | 112 +- .../src/api/nitro/session/IUserDataManager.ts | 47 +- .../nitro/session/enum/GenericErrorEnum.ts | 7 +- .../nitro/session/enum/NoobnessLevelEnum.ts | 9 +- .../nitro/session/enum/RoomControllerLevel.ts | 17 +- .../session/enum/RoomTradingLevelEnum.ts | 34 +- .../api/nitro/session/enum/SecurityLevel.ts | 25 +- .../src/api/nitro/session/enum/index.ts | 10 +- libs/renderer/src/api/nitro/session/index.ts | 38 +- .../src/api/nitro/sound/IMusicController.ts | 45 +- .../api/nitro/sound/IPlaylistController.ts | 25 +- .../src/api/nitro/sound/ISoundManager.ts | 11 +- .../src/api/nitro/sound/common/ISongInfo.ts | 21 +- .../src/api/nitro/sound/common/index.ts | 2 +- libs/renderer/src/api/nitro/sound/index.ts | 8 +- .../src/api/room/IPetBreedingResultData.ts | 17 +- libs/renderer/src/api/room/IRoomGeometry.ts | 38 +- libs/renderer/src/api/room/IRoomInstance.ts | 49 +- .../src/api/room/IRoomInstanceContainer.ts | 11 +- libs/renderer/src/api/room/IRoomManager.ts | 31 +- .../src/api/room/IRoomManagerListener.ts | 11 +- .../src/api/room/IRoomObjectManager.ts | 23 +- .../src/api/room/IRoomObjectUpdateMessage.ts | 9 +- .../src/api/room/IRoomSpriteMouseEvent.ts | 31 +- libs/renderer/src/api/room/IVector3D.ts | 17 +- .../src/api/room/RoomObjectSpriteData.ts | 33 +- libs/renderer/src/api/room/Vector3d.ts | 338 +- libs/renderer/src/api/room/index.ts | 34 +- .../src/api/room/object/IRoomObject.ts | 39 +- .../api/room/object/IRoomObjectController.ts | 31 +- .../src/api/room/object/IRoomObjectModel.ts | 15 +- .../room/object/IRoomObjectModelController.ts | 17 +- .../api/room/object/enum/AlphaTolerance.ts | 9 +- .../room/object/enum/RoomObjectSpriteType.ts | 11 +- .../src/api/room/object/enum/index.ts | 4 +- libs/renderer/src/api/room/object/index.ts | 14 +- .../object/logic/IRoomObjectEventHandler.ts | 33 +- .../object/logic/IRoomObjectLogicFactory.ts | 15 +- .../object/logic/IRoomObjectMouseHandler.ts | 9 +- .../src/api/room/object/logic/index.ts | 6 +- .../object/visualization/IPlaneDrawingData.ts | 23 +- .../visualization/IPlaneVisualization.ts | 7 +- .../IRoomObjectGraphicVisualization.ts | 9 +- .../object/visualization/IRoomObjectSprite.ts | 61 +- .../IRoomObjectSpriteVisualization.ts | 19 +- .../visualization/IRoomObjectVisualization.ts | 32 +- .../IRoomObjectVisualizationData.ts | 9 +- .../IRoomObjectVisualizationFactory.ts | 13 +- .../room/object/visualization/IRoomPlane.ts | 21 +- .../object/visualization/ISortableSprite.ts | 15 +- .../api/room/object/visualization/index.ts | 20 +- .../room/renderer/IRoomCanvasMouseListener.ts | 11 +- .../src/api/room/renderer/IRoomRenderer.ts | 15 +- .../api/room/renderer/IRoomRendererBase.ts | 15 +- .../api/room/renderer/IRoomRendererFactory.ts | 9 +- .../api/room/renderer/IRoomRenderingCanvas.ts | 74 +- .../renderer/IRoomSpriteCanvasContainer.ts | 11 +- libs/renderer/src/api/room/renderer/index.ts | 12 +- libs/renderer/src/api/ui/MouseEventType.ts | 21 +- libs/renderer/src/api/ui/TouchEventType.ts | 13 +- libs/renderer/src/api/ui/index.ts | 8 +- .../ui/widget/enums/AvatarExpressionEnum.ts | 42 +- .../api/ui/widget/enums/ContextMenuEnum.ts | 21 +- .../FriendWidgetEngravingWidgetTypeEnum.ts | 13 +- .../src/api/ui/widget/enums/RoomWidgetEnum.ts | 111 +- .../RoomWidgetEnumItemExtradataParameter.ts | 17 +- .../RoomWidgetFurniInfoUsagePolicyEnum.ts | 9 +- .../ui/widget/enums/SystemChatStyleEnum.ts | 11 +- .../renderer/src/api/ui/widget/enums/index.ts | 14 +- libs/renderer/src/api/ui/widget/index.ts | 2 +- libs/renderer/src/api/utils/AdvancedMap.ts | 251 +- .../src/api/utils/ArrayBufferToBase64.ts | 13 +- libs/renderer/src/api/utils/BinaryReader.ts | 105 +- libs/renderer/src/api/utils/BinaryWriter.ts | 177 +- libs/renderer/src/api/utils/Dict.ts | 2 +- libs/renderer/src/api/utils/IAdvancedMap.ts | 39 +- libs/renderer/src/api/utils/IBinaryReader.ts | 21 +- libs/renderer/src/api/utils/IBinaryWriter.ts | 19 +- libs/renderer/src/api/utils/NitroBundle.ts | 98 +- libs/renderer/src/api/utils/index.ts | 18 +- libs/renderer/src/core/NitroCore.ts | 60 +- libs/renderer/src/core/NitroVersion.ts | 46 +- libs/renderer/src/core/common/Disposable.ts | 54 +- .../src/core/common/EventDispatcher.ts | 170 +- libs/renderer/src/core/common/NitroManager.ts | 89 +- libs/renderer/src/core/common/index.ts | 6 +- .../communication/CommunicationManager.ts | 84 +- .../core/communication/SocketConnection.ts | 587 +- .../src/core/communication/codec/Byte.ts | 21 +- .../src/core/communication/codec/Short.ts | 21 +- .../codec/evawire/EvaWireDataWrapper.ts | 104 +- .../codec/evawire/EvaWireFormat.ts | 134 +- .../core/communication/codec/evawire/index.ts | 4 +- .../src/core/communication/codec/index.ts | 6 +- libs/renderer/src/core/communication/index.ts | 10 +- .../messages/MessageClassManager.ts | 205 +- .../src/core/communication/messages/index.ts | 2 +- .../core/configuration/ConfigurationEvent.ts | 16 +- .../configuration/ConfigurationManager.ts | 138 +- libs/renderer/src/core/configuration/index.ts | 4 +- libs/renderer/src/core/index.ts | 16 +- .../renderer/src/events/NitroSettingsEvent.ts | 167 +- libs/renderer/src/events/NitroSoundEvent.ts | 25 +- .../events/NitroToolbarAnimateIconEvent.ts | 49 +- libs/renderer/src/events/NitroToolbarEvent.ts | 48 +- .../avatar/AvatarRenderEffectLibraryEvent.ts | 27 +- .../src/events/avatar/AvatarRenderEvent.ts | 7 +- .../events/avatar/AvatarRenderLibraryEvent.ts | 27 +- libs/renderer/src/events/avatar/index.ts | 6 +- .../camera/RoomCameraWidgetManagerEvent.ts | 14 +- libs/renderer/src/events/camera/index.ts | 2 +- .../NitroCommunicationDemoEvent.ts | 39 +- .../src/events/communication/index.ts | 2 +- libs/renderer/src/events/core/MessageEvent.ts | 81 +- libs/renderer/src/events/core/NitroEvent.ts | 21 +- .../src/events/core/SocketConnectionEvent.ts | 44 +- libs/renderer/src/events/core/index.ts | 6 +- libs/renderer/src/events/index.ts | 22 +- .../localization/NitroLocalizationEvent.ts | 16 +- .../renderer/src/events/localization/index.ts | 2 +- .../events/room/RoomBackgroundColorEvent.ts | 47 +- .../src/events/room/RoomContentLoadedEvent.ts | 29 +- .../renderer/src/events/room/RoomDragEvent.ts | 36 +- .../events/room/RoomEngineDimmerStateEvent.ts | 69 +- .../src/events/room/RoomEngineEvent.ts | 37 +- .../src/events/room/RoomEngineObjectEvent.ts | 60 +- .../room/RoomEngineObjectPlacedEvent.ts | 125 +- .../room/RoomEngineObjectPlacedOnUserEvent.ts | 36 +- .../room/RoomEngineObjectPlaySoundEvent.ts | 38 +- .../src/events/room/RoomEngineRoomAdEvent.ts | 13 +- .../room/RoomEngineSamplePlaybackEvent.ts | 42 +- .../room/RoomEngineTriggerWidgetEvent.ts | 98 +- .../events/room/RoomEngineUseProductEvent.ts | 38 +- .../events/room/RoomObjectBadgeAssetEvent.ts | 38 +- .../events/room/RoomObjectDataRequestEvent.ts | 18 +- .../room/RoomObjectDimmerStateUpdateEvent.ts | 71 +- .../src/events/room/RoomObjectEvent.ts | 43 +- .../events/room/RoomObjectFloorHoleEvent.ts | 18 +- .../room/RoomObjectFurnitureActionEvent.ts | 35 +- .../room/RoomObjectHSLColorEnableEvent.ts | 60 +- .../room/RoomObjectHSLColorEnabledEvent.ts | 60 +- .../src/events/room/RoomObjectMouseEvent.ts | 157 +- .../src/events/room/RoomObjectMoveEvent.ts | 18 +- .../events/room/RoomObjectPlaySoundIdEvent.ts | 40 +- .../src/events/room/RoomObjectRoomAdEvent.ts | 46 +- .../room/RoomObjectSamplePlaybackEvent.ts | 44 +- .../room/RoomObjectSoundMachineEvent.ts | 21 +- .../room/RoomObjectStateChangedEvent.ts | 29 +- .../events/room/RoomObjectTileMouseEvent.ts | 79 +- .../events/room/RoomObjectWallMouseEvent.ts | 100 +- .../room/RoomObjectWidgetRequestEvent.ts | 88 +- .../src/events/room/RoomSpriteMouseEvent.ts | 191 +- .../src/events/room/RoomToObjectEvent.ts | 12 +- .../room/RoomToObjectOwnAvatarMoveEvent.ts | 27 +- .../renderer/src/events/room/RoomZoomEvent.ts | 49 +- libs/renderer/src/events/room/index.ts | 70 +- .../events/session/BadgeImageReadyEvent.ts | 39 +- .../session/MysteryBoxKeysUpdateEvent.ts | 36 +- .../src/events/session/PerksUpdatedEvent.ts | 14 +- .../events/session/RoomSessionChatEvent.ts | 115 +- .../RoomSessionConfirmPetBreedingEvent.ts | 80 +- ...oomSessionConfirmPetBreedingResultEvent.ts | 38 +- .../events/session/RoomSessionDanceEvent.ts | 38 +- .../session/RoomSessionDimmerPresetsEvent.ts | 61 +- ...RoomSessionDimmerPresetsEventPresetItem.ts | 52 +- .../session/RoomSessionDoorbellEvent.ts | 31 +- .../session/RoomSessionErrorMessageEvent.ts | 49 +- .../src/events/session/RoomSessionEvent.ts | 44 +- .../RoomSessionFavoriteGroupUpdateEvent.ts | 60 +- .../session/RoomSessionFriendRequestEvent.ts | 49 +- .../RoomSessionNestBreedingSuccessEvent.ts | 38 +- .../session/RoomSessionPetBreedingEvent.ts | 49 +- .../RoomSessionPetBreedingResultEvent.ts | 38 +- .../RoomSessionPetCommandsUpdateEvent.ts | 49 +- .../RoomSessionPetFigureUpdateEvent.ts | 38 +- .../session/RoomSessionPetInfoUpdateEvent.ts | 27 +- .../session/RoomSessionPetLevelUpdateEvent.ts | 38 +- .../session/RoomSessionPetPackageEvent.ts | 71 +- .../RoomSessionPetStatusUpdateEvent.ts | 71 +- .../events/session/RoomSessionPollEvent.ts | 143 +- .../events/session/RoomSessionPresentEvent.ts | 104 +- .../session/RoomSessionPropertyUpdateEvent.ts | 16 +- .../events/session/RoomSessionQueueEvent.ts | 84 +- .../session/RoomSessionSpectatorModeEvent.ts | 16 +- .../session/RoomSessionUserBadgesEvent.ts | 40 +- .../session/RoomSessionUserDataUpdateEvent.ts | 27 +- .../RoomSessionUserFigureUpdateEvent.ts | 71 +- .../session/RoomSessionUserTagsEvent.ts | 36 +- .../events/session/RoomSessionVoteEvent.ts | 72 +- .../session/RoomSessionWordQuizEvent.ts | 159 +- .../session/SessionDataPreferencesEvent.ts | 25 +- .../src/events/session/UserNameUpdateEvent.ts | 25 +- libs/renderer/src/events/session/index.ts | 72 +- libs/renderer/src/index.ts | 12 +- libs/renderer/src/nitro/INitro.ts | 71 +- libs/renderer/src/nitro/Nitro.ts | 560 +- libs/renderer/src/nitro/Plugins.ts | 37 +- .../avatar/AvatarAssetDownloadLibrary.ts | 104 +- .../avatar/AvatarAssetDownloadManager.ts | 507 +- .../src/nitro/avatar/AvatarFigureContainer.ts | 183 +- libs/renderer/src/nitro/avatar/AvatarImage.ts | 1849 +++-- .../avatar/AvatarImageBodyPartContainer.ts | 136 +- .../nitro/avatar/AvatarImagePartContainer.ts | 213 +- .../src/nitro/avatar/AvatarRenderManager.ts | 749 +- .../src/nitro/avatar/AvatarStructure.ts | 1011 ++- .../avatar/EffectAssetDownloadLibrary.ts | 119 +- .../avatar/EffectAssetDownloadManager.ts | 436 +- .../nitro/avatar/PlaceHolderAvatarImage.ts | 27 +- .../nitro/avatar/actions/ActionDefinition.ts | 317 +- .../src/nitro/avatar/actions/ActionType.ts | 65 +- .../nitro/avatar/actions/ActiveActionData.ts | 106 +- .../avatar/actions/AvatarActionManager.ts | 260 +- .../src/nitro/avatar/actions/index.ts | 8 +- .../src/nitro/avatar/alias/AssetAlias.ts | 54 +- .../avatar/alias/AssetAliasCollection.ts | 147 +- libs/renderer/src/nitro/avatar/alias/index.ts | 4 +- .../avatar/animation/AddDataContainer.ts | 86 +- .../src/nitro/avatar/animation/Animation.ts | 504 +- .../avatar/animation/AnimationManager.ts | 62 +- .../animation/AvatarAnimationLayerData.ts | 165 +- .../avatar/animation/AvatarDataContainer.ts | 235 +- .../animation/DirectionDataContainer.ts | 21 +- .../avatar/animation/SpriteDataContainer.ts | 135 +- .../src/nitro/avatar/animation/index.ts | 14 +- .../avatar/cache/AvatarImageActionCache.ts | 78 +- .../avatar/cache/AvatarImageBodyPartCache.ts | 141 +- .../nitro/avatar/cache/AvatarImageCache.ts | 905 ++- .../avatar/cache/AvatarImageDirectionCache.ts | 75 +- .../src/nitro/avatar/cache/ImageData.ts | 100 +- libs/renderer/src/nitro/avatar/cache/index.ts | 10 +- .../avatar/data/HabboAvatarAnimations.ts | 1622 ++-- .../nitro/avatar/data/HabboAvatarGeometry.ts | 3652 ++++----- .../nitro/avatar/data/HabboAvatarPartSets.ts | 830 +- .../avatar/geometry/AvatarModelGeometry.ts | 455 +- .../src/nitro/avatar/geometry/AvatarSet.ts | 133 +- .../nitro/avatar/geometry/GeometryBodyPart.ts | 286 +- .../src/nitro/avatar/geometry/GeometryItem.ts | 80 +- .../src/nitro/avatar/geometry/Matrix4x4.ts | 228 +- .../src/nitro/avatar/geometry/Node3D.ts | 47 +- .../src/nitro/avatar/geometry/Vector3D.ts | 173 +- .../src/nitro/avatar/geometry/index.ts | 14 +- libs/renderer/src/nitro/avatar/index.ts | 48 +- .../src/nitro/avatar/pets/PetCustomPart.ts | 64 +- .../src/nitro/avatar/pets/PetFigureData.ts | 364 +- libs/renderer/src/nitro/avatar/pets/index.ts | 4 +- .../avatar/structure/AvatarAnimationData.ts | 77 +- .../nitro/avatar/structure/AvatarCanvas.ts | 70 +- .../structure/AvatarStructureDownload.ts | 81 +- .../nitro/avatar/structure/FigureSetData.ts | 182 +- .../nitro/avatar/structure/PartSetsData.ts | 169 +- .../structure/animation/AnimationAction.ts | 203 +- .../animation/AnimationActionPart.ts | 37 +- .../animation/AvatarAnimationFrame.ts | 30 +- .../nitro/avatar/structure/animation/index.ts | 6 +- .../avatar/structure/figure/FigurePart.ts | 83 +- .../avatar/structure/figure/FigurePartSet.ts | 196 +- .../nitro/avatar/structure/figure/Palette.ts | 63 +- .../avatar/structure/figure/PartColor.ts | 67 +- .../nitro/avatar/structure/figure/SetType.ts | 154 +- .../nitro/avatar/structure/figure/index.ts | 10 +- .../src/nitro/avatar/structure/index.ts | 16 +- .../avatar/structure/parts/ActivePartSet.ts | 35 +- .../avatar/structure/parts/PartDefinition.ts | 93 +- .../src/nitro/avatar/structure/parts/index.ts | 4 +- .../nitro/camera/RoomCameraWidgetEffect.ts | 91 +- .../nitro/camera/RoomCameraWidgetManager.ts | 167 +- .../camera/RoomCameraWidgetSelectedEffect.ts | 32 +- libs/renderer/src/nitro/camera/index.ts | 6 +- .../communication/NitroCommunicationDemo.ts | 286 +- .../NitroCommunicationManager.ts | 187 +- .../src/nitro/communication/NitroMessages.ts | 3228 +++++--- .../renderer/src/nitro/communication/index.ts | 8 +- .../messages/incoming/IncomingHeader.ts | 931 ++- .../advertisement/InterstitialMessageEvent.ts | 23 +- .../advertisement/RoomAdErrorEvent.ts | 23 +- .../messages/incoming/advertisement/index.ts | 4 +- .../AvailabilityStatusMessageEvent.ts | 23 +- .../AvailabilityTimeMessageEvent.ts | 23 +- .../availability/HotelClosedAndOpensEvent.ts | 23 +- .../HotelClosesAndWillOpenAtEvent.ts | 23 +- .../HotelWillCloseInMinutesEvent.ts | 23 +- .../MaintenanceStatusMessageEvent.ts | 23 +- .../messages/incoming/availability/index.ts | 12 +- .../ChangeUserNameResultMessageEvent.ts | 39 +- .../avatar/CheckUserNameResultMessageEvent.ts | 23 +- .../incoming/avatar/FigureUpdateEvent.ts | 23 +- .../incoming/avatar/WardrobeMessageEvent.ts | 23 +- .../messages/incoming/avatar/index.ts | 8 +- .../incoming/bots/BotAddedToInventoryEvent.ts | 23 +- .../incoming/bots/BotInventoryMessageEvent.ts | 23 +- .../incoming/bots/BotReceivedMessageEvent.ts | 23 +- .../bots/BotRemovedFromInventoryEvent.ts | 23 +- .../messages/incoming/bots/index.ts | 8 +- .../callforhelp/CfhSanctionMessageEvent.ts | 23 +- .../callforhelp/CfhTopicsInitEvent.ts | 23 +- .../callforhelp/SanctionStatusEvent.ts | 23 +- .../messages/incoming/callforhelp/index.ts | 6 +- .../camera/CameraPublishStatusMessageEvent.ts | 23 +- .../camera/CameraPurchaseOKMessageEvent.ts | 23 +- .../camera/CameraStorageUrlMessageEvent.ts | 23 +- .../camera/CompetitionStatusMessageEvent.ts | 23 +- .../incoming/camera/InitCameraMessageEvent.ts | 23 +- .../camera/ThumbnailStatusMessageEvent.ts | 23 +- .../messages/incoming/camera/index.ts | 12 +- .../CampaignCalendarDataMessageEvent.ts | 23 +- .../CampaignCalendarDoorOpenedMessageEvent.ts | 23 +- .../messages/incoming/campaign/index.ts | 4 +- .../catalog/BonusRareInfoMessageEvent.ts | 23 +- .../BuildersClubFurniCountMessageEvent.ts | 23 +- ...ldersClubSubscriptionStatusMessageEvent.ts | 23 +- .../BundleDiscountRulesetMessageEvent.ts | 23 +- .../catalog/CatalogPageExpirationEvent.ts | 23 +- .../catalog/CatalogPageMessageEvent.ts | 23 +- ...talogPageWithEarliestExpiryMessageEvent.ts | 23 +- .../incoming/catalog/CatalogPagesListEvent.ts | 23 +- .../catalog/CatalogPublishedMessageEvent.ts | 23 +- .../incoming/catalog/ClubGiftInfoEvent.ts | 23 +- .../incoming/catalog/ClubGiftSelectedEvent.ts | 23 +- .../DirectSMSClubBuyAvailableMessageEvent.ts | 23 +- .../catalog/GiftReceiverNotFoundEvent.ts | 23 +- .../catalog/GiftWrappingConfigurationEvent.ts | 23 +- .../HabboClubExtendOfferMessageEvent.ts | 23 +- .../catalog/HabboClubOffersMessageEvent.ts | 23 +- .../catalog/IsOfferGiftableMessageEvent.ts | 23 +- .../catalog/LimitedEditionSoldOutEvent.ts | 23 +- .../LimitedOfferAppearingNextMessageEvent.ts | 23 +- .../catalog/NotEnoughBalanceMessageEvent.ts | 23 +- .../incoming/catalog/ProductOfferEvent.ts | 23 +- .../catalog/PurchaseErrorMessageEvent.ts | 23 +- .../catalog/PurchaseNotAllowedMessageEvent.ts | 23 +- .../catalog/PurchaseOKMessageEvent.ts | 23 +- .../catalog/RoomAdPurchaseInfoEvent.ts | 23 +- .../SeasonalCalendarDailyOfferMessageEvent.ts | 23 +- .../SellablePetPalettesMessageEvent.ts | 23 +- .../incoming/catalog/TargetedOfferEvent.ts | 23 +- .../catalog/TargetedOfferNotFoundEvent.ts | 23 +- .../catalog/VoucherRedeemErrorMessageEvent.ts | 23 +- .../catalog/VoucherRedeemOkMessageEvent.ts | 23 +- .../messages/incoming/catalog/index.ts | 62 +- .../incoming/client/ClientPingEvent.ts | 23 +- .../messages/incoming/client/index.ts | 2 +- .../CompetitionEntrySubmitResultEvent.ts | 23 +- .../CompetitionVotingInfoMessageEvent.ts | 23 +- .../CurrentTimingCodeMessageEvent.ts | 23 +- .../IsUserPartOfCompetitionMessageEvent.ts | 23 +- .../NoOwnedRoomsAlertMessageEvent.ts | 23 +- .../competition/SecondsUntilMessageEvent.ts | 23 +- .../messages/incoming/competition/index.ts | 12 +- .../crafting/CraftableProductsEvent.ts | 23 +- .../incoming/crafting/CraftingRecipeEvent.ts | 23 +- .../crafting/CraftingRecipesAvailableEvent.ts | 23 +- .../incoming/crafting/CraftingResultEvent.ts | 23 +- .../messages/incoming/crafting/index.ts | 8 +- .../incoming/desktop/DesktopViewEvent.ts | 23 +- .../messages/incoming/desktop/index.ts | 2 +- .../friendlist/AcceptFriendResultEvent.ts | 23 +- .../FindFriendsProcessResultEvent.ts | 23 +- .../friendlist/FollowFriendFailedEvent.ts | 23 +- .../friendlist/FriendListFragmentEvent.ts | 23 +- .../friendlist/FriendListUpdateEvent.ts | 23 +- .../friendlist/FriendNotificationEvent.ts | 23 +- .../friendlist/FriendRequestsEvent.ts | 23 +- .../friendlist/HabboSearchResultEvent.ts | 23 +- .../friendlist/InstantMessageErrorEvent.ts | 23 +- .../incoming/friendlist/MessageErrorEvent.ts | 23 +- .../incoming/friendlist/MessengerInitEvent.ts | 23 +- .../friendlist/MiniMailNewMessageEvent.ts | 23 +- .../friendlist/MiniMailUnreadCountEvent.ts | 23 +- .../friendlist/NewConsoleMessageEvent.ts | 23 +- .../friendlist/NewFriendRequestEvent.ts | 23 +- .../friendlist/RoomInviteErrorEvent.ts | 23 +- .../incoming/friendlist/RoomInviteEvent.ts | 23 +- .../messages/incoming/friendlist/index.ts | 34 +- .../Game2AccountGameStatusMessageEvent.ts | 23 +- .../Game2GameDirectoryStatusMessageEvent.ts | 23 +- .../Game2InArenaQueueMessageEvent.ts | 23 +- .../Game2JoiningGameFailedMessageEvent.ts | 23 +- .../Game2StartingGameFailedMessageEvent.ts | 23 +- .../directory/Game2StopCounterMessageEvent.ts | 23 +- .../Game2UserLeftGameMessageEvent.ts | 23 +- .../messages/incoming/game/directory/index.ts | 14 +- .../messages/incoming/game/index.ts | 6 +- ...ievementResolutionCompletedMessageEvent.ts | 23 +- ...hievementResolutionProgressMessageEvent.ts | 23 +- .../AchievementResolutionsMessageEvent.ts | 23 +- .../lobby/GameAchievementsMessageEvent.ts | 23 +- .../game/lobby/GameInviteMessageEvent.ts | 23 +- .../game/lobby/GameListMessageEvent.ts | 23 +- .../game/lobby/GameStatusMessageEvent.ts | 23 +- .../game/lobby/JoinedQueueMessageEvent.ts | 23 +- .../lobby/JoiningQueueFailedMessageEvent.ts | 23 +- .../game/lobby/LeftQueueMessageEvent.ts | 23 +- .../game/lobby/LoadGameMessageEvent.ts | 23 +- .../incoming/game/lobby/LoadGameUrlEvent.ts | 23 +- .../game/lobby/UnloadGameMessageEvent.ts | 23 +- .../lobby/UserGameAchievementsMessageEvent.ts | 23 +- .../messages/incoming/game/lobby/index.ts | 28 +- .../Game2WeeklyFriendsLeaderboardEvent.ts | 23 +- .../game/score/Game2WeeklyLeaderboardEvent.ts | 23 +- ...eeklyCompetitiveFriendsLeaderboardEvent.ts | 23 +- .../WeeklyCompetitiveLeaderboardEvent.ts | 23 +- .../game/score/WeeklyGameRewardEvent.ts | 23 +- .../score/WeeklyGameRewardWinnersEvent.ts | 23 +- .../messages/incoming/game/score/index.ts | 12 +- .../incoming/generic/GenericErrorEvent.ts | 23 +- .../messages/incoming/generic/index.ts | 2 +- .../gifts/PhoneCollectionStateMessageEvent.ts | 23 +- .../gifts/TryPhoneNumberResultMessageEvent.ts | 23 +- .../TryVerificationCodeResultMessageEvent.ts | 23 +- .../messages/incoming/gifts/index.ts | 6 +- .../incoming/group/GroupBadgePartsEvent.ts | 23 +- .../incoming/group/GroupBuyDataEvent.ts | 23 +- .../group/GroupConfirmMemberRemoveEvent.ts | 23 +- .../incoming/group/GroupInformationEvent.ts | 23 +- .../incoming/group/GroupMembersEvent.ts | 23 +- .../incoming/group/GroupPurchasedEvent.ts | 23 +- .../incoming/group/GroupSettingsEvent.ts | 23 +- .../HabboGroupDeactivatedMessageEvent.ts | 23 +- .../messages/incoming/group/index.ts | 16 +- .../groupforums/ForumDataMessageEvent.ts | 23 +- .../groupforums/ForumsListMessageEvent.ts | 23 +- .../groupforums/GuildForumThreadsEvent.ts | 23 +- .../groupforums/PostMessageMessageEvent.ts | 23 +- .../groupforums/PostThreadMessageEvent.ts | 23 +- .../groupforums/ThreadMessagesMessageEvent.ts | 23 +- .../UnreadForumsCountMessageEvent.ts | 23 +- .../groupforums/UpdateMessageMessageEvent.ts | 23 +- .../groupforums/UpdateThreadMessageEvent.ts | 23 +- .../messages/incoming/groupforums/index.ts | 18 +- .../handshake/CompleteDiffieHandshakeEvent.ts | 23 +- .../handshake/DisconnectReasonEnum.ts | 89 +- .../handshake/DisconnectReasonEvent.ts | 51 +- .../handshake/IdentityAccountsEvent.ts | 23 +- .../handshake/InitDiffieHandshakeEvent.ts | 23 +- .../handshake/NoobnessLevelMessageEvent.ts | 23 +- .../messages/incoming/handshake/index.ts | 12 +- .../CallForHelpDisabledNotifyMessageEvent.ts | 23 +- ...lForHelpPendingCallsDeletedMessageEvent.ts | 23 +- .../CallForHelpPendingCallsMessageEvent.ts | 23 +- .../help/CallForHelpReplyMessageEvent.ts | 23 +- .../help/CallForHelpResultMessageEvent.ts | 23 +- .../ChatReviewSessionDetachedMessageEvent.ts | 23 +- ...ReviewSessionOfferedToGuideMessageEvent.ts | 23 +- .../ChatReviewSessionResultsMessageEvent.ts | 23 +- .../ChatReviewSessionStartedMessageEvent.ts | 23 +- ...atReviewSessionVotingStatusMessageEvent.ts | 23 +- .../help/GuideOnDutyStatusMessageEvent.ts | 23 +- .../help/GuideReportingStatusMessageEvent.ts | 23 +- .../help/GuideSessionAttachedMessageEvent.ts | 23 +- .../help/GuideSessionDetachedMessageEvent.ts | 23 +- .../help/GuideSessionEndedMessageEvent.ts | 23 +- .../help/GuideSessionErrorMessageEvent.ts | 23 +- ...deSessionInvitedToGuideRoomMessageEvent.ts | 23 +- .../help/GuideSessionMessageMessageEvent.ts | 23 +- ...GuideSessionPartnerIsTypingMessageEvent.ts | 23 +- .../GuideSessionRequesterRoomMessageEvent.ts | 23 +- .../help/GuideSessionStartedMessageEvent.ts | 23 +- .../GuideTicketCreationResultMessageEvent.ts | 23 +- .../help/GuideTicketResolutionMessageEvent.ts | 23 +- .../help/HotelMergeNameChangeEvent.ts | 23 +- .../IssueCloseNotificationMessageEvent.ts | 23 +- .../incoming/help/QuizDataMessageEvent.ts | 23 +- .../incoming/help/QuizResultsMessageEvent.ts | 23 +- .../messages/incoming/help/index.ts | 54 +- .../communication/messages/incoming/index.ts | 150 +- .../achievements/AchievementEvent.ts | 23 +- .../achievements/AchievementsEvent.ts | 23 +- .../achievements/AchievementsScoreEvent.ts | 23 +- .../incoming/inventory/achievements/index.ts | 6 +- .../AvatarEffectActivatedEvent.ts | 23 +- .../avatareffect/AvatarEffectAddedEvent.ts | 23 +- .../avatareffect/AvatarEffectExpiredEvent.ts | 23 +- .../avatareffect/AvatarEffectSelectedEvent.ts | 23 +- .../avatareffect/AvatarEffectsEvent.ts | 23 +- .../incoming/inventory/avatareffect/index.ts | 10 +- .../inventory/badges/BadgePointLimitsEvent.ts | 23 +- .../inventory/badges/BadgeReceivedEvent.ts | 23 +- .../incoming/inventory/badges/BadgesEvent.ts | 23 +- .../badges/IsBadgeRequestFulfilledEvent.ts | 23 +- .../incoming/inventory/badges/index.ts | 8 +- .../clothes/FigureSetIdsMessageEvent.ts | 23 +- .../incoming/inventory/clothes/_Str_16135.ts | 23 +- .../incoming/inventory/clothes/_Str_17532.ts | 23 +- .../incoming/inventory/clothes/index.ts | 6 +- .../furni/FurnitureListAddOrUpdateEvent.ts | 23 +- .../inventory/furni/FurnitureListEvent.ts | 23 +- .../furni/FurnitureListInvalidateEvent.ts | 23 +- .../furni/FurnitureListRemovedEvent.ts | 23 +- .../furni/FurniturePostItPlacedEvent.ts | 23 +- .../furni/gifts/PresentOpenedMessageEvent.ts | 23 +- .../incoming/inventory/furni/gifts/index.ts | 2 +- .../incoming/inventory/furni/index.ts | 12 +- .../messages/incoming/inventory/index.ts | 16 +- .../pets/ConfirmBreedingRequestEvent.ts | 23 +- .../pets/ConfirmBreedingResultEvent.ts | 23 +- .../pets/GoToBreedingNestFailureEvent.ts | 23 +- .../pets/NestBreedingSuccessEvent.ts | 23 +- .../pets/PetAddedToInventoryEvent.ts | 23 +- .../inventory/pets/PetInventoryEvent.ts | 23 +- .../inventory/pets/PetReceivedMessageEvent.ts | 23 +- .../pets/PetRemovedFromInventoryEvent.ts | 23 +- .../messages/incoming/inventory/pets/index.ts | 16 +- .../inventory/trading/TradingAcceptEvent.ts | 37 +- .../inventory/trading/TradingCloseEvent.ts | 30 +- .../trading/TradingCompletedEvent.ts | 23 +- .../trading/TradingConfirmationEvent.ts | 23 +- .../inventory/trading/TradingListItemEvent.ts | 79 +- .../trading/TradingNoSuchItemEvent.ts | 23 +- .../inventory/trading/TradingNotOpenEvent.ts | 23 +- .../inventory/trading/TradingOpenEvent.ts | 51 +- .../trading/TradingOpenFailedEvent.ts | 23 +- .../trading/TradingOtherNotAllowedEvent.ts | 23 +- .../trading/TradingYouAreNotAllowedEvent.ts | 23 +- .../incoming/inventory/trading/index.ts | 22 +- .../landingview/PromoArticlesMessageEvent.ts | 23 +- .../messages/incoming/landingview/index.ts | 4 +- .../votes/CommunityGoalVoteMessageEvent.ts | 23 +- .../incoming/landingview/votes/index.ts | 2 +- .../MarketplaceBuyOfferResultEvent.ts | 24 +- .../MarketplaceCanMakeOfferResult.ts | 24 +- .../MarketplaceCancelOfferResultEvent.ts | 23 +- .../MarketplaceConfigurationEvent.ts | 23 +- .../marketplace/MarketplaceItemStatsEvent.ts | 23 +- .../marketplace/MarketplaceMakeOfferResult.ts | 24 +- .../marketplace/MarketplaceOffersEvent.ts | 23 +- .../marketplace/MarketplaceOwnOffersEvent.ts | 23 +- .../messages/incoming/marketplace/index.ts | 16 +- .../incoming/moderation/CfhChatlogEvent.ts | 23 +- .../moderation/IssueDeletedMessageEvent.ts | 23 +- .../moderation/IssueInfoMessageEvent.ts | 23 +- .../moderation/IssuePickFailedMessageEvent.ts | 23 +- .../ModeratorActionResultMessageEvent.ts | 23 +- .../moderation/ModeratorCautionEvent.ts | 23 +- .../moderation/ModeratorInitMessageEvent.ts | 23 +- .../moderation/ModeratorMessageEvent.ts | 23 +- .../moderation/ModeratorRoomInfoEvent.ts | 23 +- .../ModeratorToolPreferencesEvent.ts | 23 +- .../moderation/ModeratorUserInfoEvent.ts | 23 +- .../incoming/moderation/RoomChatlogEvent.ts | 23 +- .../incoming/moderation/RoomVisitsEvent.ts | 23 +- .../moderation/UserBannedMessageEvent.ts | 23 +- .../incoming/moderation/UserChatlogEvent.ts | 23 +- .../messages/incoming/moderation/index.ts | 30 +- .../CancelMysteryBoxWaitMessageEvent.ts | 23 +- .../GotMysteryBoxPrizeMessageEvent.ts | 23 +- .../mysterybox/MysteryBoxKeysEvent.ts | 23 +- .../ShowMysteryBoxWaitMessageEvent.ts | 23 +- .../messages/incoming/mysterybox/index.ts | 8 +- .../incoming/navigator/CanCreateRoomEvent.ts | 23 +- .../navigator/CanCreateRoomEventEvent.ts | 23 +- .../CategoriesWithVisitorCountEvent.ts | 23 +- .../CompetitionRoomsDataMessageEvent.ts | 23 +- .../navigator/ConvertedRoomIdEvent.ts | 23 +- .../navigator/DoorbellMessageEvent.ts | 30 +- .../navigator/FavouriteChangedEvent.ts | 23 +- .../incoming/navigator/FavouritesEvent.ts | 23 +- .../navigator/FlatAccessDeniedMessageEvent.ts | 23 +- .../incoming/navigator/FlatCreatedEvent.ts | 23 +- .../navigator/GetGuestRoomResultEvent.ts | 23 +- .../navigator/GuestRoomSearchResultEvent.ts | 23 +- .../navigator/NavigatorCollapsedEvent.ts | 23 +- .../navigator/NavigatorHomeRoomEvent.ts | 23 +- .../navigator/NavigatorLiftedEvent.ts | 23 +- .../navigator/NavigatorMetadataEvent.ts | 23 +- .../NavigatorOpenRoomCreatorEvent.ts | 23 +- .../navigator/NavigatorSearchEvent.ts | 23 +- .../navigator/NavigatorSearchesEvent.ts | 23 +- .../navigator/NavigatorSettingsEvent.ts | 23 +- .../navigator/PopularRoomTagsResultEvent.ts | 23 +- .../navigator/RoomEventCancelEvent.ts | 23 +- .../incoming/navigator/RoomEventEvent.ts | 23 +- .../RoomFilterSettingsMessageEvent.ts | 23 +- .../navigator/RoomSettingsUpdatedEvent.ts | 23 +- .../RoomThumbnailUpdateResultEvent.ts | 23 +- .../incoming/navigator/UserEventCatsEvent.ts | 23 +- .../incoming/navigator/UserFlatCatsEvent.ts | 23 +- .../messages/incoming/navigator/index.ts | 56 +- .../AchievementNotificationMessageEvent.ts | 23 +- .../ActivityPointNotificationMessageEvent.ts | 23 +- .../incoming/notifications/BotErrorEvent.ts | 23 +- .../ClubGiftNotificationEvent.ts | 23 +- .../notifications/ConnectionErrorEvent.ts | 23 +- .../ElementPointerMessageEvent.ts | 23 +- .../HabboBroadcastMessageEvent.ts | 23 +- .../notifications/HotelWillShutdownEvent.ts | 23 +- .../InfoFeedEnableMessageEvent.ts | 23 +- .../notifications/MOTDNotificationEvent.ts | 23 +- .../NotificationDialogMessageEvent.ts | 23 +- .../PetLevelNotificationEvent.ts | 23 +- .../notifications/PetPlacingErrorEvent.ts | 23 +- .../notifications/SimpleAlertMessageEvent.ts | 23 +- .../notifications/UnseenItemsEvent.ts | 23 +- .../messages/incoming/notifications/index.ts | 30 +- .../incoming/nux/NewUserExperienceGift.ts | 54 +- .../NewUserExperienceGiftOfferMessageEvent.ts | 23 +- .../nux/NewUserExperienceGiftOptions.ts | 56 +- .../nux/NewUserExperienceNotCompleteEvent.ts | 23 +- .../messages/incoming/nux/ProductOffer.ts | 37 +- .../messages/incoming/nux/index.ts | 10 +- .../perk/PerkAllowancesMessageEvent.ts | 23 +- .../messages/incoming/perk/index.ts | 2 +- .../OpenPetPackageRequestedMessageEvent.ts | 23 +- .../pet/OpenPetPackageResultMessageEvent.ts | 23 +- .../pet/PetLevelUpdateMessageEvent.ts | 23 +- .../pet/PetScratchFailedMessageEvent.ts | 23 +- .../pet/PetTrainingPanelMessageEvent.ts | 23 +- .../pet/breeding/PetBreedingMessageEvent.ts | 23 +- .../messages/incoming/pet/breeding/index.ts | 2 +- .../messages/incoming/pet/index.ts | 12 +- .../incoming/poll/PollContentsEvent.ts | 23 +- .../messages/incoming/poll/PollErrorEvent.ts | 23 +- .../messages/incoming/poll/PollOfferEvent.ts | 23 +- .../incoming/poll/QuestionAnsweredEvent.ts | 23 +- .../messages/incoming/poll/QuestionEvent.ts | 23 +- .../incoming/poll/QuestionFinishedEvent.ts | 23 +- .../messages/incoming/poll/index.ts | 12 +- .../CommunityGoalEarnedPrizesMessageEvent.ts | 23 +- .../CommunityGoalHallOfFameMessageEvent.ts | 23 +- .../CommunityGoalProgressMessageEvent.ts | 23 +- ...ConcurrentUsersGoalProgressMessageEvent.ts | 23 +- .../incoming/quest/EpicPopupMessageEvent.ts | 23 +- .../quest/QuestCancelledMessageEvent.ts | 23 +- .../quest/QuestCompletedMessageEvent.ts | 23 +- .../incoming/quest/QuestDailyMessageEvent.ts | 23 +- .../incoming/quest/QuestMessageEvent.ts | 23 +- .../incoming/quest/QuestsMessageEvent.ts | 23 +- .../quest/SeasonalQuestsMessageEvent.ts | 23 +- .../messages/incoming/quest/index.ts | 22 +- .../recycler/RecyclerFinishedMessageEvent.ts | 27 +- .../recycler/RecyclerStatusMessageEvent.ts | 29 +- .../messages/incoming/recycler/index.ts | 4 +- .../room/access/RoomEnterErrorEvent.ts | 23 +- .../incoming/room/access/RoomEnterEvent.ts | 23 +- .../incoming/room/access/RoomForwardEvent.ts | 23 +- .../doorbell/RoomDoorbellAcceptedEvent.ts | 23 +- .../incoming/room/access/doorbell/index.ts | 2 +- .../messages/incoming/room/access/index.ts | 10 +- .../access/rights/RoomRightsClearEvent.ts | 23 +- .../room/access/rights/RoomRightsEvent.ts | 23 +- .../access/rights/RoomRightsOwnerEvent.ts | 23 +- .../incoming/room/access/rights/index.ts | 6 +- .../room/bots/BotCommandConfigurationEvent.ts | 23 +- .../room/bots/BotForceOpenContextMenuEvent.ts | 23 +- .../room/bots/BotSkillListUpdateEvent.ts | 23 +- .../messages/incoming/room/bots/index.ts | 6 +- .../room/data/RoomChatSettingsEvent.ts | 23 +- .../room/data/RoomEntryInfoMessageEvent.ts | 23 +- .../incoming/room/data/RoomScoreEvent.ts | 23 +- .../messages/incoming/room/data/index.ts | 6 +- .../FavoriteMembershipUpdateMessageEvent.ts | 23 +- .../room/engine/ObjectsDataUpdateEvent.ts | 23 +- .../room/engine/ObjectsRollingEvent.ts | 23 +- .../messages/incoming/room/engine/index.ts | 6 +- .../CustomUserNotificationMessageEvent.ts | 23 +- .../room/furniture/DiceValueMessageEvent.ts | 23 +- .../FurniRentOrBuyoutOfferMessageEvent.ts | 23 +- .../room/furniture/FurnitureAliasesEvent.ts | 23 +- .../room/furniture/FurnitureDataEvent.ts | 23 +- .../furniture/FurnitureStackHeightEvent.ts | 23 +- .../GroupFurniContextMenuInfoMessageEvent.ts | 23 +- .../furniture/ItemDataUpdateMessageEvent.ts | 23 +- .../furniture/LoveLockFurniFinishedEvent.ts | 23 +- .../LoveLockFurniFriendConfirmedEvent.ts | 23 +- .../room/furniture/LoveLockFurniStartEvent.ts | 23 +- .../furniture/OneWayDoorStatusMessageEvent.ts | 23 +- .../RentableSpaceRentFailedMessageEvent.ts | 23 +- .../RentableSpaceRentOkMessageEvent.ts | 23 +- .../RentableSpaceStatusMessageEvent.ts | 23 +- .../RequestSpamWallPostItMessageEvent.ts | 23 +- .../RoomDimmerPresetsMessageEvent.ts | 23 +- .../RoomMessageNotificationMessageEvent.ts | 23 +- .../room/furniture/WelcomeGiftStatusEvent.ts | 23 +- .../furniture/floor/FurnitureFloorAddEvent.ts | 23 +- .../furniture/floor/FurnitureFloorEvent.ts | 23 +- .../floor/FurnitureFloorRemoveEvent.ts | 23 +- .../floor/FurnitureFloorUpdateEvent.ts | 23 +- .../incoming/room/furniture/floor/index.ts | 8 +- .../messages/incoming/room/furniture/index.ts | 44 +- .../furniture/wall/FurnitureWallAddEvent.ts | 23 +- .../room/furniture/wall/FurnitureWallEvent.ts | 23 +- .../wall/FurnitureWallRemoveEvent.ts | 23 +- .../wall/FurnitureWallUpdateEvent.ts | 23 +- .../incoming/room/furniture/wall/index.ts | 8 +- .../YoutubeControlVideoMessageEvent.ts | 23 +- .../youtube/YoutubeDisplayPlaylistsEvent.ts | 23 +- .../YoutubeDisplayVideoMessageEvent.ts | 23 +- .../incoming/room/furniture/youtube/index.ts | 6 +- .../messages/incoming/room/index.ts | 30 +- .../room/mapping/FloorHeightMapEvent.ts | 23 +- .../room/mapping/RoomEntryTileMessageEvent.ts | 23 +- .../room/mapping/RoomHeightMapEvent.ts | 23 +- .../room/mapping/RoomHeightMapUpdateEvent.ts | 23 +- .../mapping/RoomOccupiedTilesMessageEvent.ts | 23 +- .../incoming/room/mapping/RoomPaintEvent.ts | 23 +- .../room/mapping/RoomReadyMessageEvent.ts | 23 +- .../mapping/RoomVisualizationSettingsEvent.ts | 23 +- .../messages/incoming/room/mapping/index.ts | 16 +- .../room/pet/PetBreedingResultEvent.ts | 23 +- .../incoming/room/pet/PetExperienceEvent.ts | 23 +- .../incoming/room/pet/PetFigureUpdateEvent.ts | 23 +- .../incoming/room/pet/PetInfoEvent.ts | 23 +- .../incoming/room/pet/PetStatusUpdateEvent.ts | 23 +- .../messages/incoming/room/pet/index.ts | 10 +- .../room/session/YouArePlayingGameEvent.ts | 23 +- .../session/YouAreSpectatorMessageEvent.ts | 23 +- .../messages/incoming/room/session/index.ts | 4 +- .../incoming/room/unit/RoomUnitDanceEvent.ts | 23 +- .../incoming/room/unit/RoomUnitEffectEvent.ts | 23 +- .../incoming/room/unit/RoomUnitEvent.ts | 23 +- .../room/unit/RoomUnitExpressionEvent.ts | 23 +- .../room/unit/RoomUnitHandItemEvent.ts | 23 +- .../unit/RoomUnitHandItemReceivedEvent.ts | 23 +- .../incoming/room/unit/RoomUnitIdleEvent.ts | 23 +- .../incoming/room/unit/RoomUnitInfoEvent.ts | 23 +- .../incoming/room/unit/RoomUnitNumberEvent.ts | 23 +- .../incoming/room/unit/RoomUnitRemoveEvent.ts | 23 +- .../incoming/room/unit/RoomUnitStatusEvent.ts | 23 +- .../room/unit/chat/FloodControlEvent.ts | 23 +- .../room/unit/chat/RemainingMuteEvent.ts | 23 +- .../room/unit/chat/RoomUnitChatEvent.ts | 23 +- .../room/unit/chat/RoomUnitChatShoutEvent.ts | 23 +- .../unit/chat/RoomUnitChatWhisperEvent.ts | 23 +- .../room/unit/chat/RoomUnitTypingEvent.ts | 23 +- .../messages/incoming/room/unit/chat/index.ts | 12 +- .../messages/incoming/room/unit/index.ts | 24 +- .../roomevents/WiredFurniActionEvent.ts | 23 +- .../roomevents/WiredFurniConditionEvent.ts | 23 +- .../roomevents/WiredFurniTriggerEvent.ts | 23 +- .../incoming/roomevents/WiredOpenEvent.ts | 23 +- .../WiredRewardResultMessageEvent.ts | 27 +- .../roomevents/WiredSaveSuccessEvent.ts | 23 +- .../roomevents/WiredValidationErrorEvent.ts | 23 +- .../messages/incoming/roomevents/index.ts | 14 +- .../roomsettings/BannedUsersFromRoomEvent.ts | 23 +- .../roomsettings/FlatControllerAddedEvent.ts | 23 +- .../FlatControllerRemovedEvent.ts | 23 +- .../roomsettings/FlatControllersEvent.ts | 23 +- .../roomsettings/MuteAllInRoomEvent.ts | 23 +- .../incoming/roomsettings/NoSuchFlatEvent.ts | 23 +- .../roomsettings/RoomSettingsDataEvent.ts | 23 +- .../roomsettings/RoomSettingsErrorEvent.ts | 23 +- .../RoomSettingsSaveErrorEvent.ts | 23 +- .../roomsettings/RoomSettingsSavedEvent.ts | 23 +- .../ShowEnforceRoomCategoryDialogEvent.ts | 23 +- .../roomsettings/UserUnbannedFromRoomEvent.ts | 23 +- .../messages/incoming/roomsettings/index.ts | 24 +- .../incoming/security/AuthenticatedEvent.ts | 23 +- .../messages/incoming/security/index.ts | 2 +- .../sound/JukeboxPlayListFullMessageEvent.ts | 23 +- .../sound/JukeboxSongDisksMessageEvent.ts | 23 +- .../incoming/sound/NowPlayingMessageEvent.ts | 23 +- .../sound/OfficialSongIdMessageEvent.ts | 23 +- .../incoming/sound/PlayListMessageEvent.ts | 23 +- .../sound/PlayListSongAddedMessageEvent.ts | 23 +- .../sound/TraxSongInfoMessageEvent.ts | 23 +- .../UserSongDisksInventoryMessageEvent.ts | 23 +- .../messages/incoming/sound/index.ts | 16 +- .../incoming/talent/TalentLevelUpEvent.ts | 23 +- .../talent/TalentTrackLevelMessageEvent.ts | 23 +- .../talent/TalentTrackMessageEvent.ts | 23 +- .../messages/incoming/talent/index.ts | 6 +- ...countSafetyLockStatusChangeMessageEvent.ts | 23 +- .../incoming/user/ApproveNameMessageEvent.ts | 23 +- .../incoming/user/ChangeEmailResultEvent.ts | 23 +- .../incoming/user/EmailStatusResultEvent.ts | 23 +- .../ExtendedProfileChangedMessageEvent.ts | 23 +- .../user/GroupDetailsChangedMessageEvent.ts | 23 +- .../GroupMembershipRequestedMessageEvent.ts | 23 +- .../user/GuildEditFailedMessageEvent.ts | 23 +- .../user/GuildMemberMgmtFailedMessageEvent.ts | 23 +- .../user/GuildMembershipsMessageEvent.ts | 23 +- .../user/HabboGroupBadgesMessageEvent.ts | 23 +- .../user/HabboGroupJoinFailedMessageEvent.ts | 23 +- .../incoming/user/IgnoreResultEvent.ts | 23 +- .../incoming/user/IgnoredUsersEvent.ts | 23 +- .../incoming/user/InClientLinkEvent.ts | 23 +- .../messages/incoming/user/MemberData.ts | 103 +- .../user/PetRespectNoficationEvent.ts | 23 +- .../user/PetSupplementedNotificationEvent.ts | 23 +- .../incoming/user/RespectReceivedEvent.ts | 23 +- .../user/ScrSendKickbackInfoMessageEvent.ts | 23 +- .../user/WelcomeGiftChangeEmailResultEvent.ts | 23 +- .../user/access/UserPermissionsEvent.ts | 23 +- .../messages/incoming/user/access/index.ts | 2 +- .../user/data/RelationshipStatusInfoEvent.ts | 23 +- .../user/data/UserCurrentBadgesEvent.ts | 23 +- .../incoming/user/data/UserInfoEvent.ts | 23 +- .../user/data/UserNameChangeMessageEvent.ts | 23 +- .../incoming/user/data/UserProfileEvent.ts | 23 +- .../incoming/user/data/UserSettingsEvent.ts | 23 +- .../user/data/UserTagsMessageEvent.ts | 23 +- .../messages/incoming/user/data/index.ts | 14 +- .../messages/incoming/user/index.ts | 54 +- .../inventory/currency/UserCreditsEvent.ts | 23 +- .../inventory/currency/UserCurrencyEvent.ts | 23 +- .../incoming/user/inventory/currency/index.ts | 4 +- .../messages/incoming/user/inventory/index.ts | 4 +- .../subscription/UserSubscriptionEvent.ts | 23 +- .../user/inventory/subscription/index.ts | 2 +- .../user/wardrobe/UserWardrobePageEvent.ts | 23 +- .../messages/incoming/user/wardrobe/index.ts | 2 +- .../UserClassificationMessageEvent.ts | 23 +- .../incoming/userclassification/index.ts | 2 +- .../src/nitro/communication/messages/index.ts | 6 +- .../messages/outgoing/OutgoingHeader.ts | 937 ++- .../GetInterstitialMessageComposer.ts | 28 +- .../InterstitialShownMessageComposer.ts | 28 +- .../RequestAchievementsMessageComposer.ts | 28 +- .../messages/outgoing/advertisement/index.ts | 6 +- .../avatar/ChangeUserNameMessageComposer.ts | 28 +- .../avatar/CheckUserNameMessageComposer.ts | 28 +- .../avatar/GetWardrobeMessageComposer.ts | 28 +- .../SaveWardrobeOutfitMessageComposer.ts | 28 +- .../messages/outgoing/avatar/index.ts | 8 +- .../camera/PhotoCompetitionMessageComposer.ts | 28 +- .../camera/PublishPhotoMessageComposer.ts | 28 +- .../camera/PurchasePhotoMessageComposer.ts | 28 +- .../camera/RenderRoomMessageComposer.ts | 59 +- .../RenderRoomThumbnailMessageComposer.ts | 12 +- .../RequestCameraConfigurationComposer.ts | 28 +- .../messages/outgoing/camera/index.ts | 12 +- ...OpenCampaignCalendarDoorAsStaffComposer.ts | 28 +- .../OpenCampaignCalendarDoorComposer.ts | 28 +- .../messages/outgoing/campaign/index.ts | 4 +- ...uildersClubPlaceRoomItemMessageComposer.ts | 28 +- ...uildersClubPlaceWallItemMessageComposer.ts | 28 +- ...ldersClubQueryFurniCountMessageComposer.ts | 28 +- .../GetBonusRareInfoMessageComposer.ts | 28 +- .../GetBundleDiscountRulesetComposer.ts | 28 +- .../catalog/GetCatalogIndexComposer.ts | 28 +- .../catalog/GetCatalogPageComposer.ts | 28 +- .../GetCatalogPageExpirationComposer.ts | 28 +- ...etCatalogPageWithEarliestExpiryComposer.ts | 28 +- .../outgoing/catalog/GetClubGiftInfo.ts | 28 +- .../catalog/GetClubOffersMessageComposer.ts | 28 +- .../GetDirectClubBuyAvailableComposer.ts | 28 +- .../GetGiftWrappingConfigurationComposer.ts | 28 +- ...HabboBasicMembershipExtendOfferComposer.ts | 28 +- .../GetHabboClubExtendOfferMessageComposer.ts | 28 +- .../catalog/GetIsOfferGiftableComposer.ts | 28 +- .../GetLimitedOfferAppearingNextComposer.ts | 28 +- .../catalog/GetNextTargetedOfferComposer.ts | 28 +- .../catalog/GetProductOfferComposer.ts | 28 +- .../catalog/GetRoomAdPurchaseInfoComposer.ts | 28 +- .../GetSeasonalCalendarDailyOfferComposer.ts | 28 +- .../catalog/GetSellablePetPalettesComposer.ts | 28 +- .../catalog/GetTargetedOfferComposer.ts | 28 +- ...rkCatalogNewAdditionsPageOpenedComposer.ts | 28 +- ...urchaseBasicMembershipExtensionComposer.ts | 28 +- .../PurchaseFromCatalogAsGiftComposer.ts | 38 +- .../catalog/PurchaseFromCatalogComposer.ts | 28 +- .../catalog/PurchaseRoomAdMessageComposer.ts | 28 +- .../catalog/PurchaseTargetedOfferComposer.ts | 28 +- .../PurchaseVipMembershipExtensionComposer.ts | 28 +- .../catalog/RedeemVoucherMessageComposer.ts | 28 +- .../RoomAdPurchaseInitiatedComposer.ts | 28 +- .../catalog/SelectClubGiftComposer.ts | 28 +- .../catalog/SetTargetedOfferStateComposer.ts | 28 +- .../ShopTargetedOfferViewedComposer.ts | 28 +- .../messages/outgoing/catalog/index.ts | 70 +- ...orwardToACompetitionRoomMessageComposer.ts | 28 +- ...orwardToASubmittableRoomMessageComposer.ts | 28 +- ...dToRandomCompetitionRoomMessageComposer.ts | 28 +- .../GetCurrentTimingCodeMessageComposer.ts | 28 +- ...tIsUserPartOfCompetitionMessageComposer.ts | 28 +- .../GetSecondsUntilMessageComposer.ts | 28 +- .../RoomCompetitionInitMessageComposer.ts | 28 +- .../SubmitRoomToCompetitionMessageComposer.ts | 36 +- .../competition/VoteForRoomMessageComposer.ts | 28 +- .../messages/outgoing/competition/index.ts | 18 +- .../outgoing/crafting/CraftComposer.ts | 28 +- .../outgoing/crafting/CraftSecretComposer.ts | 28 +- .../crafting/GetCraftableProductsComposer.ts | 28 +- .../crafting/GetCraftingRecipeComposer.ts | 28 +- .../GetCraftingRecipesAvailableComposer.ts | 28 +- .../messages/outgoing/crafting/index.ts | 10 +- .../outgoing/desktop/DesktopViewComposer.ts | 28 +- .../messages/outgoing/desktop/index.ts | 2 +- .../FriendFurniConfirmLockMessageComposer.ts | 28 +- .../messages/outgoing/friendfurni/index.ts | 2 +- .../friendlist/AcceptFriendMessageComposer.ts | 28 +- .../DeclineFriendMessageComposer.ts | 28 +- .../FindNewFriendsMessageComposer.ts | 28 +- .../friendlist/FollowFriendMessageComposer.ts | 28 +- .../friendlist/FriendListUpdateComposer.ts | 28 +- .../friendlist/GetFriendRequestsComposer.ts | 28 +- .../friendlist/HabboSearchComposer.ts | 28 +- .../friendlist/MessengerInitComposer.ts | 28 +- .../friendlist/RemoveFriendComposer.ts | 28 +- .../friendlist/RequestFriendComposer.ts | 28 +- .../friendlist/SendMessageComposer.ts | 28 +- .../friendlist/SendRoomInviteComposer.ts | 28 +- .../SetRelationshipStatusComposer.ts | 28 +- .../outgoing/friendlist/VisitUserComposer.ts | 28 +- .../messages/outgoing/friendlist/index.ts | 28 +- .../arena/Game2ExitGameMessageComposer.ts | 28 +- .../arena/Game2GameChatMessageComposer.ts | 28 +- .../Game2LoadStageReadyMessageComposer.ts | 28 +- .../arena/Game2PlayAgainMessageComposer.ts | 28 +- .../messages/outgoing/game/arena/index.ts | 8 +- ...CheckGameDirectoryStatusMessageComposer.ts | 28 +- ...ame2GetAccountGameStatusMessageComposer.ts | 28 +- .../messages/outgoing/game/directory/index.ts | 4 +- .../messages/outgoing/game/index.ts | 10 +- ...2RequestFullStatusUpdateMessageComposer.ts | 28 +- .../messages/outgoing/game/ingame/index.ts | 2 +- .../lobby/AcceptGameInviteMessageComposer.ts | 28 +- .../game/lobby/GameUnloadedMessageComposer.ts | 28 +- .../GetGameAchievementsMessageComposer.ts | 28 +- .../game/lobby/GetGameListMessageComposer.ts | 28 +- .../lobby/GetGameStatusMessageComposer.ts | 28 +- ...etResolutionAchievementsMessageComposer.ts | 28 +- .../GetUserGameAchievementsMessageComposer.ts | 28 +- .../game/lobby/JoinQueueMessageComposer.ts | 28 +- .../game/lobby/LeaveQueueMessageComposer.ts | 28 +- ...setResolutionAchievementMessageComposer.ts | 28 +- .../messages/outgoing/game/lobby/index.ts | 20 +- ...ame2GetWeeklyFriendsLeaderboardComposer.ts | 28 +- .../Game2GetWeeklyLeaderboardComposer.ts | 28 +- .../game/score/GetWeeklyGameRewardComposer.ts | 28 +- .../GetWeeklyGameRewardWinnersComposer.ts | 28 +- .../messages/outgoing/game/score/index.ts | 8 +- .../outgoing/gifts/GetGiftMessageComposer.ts | 30 +- .../ResetPhoneNumberStateMessageComposer.ts | 28 +- ...NumberVerificationStatusMessageComposer.ts | 30 +- .../gifts/TryPhoneNumberMessageComposer.ts | 28 +- .../gifts/VerifyCodeMessageComposer.ts | 28 +- .../messages/outgoing/gifts/index.ts | 10 +- ...oveAllMembershipRequestsMessageComposer.ts | 28 +- .../outgoing/group/GroupAdminGiveComposer.ts | 28 +- .../outgoing/group/GroupAdminTakeComposer.ts | 28 +- .../outgoing/group/GroupBadgePartsComposer.ts | 28 +- .../outgoing/group/GroupBuyComposer.ts | 28 +- .../outgoing/group/GroupBuyDataComposer.ts | 28 +- .../group/GroupConfirmRemoveMemberComposer.ts | 28 +- .../outgoing/group/GroupDeleteComposer.ts | 28 +- .../outgoing/group/GroupFavoriteComposer.ts | 28 +- .../group/GroupInformationComposer.ts | 28 +- .../outgoing/group/GroupJoinComposer.ts | 28 +- .../outgoing/group/GroupMembersComposer.ts | 28 +- .../group/GroupMembershipAcceptComposer.ts | 28 +- .../group/GroupMembershipDeclineComposer.ts | 28 +- .../group/GroupRemoveMemberComposer.ts | 28 +- .../outgoing/group/GroupSaveBadgeComposer.ts | 28 +- .../outgoing/group/GroupSaveColorsComposer.ts | 28 +- .../group/GroupSaveInformationComposer.ts | 28 +- .../group/GroupSavePreferencesComposer.ts | 28 +- .../outgoing/group/GroupSettingsComposer.ts | 28 +- .../outgoing/group/GroupUnfavoriteComposer.ts | 28 +- .../messages/outgoing/group/index.ts | 42 +- .../GetForumStatsMessageComposer.ts | 28 +- .../GetForumsListMessageComposer.ts | 28 +- .../groupforums/GetMessagesMessageComposer.ts | 28 +- .../groupforums/GetThreadMessageComposer.ts | 28 +- .../groupforums/GetThreadsMessageComposer.ts | 28 +- .../GetUnreadForumsCountMessageComposer.ts | 28 +- .../ModerateMessageMessageComposer.ts | 28 +- .../ModerateThreadMessageComposer.ts | 28 +- .../groupforums/PostMessageMessageComposer.ts | 28 +- .../UpdateForumReadMarkerMessageComposer.ts | 45 +- .../UpdateForumSettingsMessageComposer.ts | 28 +- .../UpdateThreadMessageComposer.ts | 28 +- .../messages/outgoing/groupforums/index.ts | 24 +- .../AuthenticationMessageComposer.ts | 41 +- .../handshake/ClientHelloMessageComposer.ts | 30 +- .../CompleteDiffieHandshakeMessageComposer.ts | 28 +- .../handshake/DisconnectMessageComposer.ts | 28 +- .../handshake/InfoRetrieveMessageComposer.ts | 28 +- .../InitDiffieHandshakeMessageComposer.ts | 28 +- .../outgoing/handshake/PongMessageComposer.ts | 28 +- .../handshake/SSOTicketMessageComposer.ts | 28 +- .../handshake/UniqueIDMessageComposer.ts | 28 +- .../handshake/VersionCheckMessageComposer.ts | 28 +- .../messages/outgoing/handshake/index.ts | 20 +- ...lForHelpFromForumMessageMessageComposer.ts | 28 +- ...llForHelpFromForumThreadMessageComposer.ts | 28 +- .../help/CallForHelpFromIMMessageComposer.ts | 28 +- .../CallForHelpFromPhotoMessageComposer.ts | 28 +- .../CallForHelpFromSelfieMessageComposer.ts | 28 +- .../help/CallForHelpMessageComposer.ts | 28 +- ...eviewGuideDecidesOnOfferMessageComposer.ts | 28 +- .../ChatReviewGuideDetachedMessageComposer.ts | 28 +- .../ChatReviewGuideVoteMessageComposer.ts | 28 +- .../ChatReviewSessionCreateMessageComposer.ts | 28 +- ...eletePendingCallsForHelpMessageComposer.ts | 28 +- .../help/GetCfhStatusMessageComposer.ts | 28 +- .../help/GetFaqCategoryMessageComposer.ts | 28 +- .../help/GetFaqTextMessageComposer.ts | 28 +- .../GetGuideReportingStatusMessageComposer.ts | 28 +- .../GetPendingCallsForHelpMessageComposer.ts | 28 +- .../outgoing/help/GetQuizQuestionsComposer.ts | 28 +- .../help/GuideSessionCreateMessageComposer.ts | 28 +- .../GuideSessionFeedbackMessageComposer.ts | 28 +- ...eSessionGetRequesterRoomMessageComposer.ts | 28 +- ...GuideSessionGuideDecidesMessageComposer.ts | 28 +- ...deSessionInviteRequesterMessageComposer.ts | 28 +- .../GuideSessionIsTypingMessageComposer.ts | 28 +- .../GuideSessionMessageMessageComposer.ts | 28 +- ...GuideSessionOnDutyUpdateMessageComposer.ts | 28 +- .../help/GuideSessionReportMessageComposer.ts | 28 +- ...eSessionRequesterCancelsMessageComposer.ts | 28 +- .../GuideSessionResolvedMessageComposer.ts | 28 +- .../outgoing/help/PostQuizAnswersComposer.ts | 28 +- .../help/SearchFaqsMessageComposer.ts | 28 +- .../messages/outgoing/help/index.ts | 60 +- .../communication/messages/outgoing/index.ts | 146 +- .../AvatarEffectActivatedComposer.ts | 28 +- .../AvatarEffectSelectedComposer.ts | 28 +- .../outgoing/inventory/avatareffect/index.ts | 4 +- .../badges/GetBadgePointLimitsComposer.ts | 28 +- .../GetIsBadgeRequestFulfilledComposer.ts | 28 +- .../inventory/badges/RequestABadgeComposer.ts | 28 +- .../inventory/badges/RequestBadgesComposer.ts | 28 +- .../badges/SetActivatedBadgesComposer.ts | 39 +- .../outgoing/inventory/badges/index.ts | 10 +- .../inventory/bots/GetBotInventoryComposer.ts | 28 +- .../messages/outgoing/inventory/bots/index.ts | 2 +- .../inventory/furni/FurnitureListComposer.ts | 28 +- ...uestFurniInventoryWhenNotInRoomComposer.ts | 28 +- .../outgoing/inventory/furni/index.ts | 4 +- .../messages/outgoing/inventory/index.ts | 14 +- .../pets/CancelPetBreedingComposer.ts | 28 +- .../pets/ConfirmPetBreedingComposer.ts | 28 +- .../inventory/pets/RequestPetsComposer.ts | 28 +- .../messages/outgoing/inventory/pets/index.ts | 6 +- .../trading/TradingAcceptComposer.ts | 28 +- .../trading/TradingCancelComposer.ts | 28 +- .../inventory/trading/TradingCloseComposer.ts | 28 +- .../trading/TradingConfirmationComposer.ts | 28 +- .../trading/TradingListAddItemComposer.ts | 28 +- .../trading/TradingListAddItemsComposer.ts | 28 +- .../trading/TradingListRemoveItemComposer.ts | 28 +- .../inventory/trading/TradingOpenComposer.ts | 28 +- .../trading/TradingUnacceptComposer.ts | 28 +- .../outgoing/inventory/trading/index.ts | 18 +- .../unseen/UnseenResetCategoryComposer.ts | 28 +- .../unseen/UnseenResetItemsComposer.ts | 28 +- .../outgoing/inventory/unseen/index.ts | 4 +- .../landingview/GetPromoArticlesComposer.ts | 28 +- .../messages/outgoing/landingview/index.ts | 4 +- .../votes/CommunityGoalVoteMessageComposer.ts | 28 +- .../outgoing/landingview/votes/index.ts | 2 +- .../BuyMarketplaceOfferMessageComposer.ts | 28 +- .../BuyMarketplaceTokensMessageComposer.ts | 28 +- .../CancelMarketplaceOfferMessageComposer.ts | 28 +- .../GetMarketplaceCanMakeOfferComposer.ts | 28 +- ...MarketplaceConfigurationMessageComposer.ts | 28 +- .../GetMarketplaceItemStatsComposer.ts | 28 +- .../GetMarketplaceOffersMessageComposer.ts | 28 +- .../GetMarketplaceOwnOffersMessageComposer.ts | 28 +- .../marketplace/MakeOfferMessageComposer.ts | 28 +- ...mMarketplaceOfferCreditsMessageComposer.ts | 28 +- .../messages/outgoing/marketplace/index.ts | 20 +- .../CloseIssueDefaultActionMessageComposer.ts | 28 +- .../moderation/CloseIssuesMessageComposer.ts | 34 +- .../DefaultSanctionMessageComposer.ts | 35 +- .../GetCfhChatlogMessageComposer.ts | 29 +- .../GetModeratorRoomInfoMessageComposer.ts | 28 +- .../GetModeratorUserInfoMessageComposer.ts | 28 +- .../GetRoomChatlogMessageComposer.ts | 28 +- .../GetRoomVisitsMessageComposer.ts | 28 +- .../GetUserChatlogMessageComposer.ts | 28 +- .../moderation/ModAlertMessageComposer.ts | 35 +- .../moderation/ModBanMessageComposer.ts | 35 +- .../moderation/ModKickMessageComposer.ts | 35 +- .../moderation/ModMessageMessageComposer.ts | 43 +- .../moderation/ModMuteMessageComposer.ts | 35 +- .../moderation/ModToolPreferencesComposer.ts | 28 +- .../moderation/ModToolSanctionComposer.ts | 28 +- .../ModTradingLockMessageComposer.ts | 35 +- .../moderation/ModerateRoomMessageComposer.ts | 28 +- .../ModeratorActionMessageComposer.ts | 40 +- .../moderation/PickIssuesMessageComposer.ts | 28 +- .../ReleaseIssuesMessageComposer.ts | 28 +- .../messages/outgoing/moderation/index.ts | 42 +- ...ysteryBoxWaitingCanceledMessageComposer.ts | 28 +- .../messages/outgoing/mysterybox/index.ts | 2 +- .../AddFavouriteRoomMessageComposer.ts | 28 +- .../navigator/CanCreateRoomMessageComposer.ts | 28 +- .../navigator/CancelEventMessageComposer.ts | 28 +- .../CompetitionRoomsSearchMessageComposer.ts | 28 +- .../navigator/ConvertGlobalRoomIdComposer.ts | 28 +- .../navigator/CreateFlatMessageComposer.ts | 28 +- .../DeleteFavouriteRoomMessageComposer.ts | 28 +- .../navigator/EditEventMessageComposer.ts | 28 +- ...ardToARandomPromotedRoomMessageComposer.ts | 28 +- .../ForwardToSomeRoomMessageComposer.ts | 28 +- ...tCategoriesWithUserCountMessageComposer.ts | 28 +- .../GetCustomRoomFilterMessageComposer.ts | 28 +- .../navigator/GetGuestRoomMessageComposer.ts | 28 +- .../GetOfficialRoomsMessageComposer.ts | 28 +- .../GetPopularRoomTagsMessageComposer.ts | 28 +- .../GetUserEventCatsMessageComposer.ts | 28 +- .../GetUserFlatCatsMessageComposer.ts | 28 +- .../GuildBaseSearchMessageComposer.ts | 28 +- .../MyFavouriteRoomsSearchMessageComposer.ts | 28 +- ...requentRoomHistorySearchMessageComposer.ts | 28 +- .../MyFriendsRoomsSearchMessageComposer.ts | 28 +- .../MyGuildBasesSearchMessageComposer.ts | 28 +- .../MyRecommendedRoomsMessageComposer.ts | 28 +- .../MyRoomHistorySearchMessageComposer.ts | 28 +- .../MyRoomRightsSearchMessageComposer.ts | 28 +- .../navigator/MyRoomsSearchMessageComposer.ts | 28 +- .../NavigatorCategoryListModeComposer.ts | 28 +- .../NavigatorDeleteSavedSearchComposer.ts | 28 +- .../navigator/NavigatorInitComposer.ts | 28 +- .../navigator/NavigatorSearchCloseComposer.ts | 28 +- .../navigator/NavigatorSearchComposer.ts | 28 +- .../navigator/NavigatorSearchOpenComposer.ts | 28 +- .../navigator/NavigatorSearchSaveComposer.ts | 28 +- .../NavigatorSettingsSaveComposer.ts | 28 +- .../PopularRoomsSearchMessageComposer.ts | 28 +- .../navigator/RateFlatMessageComposer.ts | 28 +- .../RemoveOwnRoomRightsRoomMessageComposer.ts | 28 +- .../RoomAdEventTabAdClickedComposer.ts | 28 +- .../navigator/RoomAdEventTabViewedComposer.ts | 28 +- .../navigator/RoomAdSearchMessageComposer.ts | 28 +- .../RoomTextSearchMessageComposer.ts | 28 +- ...sWhereMyFriendsAreSearchMessageComposer.ts | 28 +- ...msWithHighestScoreSearchMessageComposer.ts | 28 +- .../SetRoomSessionTagsMessageComposer.ts | 28 +- .../ToggleStaffPickMessageComposer.ts | 28 +- .../UpdateHomeRoomMessageComposer.ts | 28 +- .../UpdateRoomFilterMessageComposer.ts | 28 +- .../UpdateRoomThumbnailMessageComposer.ts | 28 +- .../messages/outgoing/navigator/index.ts | 96 +- .../nux/NewUserExperienceGetGiftsComposer.ts | 41 +- .../nux/NewUserExperienceGetGiftsSelection.ts | 41 +- .../NewUserExperienceScriptProceedComposer.ts | 28 +- .../messages/outgoing/nux/index.ts | 6 +- .../outgoing/pet/GetPetCommandsComposer.ts | 28 +- .../messages/outgoing/pet/PetMountComposer.ts | 28 +- .../outgoing/pet/PetRespectComposer.ts | 28 +- .../outgoing/pet/PetSupplementComposer.ts | 28 +- .../outgoing/pet/RemovePetSaddleComposer.ts | 28 +- .../outgoing/pet/RequestPetInfoComposer.ts | 28 +- .../outgoing/pet/TogglePetBreedingComposer.ts | 28 +- .../outgoing/pet/TogglePetRidingComposer.ts | 28 +- .../outgoing/pet/UsePetProductComposer.ts | 28 +- .../messages/outgoing/pet/index.ts | 18 +- .../outgoing/poll/PollAnswerComposer.ts | 28 +- .../outgoing/poll/PollRejectComposer.ts | 28 +- .../outgoing/poll/PollStartComposer.ts | 28 +- .../messages/outgoing/poll/index.ts | 6 +- .../quest/AcceptQuestMessageComposer.ts | 28 +- .../quest/ActivateQuestMessageComposer.ts | 28 +- .../quest/CancelQuestMessageComposer.ts | 28 +- ...iendRequestQuestCompleteMessageComposer.ts | 28 +- ...ommunityGoalEarnedPrizesMessageComposer.ts | 28 +- ...tCommunityGoalHallOfFameMessageComposer.ts | 28 +- ...GetCommunityGoalProgressMessageComposer.ts | 28 +- ...currentUsersGoalProgressMessageComposer.ts | 28 +- ...GetConcurrentUsersRewardMessageComposer.ts | 28 +- .../quest/GetDailyQuestMessageComposer.ts | 28 +- .../quest/GetQuestsMessageComposer.ts | 28 +- .../GetSeasonalQuestsOnlyMessageComposer.ts | 28 +- .../quest/OpenQuestTrackerMessageComposer.ts | 28 +- ...RedeemCommunityGoalPrizeMessageComposer.ts | 28 +- .../quest/RejectQuestMessageComposer.ts | 28 +- .../quest/StartCampaignMessageComposer.ts | 28 +- .../messages/outgoing/quest/index.ts | 32 +- .../GetRecyclerStatusMessageComposer.ts | 28 +- .../recycler/RecycleItemsMessageComposer.ts | 41 +- .../messages/outgoing/recycler/index.ts | 4 +- .../room/RedeemItemClothingComposer.ts | 28 +- .../room/access/RoomDoorbellAccessComposer.ts | 28 +- .../outgoing/room/access/RoomEnterComposer.ts | 28 +- .../messages/outgoing/room/access/index.ts | 4 +- .../action/RemoveAllRightsMessageComposer.ts | 28 +- .../action/RoomAmbassadorAlertComposer.ts | 28 +- .../room/action/RoomBanUserComposer.ts | 28 +- .../room/action/RoomDeleteComposer.ts | 28 +- .../room/action/RoomGiveRightsComposer.ts | 28 +- .../room/action/RoomKickUserComposer.ts | 28 +- .../room/action/RoomMuteUserComposer.ts | 28 +- .../room/action/RoomTakeRightsComposer.ts | 28 +- .../room/action/RoomUnbanUserComposer.ts | 28 +- .../messages/outgoing/room/action/index.ts | 18 +- .../bots/RequestBotConfigurationComposer.ts | 28 +- .../messages/outgoing/room/bots/index.ts | 2 +- .../room/data/RoomBannedUsersComposer.ts | 28 +- .../room/data/RoomSettingsComposer.ts | 28 +- .../room/data/RoomUsersWithRightsComposer.ts | 28 +- .../room/data/SaveRoomSettingsComposer.ts | 130 +- .../messages/outgoing/room/data/index.ts | 8 +- .../outgoing/room/engine/BotPlaceComposer.ts | 28 +- .../outgoing/room/engine/BotRemoveComposer.ts | 28 +- .../room/engine/BotSkillSaveComposer.ts | 28 +- .../engine/CompostPlantMessageComposer.ts | 12 +- .../room/engine/GetItemDataComposer.ts | 28 +- .../room/engine/HarvestPetMessageComposer.ts | 12 +- .../room/engine/PetMessageComposer.ts | 28 +- .../outgoing/room/engine/PetMoveComposer.ts | 28 +- .../outgoing/room/engine/PetPlaceComposer.ts | 28 +- .../outgoing/room/engine/PetRemoveComposer.ts | 28 +- .../room/engine/RemoveWallItemComposer.ts | 28 +- .../SetClothingChangeDataMessageComposer.ts | 28 +- .../room/engine/SetItemDataMessageComposer.ts | 28 +- .../engine/SetObjectDataMessageComposer.ts | 30 +- .../messages/outgoing/room/engine/index.ts | 28 +- .../AddSpamWallPostItMessageComposer.ts | 28 +- .../ExtendRentOrBuyoutFurniMessageComposer.ts | 28 +- ...endRentOrBuyoutStripItemMessageComposer.ts | 28 +- .../furniture/FurnitureAliasesComposer.ts | 28 +- .../furniture/FurnitureGroupInfoComposer.ts | 28 +- .../room/furniture/FurniturePickupComposer.ts | 28 +- .../room/furniture/FurniturePlaceComposer.ts | 63 +- .../furniture/FurniturePlacePaintComposer.ts | 28 +- .../furniture/FurniturePostItPlaceComposer.ts | 28 +- .../GetRentOrBuyoutOfferMessageComposer.ts | 28 +- .../OpenMysteryTrophyMessageComposer.ts | 28 +- .../OpenPetPackageMessageComposer.ts | 28 +- .../room/furniture/OpenWelcomeGiftComposer.ts | 28 +- .../RentableSpaceCancelRentMessageComposer.ts | 28 +- .../RentableSpaceRentMessageComposer.ts | 28 +- .../RentableSpaceStatusMessageComposer.ts | 28 +- .../dimmer/MoodlightSettingsComposer.ts | 28 +- .../dimmer/MoodlightSettingsSaveComposer.ts | 28 +- .../dimmer/MoodlightTogggleStateComposer.ts | 28 +- .../outgoing/room/furniture/dimmer/index.ts | 6 +- .../floor/FurnitureFloorUpdateComposer.ts | 28 +- .../outgoing/room/furniture/floor/index.ts | 2 +- .../messages/outgoing/room/furniture/index.ts | 48 +- .../logic/FurnitureColorWheelComposer.ts | 28 +- .../logic/FurnitureDiceActivateComposer.ts | 28 +- .../logic/FurnitureDiceDeactivateComposer.ts | 28 +- .../logic/FurnitureExchangeComposer.ts | 28 +- .../logic/FurnitureMultiStateComposer.ts | 28 +- .../logic/FurnitureOneWayDoorComposer.ts | 28 +- .../logic/FurnitureRandomStateComposer.ts | 28 +- .../logic/FurnitureStackHeightComposer.ts | 28 +- .../logic/FurnitureWallMultiStateComposer.ts | 28 +- .../outgoing/room/furniture/logic/index.ts | 18 +- .../FurnitureMannequinSaveLookComposer.ts | 28 +- .../FurnitureMannequinSaveNameComposer.ts | 28 +- .../room/furniture/mannequin/index.ts | 4 +- .../furniture/presents/OpenPresentComposer.ts | 28 +- .../outgoing/room/furniture/presents/index.ts | 2 +- .../furniture/toner/ApplyTonerComposer.ts | 28 +- .../outgoing/room/furniture/toner/index.ts | 2 +- .../wall/FurnitureWallUpdateComposer.ts | 28 +- .../outgoing/room/furniture/wall/index.ts | 2 +- ...olYoutubeDisplayPlaybackMessageComposer.ts | 28 +- .../GetYoutubeDisplayStatusMessageComposer.ts | 28 +- ...etYoutubeDisplayPlaylistMessageComposer.ts | 28 +- .../outgoing/room/furniture/youtube/index.ts | 6 +- .../messages/outgoing/room/index.ts | 38 +- .../layout/GetOccupiedTilesMessageComposer.ts | 28 +- .../layout/GetRoomEntryDataMessageComposer.ts | 28 +- .../layout/GetRoomEntryTileMessageComposer.ts | 28 +- .../UpdateFloorPropertiesMessageComposer.ts | 28 +- .../messages/outgoing/room/layout/index.ts | 8 +- .../room/pets/BreedPetsMessageComposer.ts | 34 +- .../room/pets/PetSelectedMessageComposer.ts | 28 +- .../messages/outgoing/room/pets/index.ts | 4 +- .../session/ChangeQueueMessageComposer.ts | 28 +- .../room/session/GoToFlatMessageComposer.ts | 28 +- .../messages/outgoing/room/session/index.ts | 4 +- .../room/unit/RoomUnitActionComposer.ts | 28 +- .../room/unit/RoomUnitDanceComposer.ts | 28 +- .../room/unit/RoomUnitDropHandItemComposer.ts | 28 +- .../room/unit/RoomUnitGiveHandItemComposer.ts | 28 +- .../unit/RoomUnitGiveHandItemPetComposer.ts | 28 +- .../room/unit/RoomUnitLookComposer.ts | 28 +- .../room/unit/RoomUnitPostureComposer.ts | 28 +- .../room/unit/RoomUnitSignComposer.ts | 28 +- .../room/unit/RoomUnitWalkComposer.ts | 28 +- .../room/unit/chat/RoomUnitChatComposer.ts | 28 +- .../unit/chat/RoomUnitChatShoutComposer.ts | 28 +- .../unit/chat/RoomUnitChatStyleComposer.ts | 28 +- .../unit/chat/RoomUnitChatWhisperComposer.ts | 28 +- .../unit/chat/RoomUnitTypingStartComposer.ts | 28 +- .../unit/chat/RoomUnitTypingStopComposer.ts | 28 +- .../messages/outgoing/room/unit/chat/index.ts | 12 +- .../messages/outgoing/room/unit/index.ts | 20 +- ...oomNetworkOpenConnectionMessageComposer.ts | 28 +- .../messages/outgoing/roomdirectory/index.ts | 2 +- .../ApplySnapshotMessageComposer.ts | 28 +- .../roomevents/OpenMessageComposer.ts | 28 +- .../outgoing/roomevents/RoomMuteComposer.ts | 28 +- .../roomevents/UpdateActionMessageComposer.ts | 28 +- .../UpdateConditionMessageComposer.ts | 28 +- .../UpdateTriggerMessageComposer.ts | 28 +- .../messages/outgoing/roomevents/index.ts | 12 +- .../roomsettings/SaveableRoomSettingsData.ts | 387 +- ...ateRoomCategoryAndTradeSettingsComposer.ts | 28 +- .../messages/outgoing/roomsettings/index.ts | 4 +- .../outgoing/sound/AddJukeboxDiskComposer.ts | 28 +- .../GetJukeboxPlayListMessageComposer.ts | 28 +- .../sound/GetNowPlayingMessageComposer.ts | 28 +- .../sound/GetOfficialSongIdMessageComposer.ts | 28 +- .../sound/GetSongInfoMessageComposer.ts | 28 +- .../GetSoundMachinePlayListMessageComposer.ts | 28 +- .../sound/GetSoundSettingsComposer.ts | 28 +- .../sound/GetUserSongDisksMessageComposer.ts | 28 +- .../sound/RemoveJukeboxDiskComposer.ts | 28 +- .../messages/outgoing/sound/index.ts | 18 +- .../GetTalentTrackLevelMessageComposer.ts | 28 +- .../outgoing/talent/TalentTrackComposer.ts | 28 +- .../messages/outgoing/talent/index.ts | 4 +- .../LagWarningReportMessageComposer.ts | 28 +- .../tracking/PerformanceLogMessageComposer.ts | 52 +- .../messages/outgoing/tracking/index.ts | 4 +- .../user/ApproveNameMessageComposer.ts | 28 +- .../outgoing/user/CatalogGroupsComposer.ts | 28 +- .../outgoing/user/ChangeEmailComposer.ts | 28 +- .../outgoing/user/GetEmailStatusComposer.ts | 28 +- .../GetHabboGroupBadgesMessageComposer.ts | 28 +- .../user/ScrGetKickbackInfoMessageComposer.ts | 28 +- .../user/UnblockGroupMemberMessageComposer.ts | 28 +- .../outgoing/user/UserRespectComposer.ts | 28 +- .../user/WelcomeGiftChangeEmailComposer.ts | 28 +- ...GetExtendedProfileByNameMessageComposer.ts | 28 +- .../user/data/GetIgnoredUsersComposer.ts | 28 +- .../outgoing/user/data/GetUserTagsComposer.ts | 28 +- .../outgoing/user/data/IgnoreUserComposer.ts | 28 +- .../user/data/IgnoreUserIdComposer.ts | 28 +- .../user/data/UnignoreUserComposer.ts | 28 +- .../user/data/UserCurrentBadgesComposer.ts | 28 +- .../outgoing/user/data/UserFigureComposer.ts | 28 +- .../outgoing/user/data/UserMottoComposer.ts | 28 +- .../outgoing/user/data/UserProfileComposer.ts | 28 +- .../user/data/UserRelationshipsComposer.ts | 28 +- .../messages/outgoing/user/data/index.ts | 22 +- .../messages/outgoing/user/index.ts | 28 +- .../currency/UserCurrencyComposer.ts | 28 +- .../outgoing/user/inventory/currency/index.ts | 2 +- .../messages/outgoing/user/inventory/index.ts | 4 +- .../subscription/UserSubscriptionComposer.ts | 28 +- .../user/inventory/subscription/index.ts | 2 +- .../UserSettingsCameraFollowComposer.ts | 28 +- .../settings/UserSettingsOldChatComposer.ts | 28 +- .../UserSettingsRoomInvitesComposer.ts | 28 +- .../settings/UserSettingsSoundComposer.ts | 28 +- .../messages/outgoing/user/settings/index.ts | 8 +- .../PeerUsersClassificationMessageComposer.ts | 28 +- .../RoomUsersClassificationMessageComposer.ts | 28 +- .../outgoing/userclassification/index.ts | 4 +- .../InterstitialMessageParser.ts | 34 +- .../advertisement/RoomAdErrorMessageParser.ts | 47 +- .../messages/parser/advertisement/index.ts | 4 +- .../AvailabilityStatusMessageParser.ts | 69 +- .../AvailabilityTimeMessageParser.ts | 47 +- .../HotelClosedAndOpensMessageParser.ts | 47 +- .../HotelClosesAndWillOpenAtMessageParser.ts | 60 +- .../HotelWillCloseInMinutesMessageParser.ts | 34 +- .../MaintenanceStatusMessageParser.ts | 69 +- .../messages/parser/availability/index.ts | 12 +- .../ChangeUserNameResultMessageParser.ts | 77 +- .../CheckUserNameResultMessageParser.ts | 77 +- .../parser/avatar/FigureUpdateParser.ts | 49 +- .../messages/parser/avatar/OutfitData.ts | 43 +- .../parser/avatar/WardrobeMessageParser.ts | 66 +- .../messages/parser/avatar/index.ts | 10 +- .../parser/bots/BotAddedToInventoryParser.ts | 49 +- .../messages/parser/bots/BotData.ts | 67 +- .../parser/bots/BotInventoryMessageParser.ts | 55 +- .../parser/bots/BotReceivedMessageParser.ts | 49 +- .../bots/BotRemovedFromInventoryParser.ts | 34 +- .../messages/parser/bots/index.ts | 10 +- .../callforhelp/CallForHelpCategoryData.ts | 65 +- .../callforhelp/CallForHelpTopicData.ts | 45 +- .../callforhelp/CfhSanctionMessageParser.ts | 62 +- .../parser/callforhelp/CfhSanctionTypeData.ts | 71 +- .../callforhelp/CfhTopicsInitMessageParser.ts | 55 +- .../SanctionStatusMessageParser.ts | 168 +- .../messages/parser/callforhelp/index.ts | 12 +- .../CameraPublishStatusMessageParser.ts | 60 +- .../camera/CameraPurchaseOKMessageParser.ts | 21 +- .../camera/CameraStorageUrlMessageParser.ts | 34 +- .../camera/CompetitionStatusMessageParser.ts | 47 +- .../parser/camera/InitCameraMessageParser.ts | 60 +- .../camera/ThumbnailStatusMessageParser.ts | 54 +- .../messages/parser/camera/index.ts | 12 +- .../parser/campaign/CampaignCalendarData.ts | 165 +- .../CampaignCalendarDataMessageParser.ts | 38 +- ...CampaignCalendarDoorOpenedMessageParser.ts | 73 +- .../messages/parser/campaign/index.ts | 6 +- .../catalog/BonusRareInfoMessageParser.ts | 73 +- .../BuildersClubFurniCountMessageParser.ts | 34 +- ...dersClubSubscriptionStatusMessageParser.ts | 75 +- .../parser/catalog/BundleDiscountRuleset.ts | 74 +- .../BundleDiscountRulesetMessageParser.ts | 36 +- .../catalog/CatalogIndexMessageParser.ts | 58 +- .../parser/catalog/CatalogLocalizationData.ts | 56 +- .../catalog/CatalogPageExpirationParser.ts | 73 +- .../catalog/CatalogPageMessageOfferData.ts | 155 +- .../catalog/CatalogPageMessageParser.ts | 162 +- .../catalog/CatalogPageMessageProductData.ts | 151 +- ...alogPageWithEarliestExpiryMessageParser.ts | 60 +- .../catalog/CatalogPublishedMessageParser.ts | 47 +- .../messages/parser/catalog/ClubGiftData.ts | 54 +- .../parser/catalog/ClubGiftInfoParser.ts | 109 +- .../parser/catalog/ClubGiftSelectedParser.ts | 66 +- .../messages/parser/catalog/ClubOfferData.ts | 157 +- .../parser/catalog/ClubOfferExtendData.ts | 72 +- .../DirectSMSClubBuyAvailableMessageParser.ts | 73 +- .../messages/parser/catalog/FrontPageItem.ts | 171 +- .../catalog/GiftReceiverNotFoundParser.ts | 25 +- .../GiftWrappingConfigurationParser.ts | 168 +- .../HabboClubExtendOfferMessageParser.ts | 36 +- .../catalog/HabboClubOffersMessageParser.ts | 51 +- .../messages/parser/catalog/INodeData.ts | 17 +- .../catalog/IsOfferGiftableMessageParser.ts | 47 +- .../catalog/LimitedEditionSoldOutParser.ts | 21 +- .../LimitedOfferAppearingNextMessageParser.ts | 73 +- .../messages/parser/catalog/NodeData.ts | 153 +- .../catalog/NotEnoughBalanceMessageParser.ts | 60 +- .../catalog/ProductOfferMessageParser.ts | 36 +- .../catalog/PurchaseErrorMessageParser.ts | 34 +- .../PurchaseNotAllowedMessageParser.ts | 34 +- .../catalog/PurchaseOKMessageOfferData.ts | 185 +- .../parser/catalog/PurchaseOKMessageParser.ts | 36 +- .../catalog/RoomAdPurchaseInfoEventParser.ts | 66 +- ...SeasonalCalendarDailyOfferMessageParser.ts | 49 +- .../parser/catalog/SellablePetPaletteData.ts | 97 +- .../catalog/SellablePetPalettesParser.ts | 66 +- .../parser/catalog/TargetedOfferData.ts | 232 +- .../catalog/TargetedOfferNotFoundParser.ts | 21 +- .../parser/catalog/TargetedOfferParser.ts | 36 +- .../VoucherRedeemErrorMessageParser.ts | 34 +- .../catalog/VoucherRedeemOkMessageParser.ts | 47 +- .../messages/parser/catalog/index.ts | 88 +- .../parser/client/ClientPingParser.ts | 21 +- .../messages/parser/client/index.ts | 2 +- ...mpetitionEntrySubmitResultMessageParser.ts | 125 +- .../CompetitionVotingInfoMessageParser.ts | 80 +- .../CompetitionVotingInfoResult.ts | 9 +- .../CurrentTimingCodeMessageParser.ts | 45 +- .../IsUserPartOfCompetitionMessageParser.ts | 45 +- .../NoOwnedRoomsAlertMessageParser.ts | 19 +- .../competition/SecondsUntilMessageParser.ts | 45 +- .../messages/parser/competition/index.ts | 14 +- .../CraftableProductsMessageParser.ts | 79 +- .../CraftingRecipeIngredientParser.ts | 32 +- .../crafting/CraftingRecipeMessageParser.ts | 50 +- .../CraftingRecipesAvailableMessageParser.ts | 47 +- .../crafting/CraftingResultMessageParser.ts | 50 +- .../crafting/CraftingResultObjectParser.ts | 32 +- .../messages/parser/crafting/index.ts | 12 +- .../parser/desktop/DesktopViewParser.ts | 21 +- .../messages/parser/desktop/index.ts | 2 +- .../friendlist/AcceptFriendFailureData.ts | 34 +- .../friendlist/AcceptFriendResultParser.ts | 51 +- .../FindFriendsProcessResultParser.ts | 34 +- .../friendlist/FollowFriendFailedParser.ts | 34 +- .../parser/friendlist/FriendCategoryData.ts | 34 +- .../FriendListFragmentMessageParser.ts | 79 +- .../friendlist/FriendListUpdateParser.ts | 118 +- .../friendlist/FriendNotificationParser.ts | 60 +- .../parser/friendlist/FriendParser.ts | 166 +- .../parser/friendlist/FriendRequestData.ts | 56 +- .../parser/friendlist/FriendRequestsParser.ts | 66 +- .../friendlist/HabboSearchResultData.ts | 111 +- .../friendlist/HabboSearchResultParser.ts | 73 +- .../friendlist/InstantMessageErrorParser.ts | 60 +- .../parser/friendlist/MessageErrorParser.ts | 47 +- .../parser/friendlist/MessengerInitParser.ts | 92 +- .../friendlist/MiniMailNewMessageParser.ts | 21 +- .../friendlist/MiniMailUnreadCountParser.ts | 34 +- .../friendlist/NewConsoleMessageParser.ts | 82 +- .../NewFriendRequestMessageParser.ts | 36 +- .../friendlist/RoomInviteErrorParser.ts | 64 +- .../friendlist/RoomInviteMessageParser.ts | 47 +- .../messages/parser/friendlist/index.ts | 44 +- .../Game2AccountGameStatusMessageParser.ts | 62 +- .../Game2GameDirectoryStatusMessageParser.ts | 88 +- .../Game2InArenaQueueMessageParser.ts | 34 +- .../Game2JoiningGameFailedMessageParser.ts | 50 +- .../Game2StartingGameFailedMessageParser.ts | 38 +- .../Game2StopCounterMessageParser.ts | 21 +- .../Game2UserLeftGameMessageParser.ts | 34 +- .../messages/parser/game/directory/index.ts | 14 +- .../messages/parser/game/index.ts | 6 +- ...evementResolutionCompletedMessageParser.ts | 43 +- ...ievementResolutionProgressMessageParser.ts | 99 +- .../AchievementResolutionsMessageParser.ts | 69 +- .../parser/game/lobby/GameAchievementData.ts | 52 +- .../lobby/GameAchievementsMessageParser.ts | 68 +- .../game/lobby/GameConfigurationData.ts | 74 +- .../game/lobby/GameInviteMessageParser.ts | 43 +- .../game/lobby/GameListMessageParser.ts | 69 +- .../game/lobby/GameStatusMessageParser.ts | 54 +- .../game/lobby/JoinedQueueMessageParser.ts | 32 +- .../lobby/JoiningQueueFailedMessageParser.ts | 45 +- .../game/lobby/LeftQueueMessageParser.ts | 32 +- .../game/lobby/LoadGameMessageParser.ts | 135 +- .../parser/game/lobby/LoadGameUrlParser.ts | 60 +- .../game/lobby/UnloadGameMessageParser.ts | 43 +- .../UserGameAchievementsMessageParser.ts | 26 +- .../messages/parser/game/lobby/index.ts | 32 +- .../score/Game2WeeklyLeaderboardParser.ts | 86 +- .../game/score/GameRewardWinnerEntry.ts | 65 +- .../parser/game/score/LeaderboardEntry.ts | 76 +- .../game/score/WeeklyGameRewardParser.ts | 88 +- .../score/WeeklyGameRewardWinnersParser.ts | 62 +- .../messages/parser/game/score/index.ts | 10 +- .../parser/generic/GenericErrorParser.ts | 34 +- .../messages/parser/generic/index.ts | 2 +- .../gifts/PhoneCollectionStateParser.ts | 58 +- .../gifts/TryPhoneNumberResultParser.ts | 45 +- .../gifts/TryVerificationCodeResultParser.ts | 47 +- .../messages/parser/gifts/index.ts | 6 +- .../parser/group/GroupBadgePartsParser.ts | 171 +- .../parser/group/GroupBuyDataParser.ts | 70 +- .../group/GroupConfirmMemberRemoveParser.ts | 47 +- .../parser/group/GroupInformationParser.ts | 244 +- .../parser/group/GroupMembersParser.ts | 183 +- .../parser/group/GroupPurchasedParser.ts | 47 +- .../parser/group/GroupSettingsParser.ts | 224 +- .../HabboGroupDeactivatedMessageParser.ts | 30 +- .../messages/parser/group/index.ts | 18 +- .../parser/group/utils/GroupDataBadgePart.ts | 41 +- .../parser/group/utils/GroupMemberParser.ts | 110 +- .../messages/parser/group/utils/index.ts | 4 +- .../parser/groupforums/ExtendedForumData.ts | 174 +- .../messages/parser/groupforums/ForumData.ts | 207 +- .../groupforums/ForumDataMessageParser.ts | 36 +- .../groupforums/GetForumsListMessageParser.ts | 107 +- .../parser/groupforums/GuildForumThread.ts | 320 +- .../groupforums/GuildForumThreadsParser.ts | 94 +- .../parser/groupforums/MessageData.ts | 262 +- .../groupforums/PostMessageMessageParser.ts | 62 +- .../groupforums/PostThreadMessageParser.ts | 49 +- .../ThreadMessagesMessageParser.ts | 117 +- .../UnreadForumsCountMessageParser.ts | 34 +- .../groupforums/UpdateMessageMessageParser.ts | 62 +- .../groupforums/UpdateThreadMessageParser.ts | 49 +- .../messages/parser/groupforums/index.ts | 26 +- .../CompleteDiffieHandshakeParser.ts | 52 +- .../handshake/DisconnectReasonParser.ts | 45 +- .../handshake/IdentityAccountsParser.ts | 48 +- .../handshake/InitDiffieHandshakeParser.ts | 43 +- .../handshake/NoobnessLevelMessageParser.ts | 34 +- .../messages/parser/handshake/index.ts | 10 +- .../CallForHelpDisabledNotifyMessageParser.ts | 32 +- ...ForHelpPendingCallsDeletedMessageParser.ts | 19 +- .../CallForHelpPendingCallsMessageParser.ts | 69 +- .../help/CallForHelpReplyMessageParser.ts | 32 +- .../help/CallForHelpResultMessageParser.ts | 47 +- .../ChatReviewSessionDetachedMessageParser.ts | 20 +- ...eviewSessionOfferedToGuideMessageParser.ts | 32 +- .../ChatReviewSessionResultsMessageParser.ts | 70 +- .../ChatReviewSessionStartedMessageParser.ts | 41 +- ...tReviewSessionVotingStatusMessageParser.ts | 57 +- .../help/GuideOnDutyStatusMessageParser.ts | 73 +- .../help/GuideReportingStatusMessageParser.ts | 73 +- .../help/GuideSessionAttachedMessageParser.ts | 73 +- .../help/GuideSessionDetachedMessageParser.ts | 21 +- .../help/GuideSessionEndedMessageParser.ts | 34 +- .../help/GuideSessionErrorMessageParser.ts | 44 +- ...eSessionInvitedToGuideRoomMessageParser.ts | 47 +- .../help/GuideSessionMessageMessageParser.ts | 47 +- ...uideSessionPartnerIsTypingMessageParser.ts | 34 +- .../GuideSessionRequesterRoomMessageParser.ts | 34 +- .../help/GuideSessionStartedMessageParser.ts | 99 +- .../GuideTicketCreationResultMessageParser.ts | 42 +- .../GuideTicketResolutionMessageParser.ts | 40 +- .../parser/help/HotelMergeNameChangeParser.ts | 21 +- .../IssueCloseNotificationMessageParser.ts | 47 +- .../parser/help/PendingGuideTicketData.ts | 134 +- .../parser/help/QuizDataMessageParser.ts | 51 +- .../parser/help/QuizResultsMessageParser.ts | 51 +- .../messages/parser/help/index.ts | 56 +- .../communication/messages/parser/index.ts | 152 +- .../inventory/achievements/AchievementData.ts | 238 +- .../achievements/AchievementParser.ts | 36 +- .../achievements/AchievementResolutionData.ts | 87 +- .../achievements/AchievementsParser.ts | 68 +- .../achievements/AchievementsScoreParser.ts | 34 +- .../parser/inventory/achievements/index.ts | 10 +- .../inventory/avatareffect/AvatarEffect.ts | 99 +- .../AvatarEffectActivatedParser.ts | 60 +- .../avatareffect/AvatarEffectAddedParser.ts | 73 +- .../avatareffect/AvatarEffectExpiredParser.ts | 34 +- .../AvatarEffectSelectedParser.ts | 34 +- .../avatareffect/AvatarEffectsParser.ts | 69 +- .../parser/inventory/avatareffect/index.ts | 12 +- .../inventory/badges/BadgeAndPointLimit.ts | 34 +- .../badges/BadgePointLimitsParser.ts | 70 +- .../inventory/badges/BadgeReceivedParser.ts | 47 +- .../parser/inventory/badges/BadgesParser.ts | 104 +- .../badges/IsBadgeRequestFulfilledParser.ts | 43 +- .../messages/parser/inventory/badges/index.ts | 10 +- .../clothing/FigureSetIdsMessageParser.ts | 71 +- .../parser/inventory/clothing/_Str_8728.ts | 34 +- .../parser/inventory/clothing/_Str_9021.ts | 34 +- .../parser/inventory/clothing/index.ts | 6 +- .../FurnitureListAddOrUpdateParser.ts | 36 +- .../FurnitureListInvalidateParser.ts | 21 +- .../furniture/FurnitureListItemParser.ts | 339 +- .../furniture/FurnitureListParser.ts | 83 +- .../furniture/FurnitureListRemovedParser.ts | 34 +- .../furniture/FurniturePostItPlacedParser.ts | 47 +- .../inventory/furniture/IFurnitureItemData.ts | 51 +- .../furniture/PresentOpenedMessageParser.ts | 104 +- .../parser/inventory/furniture/index.ts | 16 +- .../messages/parser/inventory/index.ts | 16 +- .../pets/ConfirmBreedingRequestParser.ts | 125 +- .../pets/ConfirmBreedingResultParser.ts | 47 +- .../pets/GoToBreedingNestFailureParser.ts | 32 +- .../pets/NestBreedingSuccessParser.ts | 45 +- .../pets/PetAddedToInventoryParser.ts | 47 +- .../pets/PetBreedingMessageParser.ts | 66 +- .../messages/parser/inventory/pets/PetData.ts | 100 +- .../inventory/pets/PetFigureDataParser.ts | 102 +- .../inventory/pets/PetInventoryParser.ts | 79 +- .../pets/PetReceivedMessageParser.ts | 47 +- .../pets/PetRemovedFromInventoryParser.ts | 32 +- .../messages/parser/inventory/pets/index.ts | 22 +- .../purse/UserCreditsMessageParser.ts | 32 +- .../messages/parser/inventory/purse/index.ts | 2 +- .../inventory/trading/ItemDataStructure.ts | 247 +- .../inventory/trading/TradingAcceptParser.ts | 47 +- .../inventory/trading/TradingCloseParser.ts | 45 +- .../trading/TradingCompletedParser.ts | 21 +- .../trading/TradingConfirmationParser.ts | 21 +- .../trading/TradingListItemParser.ts | 169 +- .../trading/TradingNoSuchItemParser.ts | 21 +- .../inventory/trading/TradingNotOpenParser.ts | 21 +- .../trading/TradingOpenFailedParser.ts | 47 +- .../inventory/trading/TradingOpenParser.ts | 73 +- .../trading/TradingOtherNotAllowedParser.ts | 21 +- .../trading/TradingYouAreNotAllowedParser.ts | 21 +- .../parser/inventory/trading/index.ts | 24 +- .../parser/landingview/PromoArticleData.ts | 93 +- .../landingview/PromoArticlesMessageParser.ts | 47 +- .../messages/parser/landingview/index.ts | 6 +- .../votes/CommunityVoteReceivedParser.ts | 32 +- .../parser/landingview/votes/index.ts | 2 +- .../MarketplaceBuyOfferResultParser.ts | 71 +- .../MarketplaceCanMakeOfferResultParser.ts | 47 +- .../MarketplaceCancelOfferResultParser.ts | 47 +- .../MarketplaceConfigurationMessageParser.ts | 125 +- .../MarketplaceItemPostedParser.ts | 34 +- .../marketplace/MarketplaceItemStatsParser.ts | 142 +- .../parser/marketplace/MarketplaceOffer.ts | 138 +- .../marketplace/MarketplaceOfferData.ts | 199 +- .../marketplace/MarketplaceOffersParser.ts | 143 +- .../marketplace/MarketplaceOwnOffersParser.ts | 133 +- .../messages/parser/marketplace/index.ts | 20 +- .../parser/moderation/CfhChatlogData.ts | 67 +- .../moderation/CfhChatlogMessageParser.ts | 36 +- .../parser/moderation/ChatRecordData.ts | 167 +- .../parser/moderation/ChatlineData.ts | 63 +- .../messages/parser/moderation/INamed.ts | 5 +- .../moderation/IssueDeletedMessageParser.ts | 30 +- .../moderation/IssueInfoMessageParser.ts | 101 +- .../parser/moderation/IssueMessageData.ts | 300 +- .../IssuePickFailedMessageParser.ts | 77 +- .../messages/parser/moderation/ModRoomData.ts | 93 +- .../moderation/ModerationCautionParser.ts | 47 +- .../ModeratorActionResultMessageParser.ts | 45 +- .../parser/moderation/ModeratorInitData.ts | 211 +- .../moderation/ModeratorInitMessageParser.ts | 34 +- .../moderation/ModeratorMessageParser.ts | 47 +- .../ModeratorRoomInfoMessageParser.ts | 36 +- .../ModeratorToolPreferencesMessageParser.ts | 71 +- .../moderation/ModeratorUserInfoData.ts | 222 +- .../ModeratorUserInfoMessageParser.ts | 36 +- .../parser/moderation/PatternMatchData.ts | 65 +- .../moderation/RoomChatlogMessageParser.ts | 36 +- .../parser/moderation/RoomModerationData.ts | 122 +- .../parser/moderation/RoomVisitData.ts | 54 +- .../parser/moderation/RoomVisitsData.ts | 56 +- .../moderation/RoomVisitsMessageParser.ts | 32 +- .../moderation/UserBannedMessageParser.ts | 34 +- .../parser/moderation/UserChatlogData.ts | 50 +- .../moderation/UserChatlogMessageParser.ts | 36 +- .../messages/parser/moderation/index.ts | 56 +- .../CancelMysteryBoxWaitMessageParser.ts | 26 +- .../GotMysteryBoxPrizeMessageParser.ts | 44 +- .../parser/mysterybox/MysteryBoxKeysParser.ts | 47 +- .../ShowMysteryBoxWaitMessageParser.ts | 26 +- .../messages/parser/mysterybox/index.ts | 8 +- .../navigator/CanCreateRoomEventParser.ts | 47 +- .../navigator/CanCreateRoomMessageParser.ts | 47 +- .../CategoriesWithVisitorCountParser.ts | 34 +- .../CompetitionRoomsDataMessageParser.ts | 34 +- .../navigator/ConvertedRoomIdMessageParser.ts | 43 +- .../parser/navigator/DoorbellMessageParser.ts | 34 +- .../FavouriteChangedMessageParser.ts | 43 +- .../navigator/FavouritesMessageParser.ts | 58 +- .../FlatAccessDeniedMessageParser.ts | 34 +- .../navigator/FlatCreatedMessageParser.ts | 47 +- .../GetGuestRoomResultMessageParser.ts | 120 +- .../GuestRoomSearchResultMessageParser.ts | 35 +- .../navigator/NavigatorCategoryDataParser.ts | 123 +- .../navigator/NavigatorCollapsedParser.ts | 49 +- .../NavigatorEventCategoryDataParser.ts | 71 +- .../navigator/NavigatorHomeRoomParser.ts | 47 +- .../navigator/NavigatorLiftedDataParser.ts | 84 +- .../parser/navigator/NavigatorLiftedParser.ts | 51 +- .../navigator/NavigatorMetadataParser.ts | 51 +- .../NavigatorOpenRoomCreatorParser.ts | 21 +- .../parser/navigator/NavigatorSearchParser.ts | 36 +- .../navigator/NavigatorSearchesParser.ts | 51 +- .../navigator/NavigatorSettingsParser.ts | 99 +- .../parser/navigator/PopularRoomTagsData.ts | 72 +- .../PopularRoomTagsResultMessageParser.ts | 36 +- .../parser/navigator/PopularTagData.ts | 32 +- .../navigator/RoomEventCancelMessageParser.ts | 20 +- .../navigator/RoomEventMessageParser.ts | 32 +- .../RoomFilterSettingsMessageParser.ts | 49 +- .../navigator/RoomSettingsUpdatedParser.ts | 34 +- .../RoomThumbnailUpdateResultMessageParser.ts | 42 +- .../navigator/UserEventCatsMessageParser.ts | 51 +- .../navigator/UserFlatCatsMessageParser.ts | 51 +- .../messages/parser/navigator/index.ts | 68 +- .../utils/CategoriesWithVisitorCountData.ts | 47 +- .../navigator/utils/CompetitionRoomsData.ts | 50 +- .../utils/GuestRoomSearchResultData.ts | 116 +- .../navigator/utils/NavigatorSavedSearch.ts | 84 +- .../utils/NavigatorSearchResultList.ts | 133 +- .../utils/NavigatorSearchResultSet.ts | 94 +- .../utils/NavigatorTopLevelContext.ts | 81 +- .../navigator/utils/OfficialRoomEntryData.ts | 222 +- .../parser/navigator/utils/RoomEventData.ts | 164 +- .../messages/parser/navigator/utils/index.ts | 18 +- .../notifications/AchievementLevelUpData.ts | 142 +- .../AchievementNotificationMessageParser.ts | 36 +- .../ActivityPointNotificationParser.ts | 60 +- .../notifications/BotErrorEventParser.ts | 34 +- .../ClubGiftNotificationParser.ts | 34 +- .../ConnectionErrorMessageParser.ts | 60 +- .../ElementPointerMessageParser.ts | 34 +- .../HabboBroadcastMessageParser.ts | 34 +- .../notifications/HotelWillShutdownParser.ts | 34 +- .../InfoFeedEnableMessageParser.ts | 34 +- .../notifications/MOTDNotificationParser.ts | 49 +- .../NotificationDialogMessageParser.ts | 64 +- .../PetLevelNotificationParser.ts | 75 +- .../PetPlacingErrorEventParser.ts | 34 +- .../notifications/SimpleAlertMessageParser.ts | 54 +- .../parser/notifications/UnseenItemsParser.ts | 79 +- .../messages/parser/notifications/index.ts | 32 +- ...NewUserExperienceGiftOfferMessageParser.ts | 51 +- .../nux/NewUserExperienceNotCompleteParser.ts | 21 +- .../messages/parser/nux/index.ts | 4 +- .../perk/PerkAllowancesMessageParser.ts | 79 +- .../messages/parser/perk/common/PerkData.ts | 41 +- .../messages/parser/perk/common/PerkEnum.ts | 27 +- .../messages/parser/perk/common/index.ts | 4 +- .../messages/parser/perk/index.ts | 4 +- .../OpenPetPackageRequestedMessageParser.ts | 49 +- .../pet/OpenPetPackageResultMessageParser.ts | 58 +- .../parser/pet/PetLevelUpdateMessageParser.ts | 58 +- .../pet/PetScratchFailedMessageParser.ts | 45 +- .../parser/pet/PetTrainingMessageParser.ts | 82 +- .../messages/parser/pet/index.ts | 10 +- .../messages/parser/poll/PollChoice.ts | 64 +- .../parser/poll/PollContentsParser.ts | 155 +- .../messages/parser/poll/PollErrorParser.ts | 19 +- .../messages/parser/poll/PollOfferParser.ts | 69 +- .../messages/parser/poll/PollQuestion.ts | 160 +- .../parser/poll/QuestionAnsweredParser.ts | 76 +- .../parser/poll/QuestionFinishedParser.ts | 60 +- .../messages/parser/poll/QuestionParser.ts | 126 +- .../messages/parser/poll/index.ts | 16 +- .../parser/quest/CommunityGoalData.ts | 141 +- .../CommunityGoalEarnedPrizesMessageParser.ts | 45 +- .../quest/CommunityGoalHallOfFameData.ts | 55 +- .../CommunityGoalHallOfFameMessageParser.ts | 36 +- .../CommunityGoalProgressMessageParser.ts | 36 +- ...oncurrentUsersGoalProgressMessageParser.ts | 60 +- .../parser/quest/EpicPopupMessageParser.ts | 34 +- .../parser/quest/HallOfFameEntryData.ts | 67 +- .../parser/quest/ILandingPageUserEntry.ts | 9 +- .../messages/parser/quest/PrizeData.ts | 76 +- .../quest/QuestCancelledMessageParser.ts | 32 +- .../quest/QuestCompletedMessageParser.ts | 47 +- .../parser/quest/QuestDailyMessageParser.ts | 67 +- .../messages/parser/quest/QuestMessageData.ts | 316 +- .../parser/quest/QuestMessageParser.ts | 36 +- .../parser/quest/QuestsMessageParser.ts | 57 +- .../parser/quest/SeasonalQuestsParser.ts | 47 +- .../messages/parser/quest/index.ts | 34 +- .../recycler/RecyclerFinishedMessageParser.ts | 47 +- .../recycler/RecyclerStatusMessageParser.ts | 47 +- .../messages/parser/recycler/index.ts | 4 +- .../room/access/CantConnectMessageParser.ts | 55 +- .../parser/room/access/RoomEnterParser.ts | 21 +- .../parser/room/access/RoomFowardParser.ts | 34 +- .../doorbell/RoomDoorbellAcceptedParser.ts | 34 +- .../parser/room/access/doorbell/index.ts | 2 +- .../messages/parser/room/access/index.ts | 10 +- .../access/rights/RoomRightsClearParser.ts | 21 +- .../access/rights/RoomRightsOwnerParser.ts | 21 +- .../room/access/rights/RoomRightsParser.ts | 34 +- .../parser/room/access/rights/index.ts | 6 +- .../bots/BotCommandConfigurationParser.ts | 60 +- .../bots/BotForceOpenContextMenuParser.ts | 34 +- .../messages/parser/room/bots/BotSkillData.ts | 32 +- .../room/bots/BotSkillListUpdateParser.ts | 66 +- .../messages/parser/room/bots/index.ts | 8 +- .../room/data/RoomChatSettingsParser.ts | 36 +- .../parser/room/data/RoomDataParser.ts | 479 +- .../room/data/RoomEntryInfoMessageParser.ts | 47 +- .../parser/room/data/RoomScoreParser.ts | 47 +- .../messages/parser/room/data/index.ts | 8 +- .../FavoriteMembershipUpdateMessageParser.ts | 73 +- .../messages/parser/room/engine/ObjectData.ts | 43 +- .../room/engine/ObjectsDataUpdateParser.ts | 61 +- .../room/engine/ObjectsRollingParser.ts | 123 +- .../messages/parser/room/engine/index.ts | 8 +- .../CustomUserNotificationMessageParser.ts | 34 +- .../room/furniture/DiceValueMessageParser.ts | 47 +- .../FurniRentOrBuyoutOfferMessageParser.ts | 99 +- .../room/furniture/FurnitureAliasesParser.ts | 49 +- .../room/furniture/FurnitureDataParser.ts | 62 +- .../furniture/FurnitureStackHeightParser.ts | 47 +- .../GroupFurniContextMenuInfoMessageParser.ts | 99 +- .../furniture/ItemDataUpdateMessageParser.ts | 47 +- .../furniture/LoveLockFurniFinishedParser.ts | 32 +- .../LoveLockFurniFriendConfirmedParser.ts | 32 +- .../furniture/LoveLockFurniStartParser.ts | 45 +- .../OneWayDoorStatusMessageParser.ts | 47 +- .../RentableSpaceRentFailedMessageParser.ts | 32 +- .../RentableSpaceRentOkMessageParser.ts | 32 +- .../RentableSpaceStatusMessageParser.ts | 125 +- .../RequestSpamWallPostItMessageParser.ts | 47 +- .../furniture/RoomDimmerPresetsMessageData.ts | 10 +- .../RoomDimmerPresetsMessageParser.ts | 88 +- .../RoomMessageNotificationMessageParser.ts | 60 +- .../room/furniture/WelcomeGiftStatusParser.ts | 86 +- .../floor/FurnitureFloorAddParser.ts | 38 +- .../floor/FurnitureFloorDataParser.ts | 243 +- .../furniture/floor/FurnitureFloorParser.ts | 100 +- .../floor/FurnitureFloorRemoveParser.ts | 73 +- .../floor/FurnitureFloorUpdateParser.ts | 36 +- .../parser/room/furniture/floor/index.ts | 10 +- .../messages/parser/room/furniture/index.ts | 46 +- .../furniture/wall/FurnitureWallAddParser.ts | 38 +- .../furniture/wall/FurnitureWallDataParser.ts | 347 +- .../furniture/wall/FurnitureWallParser.ts | 100 +- .../wall/FurnitureWallRemoveParser.ts | 47 +- .../wall/FurnitureWallUpdateParser.ts | 36 +- .../parser/room/furniture/wall/index.ts | 10 +- .../YoutubeControlVideoMessageParser.ts | 45 +- .../youtube/YoutubeDisplayPlaylist.ts | 41 +- .../YoutubeDisplayPlaylistsMessageParser.ts | 69 +- .../YoutubeDisplayVideoMessageParser.ts | 74 +- .../parser/room/furniture/youtube/index.ts | 8 +- .../messages/parser/room/index.ts | 30 +- .../mapping/FloorHeightMapMessageParser.ts | 249 +- .../mapping/RoomEntryTileMessageParser.ts | 60 +- .../room/mapping/RoomHeightMapParser.ts | 147 +- .../room/mapping/RoomHeightMapUpdateParser.ts | 106 +- .../mapping/RoomOccupiedTilesMessageParser.ts | 59 +- .../parser/room/mapping/RoomPaintParser.ts | 102 +- .../room/mapping/RoomReadyMessageParser.ts | 47 +- .../RoomVisualizationSettingsParser.ts | 68 +- .../messages/parser/room/mapping/index.ts | 16 +- .../parser/room/pet/BreedingPetInfo.ts | 82 +- .../parser/room/pet/PetBreedingResultData.ts | 87 +- .../room/pet/PetBreedingResultParser.ts | 49 +- .../parser/room/pet/PetExperienceParser.ts | 60 +- .../parser/room/pet/PetFigureUpdateParser.ts | 78 +- .../messages/parser/room/pet/PetInfoParser.ts | 341 +- .../parser/room/pet/PetStatusUpdateParser.ts | 99 +- .../parser/room/pet/RarityCategoryData.ts | 52 +- .../messages/parser/room/pet/index.ts | 16 +- .../room/session/YouArePlayingGameParser.ts | 34 +- .../session/YouAreSpectatorMessageParser.ts | 19 +- .../messages/parser/room/session/index.ts | 4 +- .../parser/room/unit/RoomUnitDanceParser.ts | 47 +- .../parser/room/unit/RoomUnitEffectParser.ts | 60 +- .../room/unit/RoomUnitExpressionParser.ts | 47 +- .../room/unit/RoomUnitHandItemParser.ts | 47 +- .../unit/RoomUnitHandItemReceivedParser.ts | 47 +- .../parser/room/unit/RoomUnitIdleParser.ts | 47 +- .../parser/room/unit/RoomUnitInfoParser.ts | 86 +- .../parser/room/unit/RoomUnitNumberParser.ts | 47 +- .../parser/room/unit/RoomUnitParser.ts | 309 +- .../parser/room/unit/RoomUnitRemoveParser.ts | 34 +- .../parser/room/unit/RoomUnitStatusAction.ts | 32 +- .../parser/room/unit/RoomUnitStatusMessage.ts | 169 +- .../parser/room/unit/RoomUnitStatusParser.ts | 190 +- .../parser/room/unit/UserMessageData.ts | 569 +- .../room/unit/chat/FloodControlParser.ts | 34 +- .../room/unit/chat/RemainingMuteParser.ts | 34 +- .../room/unit/chat/RoomUnitChatParser.ts | 139 +- .../room/unit/chat/RoomUnitTypingParser.ts | 47 +- .../messages/parser/room/unit/chat/index.ts | 8 +- .../messages/parser/room/unit/index.ts | 30 +- .../parser/roomevents/ConditionDefinition.ts | 32 +- .../parser/roomevents/TriggerDefinition.ts | 45 +- .../messages/parser/roomevents/Triggerable.ts | 147 +- .../roomevents/WiredActionDefinition.ts | 63 +- .../roomevents/WiredFurniActionParser.ts | 36 +- .../roomevents/WiredFurniConditionParser.ts | 36 +- .../roomevents/WiredFurniTriggerParser.ts | 36 +- .../parser/roomevents/WiredOpenParser.ts | 34 +- .../WiredRewardResultMessageParser.ts | 34 +- .../roomevents/WiredSaveSuccessParser.ts | 21 +- .../roomevents/WiredValidationErrorParser.ts | 34 +- .../messages/parser/roomevents/index.ts | 22 +- .../parser/roomsettings/BannedUserData.ts | 34 +- .../roomsettings/BannedUsersFromRoomParser.ts | 66 +- .../roomsettings/FlatControllerAddedParser.ts | 49 +- .../parser/roomsettings/FlatControllerData.ts | 50 +- .../FlatControllerRemovedParser.ts | 47 +- .../roomsettings/FlatControllersParser.ts | 70 +- .../messages/parser/roomsettings/IFlatUser.ts | 7 +- .../roomsettings/MuteAllInRoomParser.ts | 32 +- .../parser/roomsettings/NoSuchFlatParser.ts | 34 +- .../parser/roomsettings/RoomChatSettings.ts | 89 +- .../roomsettings/RoomModerationSettings.ts | 49 +- .../parser/roomsettings/RoomSettingsData.ts | 586 +- .../roomsettings/RoomSettingsDataParser.ts | 97 +- .../roomsettings/RoomSettingsErrorParser.ts | 47 +- .../RoomSettingsSaveErrorParser.ts | 86 +- .../roomsettings/RoomSettingsSavedParser.ts | 34 +- .../ShowEnforceRoomCategoryDialogParser.ts | 34 +- .../UserUnbannedFromRoomParser.ts | 47 +- .../messages/parser/roomsettings/index.ts | 36 +- .../parser/security/AuthenticatedParser.ts | 21 +- .../messages/parser/security/index.ts | 2 +- .../sound/JukeboxPlayListFullMessageParser.ts | 19 +- .../sound/JukeboxSongDisksMessageParser.ts | 54 +- .../parser/sound/NowPlayingMessageParser.ts | 85 +- .../sound/OfficialSongIdMessageParser.ts | 45 +- .../messages/parser/sound/PlayListEntry.ts | 68 +- .../parser/sound/PlayListMessageParser.ts | 59 +- .../sound/PlayListSongAddedMessageParser.ts | 34 +- .../messages/parser/sound/SongInfoEntry.ts | 23 +- .../parser/sound/TraxSongInfoMessageParser.ts | 55 +- .../UserSongDisksInventoryMessageParser.ts | 65 +- .../messages/parser/sound/index.ts | 20 +- .../talent/TalentLevelUpMessageParser.ts | 112 +- .../parser/talent/TalentTrackLevel.ts | 67 +- .../talent/TalentTrackLevelMessageParser.ts | 60 +- .../parser/talent/TalentTrackParser.ts | 134 +- .../parser/talent/TalentTrackRewardPerk.ts | 21 +- .../parser/talent/TalentTrackRewardProduct.ts | 30 +- .../messages/parser/talent/TalentTrackTask.ts | 74 +- .../messages/parser/talent/index.ts | 14 +- .../AccountSafetyLockStatusChangeParser.ts | 36 +- .../parser/user/ApproveNameResultParser.ts | 47 +- .../parser/user/ChangeEmailResultParser.ts | 36 +- .../messages/parser/user/EmailStatusParser.ts | 60 +- .../ExtendedProfileChangedMessageParser.ts | 34 +- .../user/GroupDetailsChangedMessageParser.ts | 34 +- .../GroupMembershipRequestedMessageParser.ts | 49 +- .../user/GuildEditFailedMessageParser.ts | 36 +- .../GuildMemberMgmtFailedMessageParser.ts | 47 +- .../user/GuildMembershipsMessageParser.ts | 51 +- .../user/HabboGroupBadgesMessageParser.ts | 53 +- .../parser/user/HabboGroupEntryData.ts | 98 +- .../user/HabboGroupJoinFailedMessageParser.ts | 36 +- .../parser/user/IgnoreResultParser.ts | 47 +- .../parser/user/IgnoredUsersParser.ts | 53 +- .../parser/user/InClientLinkParser.ts | 34 +- .../user/PetRespectNotificationParser.ts | 69 +- .../parser/user/PetSupplementTypeEnum.ts | 13 +- .../user/PetSupplementedNotificationParser.ts | 60 +- .../parser/user/RespectReceivedParser.ts | 47 +- .../messages/parser/user/RoomEntryData.ts | 41 +- .../messages/parser/user/ScrKickbackData.ts | 109 +- .../user/ScrSendKickbackInfoMessageParser.ts | 34 +- .../WelcomeGiftChangeEmailResultParser.ts | 34 +- .../user/access/UserPermissionsParser.ts | 60 +- .../messages/parser/user/access/index.ts | 2 +- .../user/data/RelationshipStatusInfo.ts | 97 +- .../RelationshipStatusInfoMessageParser.ts | 68 +- .../user/data/UserCurrentBadgesParser.ts | 70 +- .../parser/user/data/UserFigureParser.ts | 47 +- .../parser/user/data/UserInfoDataParser.ts | 214 +- .../parser/user/data/UserInfoParser.ts | 38 +- .../user/data/UserNameChangeMessageParser.ts | 60 +- .../parser/user/data/UserProfileParser.ts | 203 +- .../parser/user/data/UserSettingsParser.ts | 125 +- .../parser/user/data/UserTagsParser.ts | 64 +- .../messages/parser/user/data/index.ts | 20 +- .../messages/parser/user/index.ts | 60 +- .../inventory/currency/UserCreditsParser.ts | 34 +- .../inventory/currency/UserCurrencyParser.ts | 49 +- .../parser/user/inventory/currency/index.ts | 4 +- .../messages/parser/user/inventory/index.ts | 4 +- .../subscription/UserSubscriptionParser.ts | 172 +- .../user/inventory/subscription/index.ts | 2 +- .../user/wardrobe/UserWardrobePageParser.ts | 61 +- .../messages/parser/user/wardrobe/index.ts | 2 +- .../UserClassificationMessageParser.ts | 80 +- .../parser/userclassification/index.ts | 2 +- .../LegacyExternalInterface.ts | 184 +- .../src/nitro/externalInterface/index.ts | 2 +- .../src/nitro/game/GameMessageHandler.ts | 29 +- libs/renderer/src/nitro/game/index.ts | 2 +- libs/renderer/src/nitro/index.ts | 26 +- .../nitro/localization/BadgeBaseAndLevel.ts | 70 +- .../localization/NitroLocalizationManager.ts | 584 +- libs/renderer/src/nitro/localization/index.ts | 4 +- libs/renderer/src/nitro/room/ImageResult.ts | 27 +- .../renderer/src/nitro/room/PetColorResult.ts | 111 +- .../src/nitro/room/RoomContentLoader.ts | 1210 ++- libs/renderer/src/nitro/room/RoomEngine.ts | 6675 ++++++++--------- .../src/nitro/room/RoomMessageHandler.ts | 1958 ++--- .../src/nitro/room/RoomObjectEventHandler.ts | 4324 +++++------ .../src/nitro/room/RoomObjectLogicFactory.ts | 655 +- .../src/nitro/room/RoomVariableEnum.ts | 27 +- libs/renderer/src/nitro/room/index.ts | 24 +- .../room/messages/ObjectAdUpdateMessage.ts | 27 +- .../ObjectAvatarCarryObjectUpdateMessage.ts | 36 +- .../messages/ObjectAvatarChatUpdateMessage.ts | 25 +- .../ObjectAvatarDanceUpdateMessage.ts | 25 +- .../ObjectAvatarEffectUpdateMessage.ts | 36 +- .../ObjectAvatarExperienceUpdateMessage.ts | 25 +- .../ObjectAvatarExpressionUpdateMessage.ts | 25 +- .../ObjectAvatarFigureUpdateMessage.ts | 58 +- .../ObjectAvatarFlatControlUpdateMessage.ts | 25 +- .../ObjectAvatarGestureUpdateMessage.ts | 25 +- .../ObjectAvatarGuideStatusUpdateMessage.ts | 25 +- .../ObjectAvatarMutedUpdateMessage.ts | 25 +- .../room/messages/ObjectAvatarOwnMessage.ts | 5 +- .../ObjectAvatarPetGestureUpdateMessage.ts | 25 +- .../ObjectAvatarPlayerValueUpdateMessage.ts | 25 +- .../ObjectAvatarPlayingGameUpdateMessage.ts | 25 +- .../ObjectAvatarPostureUpdateMessage.ts | 36 +- .../messages/ObjectAvatarSelectedMessage.ts | 25 +- .../messages/ObjectAvatarSignUpdateMessage.ts | 25 +- .../ObjectAvatarSleepUpdateMessage.ts | 25 +- .../ObjectAvatarTypingUpdateMessage.ts | 25 +- .../messages/ObjectAvatarUpdateMessage.ts | 47 +- .../ObjectAvatarUseObjectUpdateMessage.ts | 25 +- .../room/messages/ObjectDataUpdateMessage.ts | 47 +- .../messages/ObjectGroupBadgeUpdateMessage.ts | 36 +- .../messages/ObjectHeightUpdateMessage.ts | 25 +- .../messages/ObjectItemDataUpdateMessage.ts | 23 +- .../messages/ObjectModelDataUpdateMessage.ts | 34 +- .../room/messages/ObjectMoveUpdateMessage.ts | 38 +- .../messages/ObjectRoomColorUpdateMessage.ts | 58 +- .../ObjectRoomFloorHoleUpdateMessage.ts | 82 +- .../messages/ObjectRoomMapUpdateMessage.ts | 38 +- .../messages/ObjectRoomMaskUpdateMessage.ts | 79 +- .../ObjectRoomPlanePropertyUpdateMessage.ts | 38 +- .../ObjectRoomPlaneVisibilityUpdateMessage.ts | 38 +- .../room/messages/ObjectRoomUpdateMessage.ts | 40 +- .../room/messages/ObjectSelectedMessage.ts | 25 +- .../room/messages/ObjectStateUpdateMessage.ts | 12 +- .../messages/ObjectTileCursorUpdateMessage.ts | 58 +- .../messages/ObjectVisibilityUpdateMessage.ts | 27 +- .../renderer/src/nitro/room/messages/index.ts | 80 +- .../src/nitro/room/object/RoomFloorHole.ts | 54 +- .../src/nitro/room/object/RoomMapData.ts | 190 +- .../src/nitro/room/object/RoomMapMaskData.ts | 21 +- .../object/RoomObjectVisualizationFactory.ts | 465 +- .../room/object/RoomPlaneBitmapMaskData.ts | 77 +- .../room/object/RoomPlaneBitmapMaskParser.ts | 228 +- .../src/nitro/room/object/RoomPlaneData.ts | 337 +- .../nitro/room/object/RoomPlaneMaskData.ts | 52 +- .../src/nitro/room/object/RoomPlaneParser.ts | 3098 ++++---- .../src/nitro/room/object/RoomWallData.ts | 305 +- libs/renderer/src/nitro/room/object/index.ts | 54 +- .../room/object/logic/MovingObjectLogic.ts | 211 +- .../room/object/logic/avatar/AvatarLogic.ts | 855 +-- .../nitro/room/object/logic/avatar/index.ts | 2 +- .../FurnitureAchievementResolutionLogic.ts | 114 +- .../furniture/FurnitureBadgeDisplayLogic.ts | 97 +- .../FurnitureChangeStateWhenStepOnLogic.ts | 90 +- .../furniture/FurnitureClothingChangeLogic.ts | 64 +- .../furniture/FurnitureCounterClockLogic.ts | 73 +- .../furniture/FurnitureCrackableLogic.ts | 23 +- .../furniture/FurnitureCraftingGizmoLogic.ts | 14 +- .../logic/furniture/FurnitureCreditLogic.ts | 53 +- .../furniture/FurnitureCuckooClockLogic.ts | 58 +- .../FurnitureCustomStackHeightLogic.ts | 40 +- .../logic/furniture/FurnitureDiceLogic.ts | 95 +- .../furniture/FurnitureEcotronBoxLogic.ts | 27 +- .../FurnitureEditableInternalLinkLogic.ts | 135 +- .../FurnitureEditableRoomLinkLogic.ts | 107 +- .../furniture/FurnitureEffectBoxLogic.ts | 36 +- .../furniture/FurnitureExternalImageLogic.ts | 66 +- .../furniture/FurnitureFireworksLogic.ts | 94 +- .../furniture/FurnitureFloorHoleLogic.ts | 156 +- .../furniture/FurnitureFriendFurniLogic.ts | 104 +- .../FurnitureGroupForumTerminalLogic.ts | 40 +- .../FurnitureGuildCustomizedLogic.ts | 155 +- .../furniture/FurnitureHabboWheelLogic.ts | 25 +- .../furniture/FurnitureHighScoreLogic.ts | 71 +- .../furniture/FurnitureHockeyScoreLogic.ts | 86 +- .../furniture/FurnitureHweenLovelockLogic.ts | 14 +- .../logic/furniture/FurnitureIceStormLogic.ts | 108 +- .../furniture/FurnitureInternalLinkLogic.ts | 126 +- .../logic/furniture/FurnitureJukeboxLogic.ts | 149 +- .../object/logic/furniture/FurnitureLogic.ts | 798 +- .../logic/furniture/FurnitureLoveLockLogic.ts | 14 +- .../furniture/FurnitureMannequinLogic.ts | 74 +- .../FurnitureMonsterplantSeedLogic.ts | 34 +- .../furniture/FurnitureMultiHeightLogic.ts | 16 +- .../furniture/FurnitureMultiStateLogic.ts | 47 +- .../furniture/FurnitureMysteryBoxLogic.ts | 34 +- .../furniture/FurnitureMysteryTrophyLogic.ts | 34 +- .../furniture/FurnitureOneWayDoorLogic.ts | 25 +- .../FurniturePetCustomizationLogic.ts | 49 +- .../furniture/FurniturePlaceholderLogic.ts | 27 +- .../furniture/FurniturePlanetSystemLogic.ts | 24 +- .../logic/furniture/FurniturePresentLogic.ts | 173 +- .../FurniturePurchaseableClothingLogic.ts | 37 +- .../logic/furniture/FurniturePushableLogic.ts | 162 +- .../furniture/FurnitureRandomStateLogic.ts | 27 +- .../furniture/FurnitureRandomTeleportLogic.ts | 14 +- .../furniture/FurnitureRentableSpaceLogic.ts | 71 +- .../FurnitureRoomBackgroundColorLogic.ts | 165 +- .../furniture/FurnitureRoomBackgroundLogic.ts | 14 +- .../furniture/FurnitureRoomBillboardLogic.ts | 48 +- .../furniture/FurnitureRoomBrandingLogic.ts | 381 +- .../furniture/FurnitureRoomDimmerLogic.ts | 219 +- .../logic/furniture/FurnitureScoreLogic.ts | 118 +- .../logic/furniture/FurnitureSongDiskLogic.ts | 25 +- .../furniture/FurnitureSoundBlockLogic.ts | 188 +- .../furniture/FurnitureSoundMachineLogic.ts | 136 +- .../logic/furniture/FurnitureStickieLogic.ts | 86 +- .../logic/furniture/FurnitureTrophyLogic.ts | 25 +- .../furniture/FurnitureVoteCounterLogic.ts | 142 +- .../furniture/FurnitureVoteMajorityLogic.ts | 27 +- .../furniture/FurnitureWelcomeGiftLogic.ts | 25 +- .../logic/furniture/FurnitureWindowLogic.ts | 27 +- .../logic/furniture/FurnitureYoutubeLogic.ts | 46 +- .../room/object/logic/furniture/index.ts | 124 +- .../src/nitro/room/object/logic/index.ts | 10 +- .../nitro/room/object/logic/pet/PetLogic.ts | 412 +- .../src/nitro/room/object/logic/pet/index.ts | 2 +- .../nitro/room/object/logic/room/RoomLogic.ts | 760 +- .../object/logic/room/SelectionArrowLogic.ts | 55 +- .../room/object/logic/room/TileCursorLogic.ts | 93 +- .../src/nitro/room/object/logic/room/index.ts | 6 +- .../avatar/AvatarVisualization.ts | 2039 +++-- .../avatar/AvatarVisualizationData.ts | 90 +- .../avatar/additions/ExpressionAddition.ts | 68 +- .../additions/ExpressionAdditionFactory.ts | 37 +- .../avatar/additions/FloatingHeartAddition.ts | 278 +- .../avatar/additions/FloatingIdleZAddition.ts | 262 +- .../additions/GameClickTargetAddition.ts | 100 +- .../additions/GuideStatusBubbleAddition.ts | 156 +- .../avatar/additions/IAvatarAddition.ts | 13 +- .../avatar/additions/IExpressionAddition.ts | 9 +- .../avatar/additions/MutedBubbleAddition.ts | 132 +- .../avatar/additions/NumberBubbleAddition.ts | 319 +- .../avatar/additions/TypingBubbleAddition.ts | 156 +- .../visualization/avatar/additions/index.ts | 22 +- .../room/object/visualization/avatar/index.ts | 6 +- .../visualization/data/AnimationData.ts | 286 +- .../visualization/data/AnimationFrame.ts | 178 +- .../visualization/data/AnimationFrameData.ts | 97 +- .../data/AnimationFrameDirectionalData.ts | 45 +- .../data/AnimationFrameSequenceData.ts | 200 +- .../visualization/data/AnimationLayerData.ts | 268 +- .../visualization/data/AnimationSizeData.ts | 233 +- .../visualization/data/AnimationStateData.ts | 281 +- .../object/visualization/data/ColorData.ts | 56 +- .../visualization/data/DirectionData.ts | 256 +- .../data/DirectionalOffsetData.ts | 49 +- .../object/visualization/data/LayerData.ts | 175 +- .../data/ParticleSystemParticle.ts | 13 +- .../object/visualization/data/PetSizeData.ts | 207 +- .../object/visualization/data/SizeData.ts | 403 +- .../room/object/visualization/data/index.ts | 30 +- .../FurnitureAnimatedVisualization.ts | 651 +- .../FurnitureAnimatedVisualizationData.ts | 127 +- .../furniture/FurnitureBBVisualization.ts | 26 +- .../FurnitureBadgeDisplayVisualization.ts | 143 +- .../furniture/FurnitureBottleVisualization.ts | 97 +- .../FurnitureBrandedImageVisualization.ts | 469 +- ...urnitureBuilderPlaceholderVisualization.ts | 7 +- .../FurnitureCounterClockVisualization.ts | 49 +- .../furniture/FurnitureCuboidVisualization.ts | 7 +- .../FurnitureDynamicThumbnailVisualization.ts | 77 +- .../FurnitureExternalImageVisualization.ts | 71 +- .../FurnitureFireworksVisualization.ts | 159 +- ...nitureGiftWrappedFireworksVisualization.ts | 114 +- .../FurnitureGiftWrappedVisualization.ts | 95 +- .../FurnitureGuildCustomizedVisualization.ts | 125 +- ...rnitureGuildIsometricBadgeVisualization.ts | 184 +- .../FurnitureHabboWheelVisualization.ts | 101 +- .../FurnitureIsometricBBVisualization.ts | 280 +- .../FurnitureMannequinVisualization.ts | 259 +- .../FurnitureMannequinVisualizationData.ts | 60 +- .../furniture/FurnitureParticleSystem.ts | 592 +- .../FurnitureParticleSystemEmitter.ts | 496 +- .../FurnitureParticleSystemParticle.ts | 314 +- .../FurniturePartyBeamerVisualization.ts | 243 +- .../FurniturePlanetSystemVisualization.ts | 179 +- ...rePlanetSystemVisualizationPlanetObject.ts | 157 +- .../furniture/FurniturePosterVisualization.ts | 7 +- .../FurnitureQueueTileVisualization.ts | 69 +- ...FurnitureResettingAnimatedVisualization.ts | 14 +- .../FurnitureRoomBackgroundVisualization.ts | 94 +- .../FurnitureScoreBoardVisualization.ts | 42 +- .../FurnitureSoundBlockVisualization.ts | 23 +- .../FurnitureStickieVisualization.ts | 18 +- .../FurnitureValRandomizerVisualization.ts | 110 +- .../furniture/FurnitureVisualization.ts | 910 ++- .../furniture/FurnitureVisualizationData.ts | 460 +- .../FurnitureVoteCounterVisualization.ts | 87 +- .../FurnitureVoteMajorityVisualization.ts | 79 +- .../FurnitureWaterAreaVisualization.ts | 7 +- .../FurnitureYoutubeVisualization.ts | 22 +- .../IsometricImageFurniVisualization.ts | 279 +- .../object/visualization/furniture/index.ts | 82 +- .../nitro/room/object/visualization/index.ts | 10 +- .../visualization/pet/ExperienceData.ts | 127 +- .../visualization/pet/PetVisualization.ts | 1002 ++- .../visualization/pet/PetVisualizationData.ts | 173 +- .../room/object/visualization/pet/index.ts | 6 +- .../visualization/room/PlaneDrawingData.ts | 153 +- .../object/visualization/room/RoomPlane.ts | 1591 ++-- .../visualization/room/RoomPlaneBitmapMask.ts | 41 +- .../room/RoomPlaneRectangleMask.ts | 52 +- .../visualization/room/RoomVisualization.ts | 1635 ++-- .../room/RoomVisualizationData.ts | 186 +- .../room/TileCursorVisualization.ts | 36 +- .../room/object/visualization/room/index.ts | 24 +- .../visualization/room/mask/PlaneMask.ts | 176 +- .../room/mask/PlaneMaskBitmap.ts | 76 +- .../room/mask/PlaneMaskManager.ts | 305 +- .../room/mask/PlaneMaskVisualization.ts | 70 +- .../object/visualization/room/mask/index.ts | 8 +- .../room/rasterizer/IPlaneRasterizer.ts | 39 +- .../room/rasterizer/animated/AnimationItem.ts | 74 +- .../rasterizer/animated/LandscapePlane.ts | 132 +- .../animated/LandscapeRasterizer.ts | 344 +- .../PlaneVisualizationAnimationLayer.ts | 212 +- .../room/rasterizer/animated/index.ts | 8 +- .../room/rasterizer/basic/FloorPlane.ts | 63 +- .../room/rasterizer/basic/FloorRasterizer.ts | 118 +- .../room/rasterizer/basic/Plane.ts | 182 +- .../room/rasterizer/basic/PlaneMaterial.ts | 151 +- .../rasterizer/basic/PlaneMaterialCell.ts | 292 +- .../basic/PlaneMaterialCellColumn.ts | 673 +- .../basic/PlaneMaterialCellMatrix.ts | 1118 ++- .../room/rasterizer/basic/PlaneRasterizer.ts | 944 ++- .../room/rasterizer/basic/PlaneTexture.ts | 114 +- .../rasterizer/basic/PlaneTextureBitmap.ts | 94 +- .../rasterizer/basic/PlaneVisualization.ts | 292 +- .../basic/PlaneVisualizationLayer.ts | 181 +- .../room/rasterizer/basic/WallPlane.ts | 51 +- .../room/rasterizer/basic/WallRasterizer.ts | 130 +- .../room/rasterizer/basic/index.ts | 28 +- .../visualization/room/rasterizer/index.ts | 6 +- .../room/utils/PlaneBitmapData.ts | 39 +- .../visualization/room/utils/Randomizer.ts | 194 +- .../object/visualization/room/utils/index.ts | 4 +- .../src/nitro/room/preview/RoomPreviewer.ts | 1625 ++-- libs/renderer/src/nitro/room/preview/index.ts | 2 +- .../room/utils/FurnitureStackingHeightMap.ts | 179 +- .../nitro/room/utils/LegacyWallGeometry.ts | 531 +- .../src/nitro/room/utils/RoomCamera.ts | 480 +- .../renderer/src/nitro/room/utils/RoomData.ts | 86 +- .../src/nitro/room/utils/RoomFurnitureData.ts | 195 +- .../src/nitro/room/utils/RoomInstanceData.ts | 387 +- .../RoomObjectBadgeImageAssetListener.ts | 32 +- .../room/utils/SelectedRoomObjectData.ts | 156 +- .../nitro/room/utils/SpriteDataCollector.ts | 710 +- .../src/nitro/room/utils/TileObjectMap.ts | 208 +- libs/renderer/src/nitro/room/utils/index.ts | 20 +- .../nitro/session/GroupInformationManager.ts | 102 +- .../src/nitro/session/HabboClubLevelEnum.ts | 9 +- .../src/nitro/session/IgnoredUsersManager.ts | 196 +- .../renderer/src/nitro/session/RoomPetData.ts | 430 +- .../renderer/src/nitro/session/RoomSession.ts | 726 +- .../src/nitro/session/RoomSessionManager.ts | 393 +- .../src/nitro/session/RoomUserData.ts | 373 +- .../src/nitro/session/SessionDataManager.ts | 1061 ++- .../src/nitro/session/UserDataManager.ts | 334 +- .../nitro/session/badge/BadgeImageManager.ts | 444 +- .../src/nitro/session/badge/BadgeInfo.ts | 32 +- .../src/nitro/session/badge/GroupBadge.ts | 32 +- .../src/nitro/session/badge/GroupBadgePart.ts | 101 +- .../renderer/src/nitro/session/badge/index.ts | 8 +- .../nitro/session/furniture/FurnitureData.ts | 373 +- .../session/furniture/FurnitureDataLoader.ts | 241 +- .../src/nitro/session/furniture/index.ts | 4 +- .../src/nitro/session/handler/BaseHandler.ts | 63 +- .../session/handler/GenericErrorHandler.ts | 68 +- .../session/handler/PetPackageHandler.ts | 67 +- .../src/nitro/session/handler/PollHandler.ts | 99 +- .../nitro/session/handler/RoomChatHandler.ts | 346 +- .../nitro/session/handler/RoomDataHandler.ts | 53 +- .../handler/RoomDimmerPresetsHandler.ts | 74 +- .../session/handler/RoomPermissionsHandler.ts | 61 +- .../session/handler/RoomPresentHandler.ts | 56 +- .../session/handler/RoomSessionHandler.ts | 196 +- .../nitro/session/handler/RoomUsersHandler.ts | 900 +-- .../nitro/session/handler/WordQuizHandler.ts | 101 +- .../src/nitro/session/handler/index.ts | 24 +- libs/renderer/src/nitro/session/index.ts | 26 +- .../src/nitro/session/product/ProductData.ts | 43 +- .../session/product/ProductDataLoader.ts | 77 +- .../src/nitro/session/product/index.ts | 4 +- libs/renderer/src/nitro/sound/SoundManager.ts | 395 +- .../src/nitro/sound/common/SongDataEntry.ts | 76 +- .../sound/common/SongStartRequestData.ts | 77 +- libs/renderer/src/nitro/sound/common/index.ts | 4 +- .../sound/events/NotifyPlayedSongEvent.ts | 36 +- .../src/nitro/sound/events/NowPlayingEvent.ts | 51 +- .../nitro/sound/events/PlayListStatusEvent.ts | 16 +- .../events/SongDiskInventoryReceivedEvent.ts | 14 +- .../sound/events/SongInfoReceivedEvent.ts | 25 +- .../nitro/sound/events/SoundManagerEvent.ts | 25 +- libs/renderer/src/nitro/sound/events/index.ts | 12 +- libs/renderer/src/nitro/sound/index.ts | 10 +- .../sound/music/JukeboxPlaylistController.ts | 303 +- .../src/nitro/sound/music/MusicController.ts | 961 ++- .../src/nitro/sound/music/MusicPlayer.ts | 370 +- .../src/nitro/sound/music/MusicPriorities.ts | 13 +- libs/renderer/src/nitro/sound/music/index.ts | 6 +- .../src/nitro/sound/trax/TraxChannel.ts | 32 +- .../src/nitro/sound/trax/TraxChannelItem.ts | 30 +- .../renderer/src/nitro/sound/trax/TraxData.ts | 138 +- libs/renderer/src/nitro/sound/trax/index.ts | 6 +- .../src/nitro/utils/FigureDataContainer.ts | 403 +- .../src/nitro/utils/FixedSizeStack.ts | 101 +- libs/renderer/src/nitro/utils/FriendlyTime.ts | 61 +- libs/renderer/src/nitro/utils/FurniId.ts | 14 +- .../renderer/src/nitro/utils/HabboWebTools.ts | 472 +- libs/renderer/src/nitro/utils/Int32.ts | 14 +- libs/renderer/src/nitro/utils/index.ts | 12 +- libs/renderer/src/nitro/window/index.ts | 2 +- .../src/nitro/window/motion/Callback.ts | 47 +- .../renderer/src/nitro/window/motion/Combo.ts | 88 +- .../src/nitro/window/motion/Dispose.ts | 34 +- .../src/nitro/window/motion/DropBounce.ts | 90 +- libs/renderer/src/nitro/window/motion/Ease.ts | 45 +- .../src/nitro/window/motion/EaseOut.ts | 21 +- .../src/nitro/window/motion/EaseRate.ts | 18 +- .../src/nitro/window/motion/Interval.ts | 76 +- .../src/nitro/window/motion/JumpBy.ts | 56 +- .../src/nitro/window/motion/Motion.ts | 86 +- .../src/nitro/window/motion/Motions.ts | 287 +- .../src/nitro/window/motion/MoveBy.ts | 25 +- .../src/nitro/window/motion/MoveTo.ts | 54 +- .../renderer/src/nitro/window/motion/Queue.ts | 111 +- .../src/nitro/window/motion/ResizeTo.ts | 54 +- libs/renderer/src/nitro/window/motion/Wait.ts | 49 +- .../renderer/src/nitro/window/motion/index.ts | 32 +- .../src/pixi-proxy/CopyChannelFilter.ts | 28 +- libs/renderer/src/pixi-proxy/GetTicker.ts | 4 +- libs/renderer/src/pixi-proxy/GetTickerFPS.ts | 4 +- libs/renderer/src/pixi-proxy/GetTickerTime.ts | 4 +- libs/renderer/src/pixi-proxy/INitroPoint.ts | 4 +- .../src/pixi-proxy/NitroAlphaFilter.ts | 5 +- .../src/pixi-proxy/NitroBaseTexture.ts | 5 +- .../renderer/src/pixi-proxy/NitroContainer.ts | 5 +- libs/renderer/src/pixi-proxy/NitroFilter.ts | 5 +- libs/renderer/src/pixi-proxy/NitroPoint.ts | 8 +- libs/renderer/src/pixi-proxy/NitroPolygon.ts | 5 +- .../renderer/src/pixi-proxy/NitroRectangle.ts | 5 +- .../src/pixi-proxy/NitroRenderTexture.ts | 5 +- libs/renderer/src/pixi-proxy/NitroSprite.ts | 6 +- .../src/pixi-proxy/NitroSpritesheet.ts | 5 +- libs/renderer/src/pixi-proxy/NitroTexture.ts | 5 +- libs/renderer/src/pixi-proxy/NitroTilemap.ts | 7 +- .../src/pixi-proxy/PaletteMapFilter.ts | 84 +- .../src/pixi-proxy/PixiApplicationProxy.ts | 23 +- .../pixi-proxy/PixiInteractionEventProxy.ts | 5 +- .../src/pixi-proxy/RoomTextureUtils.ts | 197 +- libs/renderer/src/pixi-proxy/TextureUtils.ts | 181 +- .../adjustment-filter/AdjustmentFilter.ts | 127 +- .../src/pixi-proxy/adjustment-filter/index.ts | 2 +- libs/renderer/src/pixi-proxy/index.ts | 48 +- libs/renderer/src/room/RoomInstance.ts | 387 +- libs/renderer/src/room/RoomManager.ts | 629 +- libs/renderer/src/room/RoomObjectManager.ts | 207 +- libs/renderer/src/room/index.ts | 22 +- .../room/messages/RoomObjectUpdateMessage.ts | 32 +- libs/renderer/src/room/messages/index.ts | 2 +- libs/renderer/src/room/object/RoomObject.ts | 380 +- .../src/room/object/RoomObjectModel.ts | 78 +- libs/renderer/src/room/object/index.ts | 8 +- .../room/object/logic/RoomObjectLogicBase.ts | 205 +- libs/renderer/src/room/object/logic/index.ts | 2 +- .../object/visualization/RoomObjectSprite.ts | 621 +- .../RoomObjectSpriteVisualization.ts | 495 +- .../src/room/object/visualization/index.ts | 4 +- .../src/room/renderer/RoomRenderer.ts | 269 +- .../src/room/renderer/RoomRendererFactory.ts | 14 +- .../src/room/renderer/RoomSpriteCanvas.ts | 2196 +++--- .../room/renderer/cache/RoomObjectCache.ts | 241 +- .../renderer/cache/RoomObjectCacheItem.ts | 79 +- .../cache/RoomObjectLocationCacheItem.ts | 143 +- .../RoomObjectSortableSpriteCacheItem.ts | 134 +- .../renderer/src/room/renderer/cache/index.ts | 8 +- libs/renderer/src/room/renderer/index.ts | 10 +- .../src/room/renderer/utils/ExtendedSprite.ts | 321 +- .../room/renderer/utils/ObjectMouseData.ts | 46 +- .../src/room/renderer/utils/SortableSprite.ts | 111 +- .../renderer/src/room/renderer/utils/index.ts | 6 +- .../renderer/src/room/utils/ColorConverter.ts | 572 +- libs/renderer/src/room/utils/NumberBank.ts | 82 +- libs/renderer/src/room/utils/PointMath.ts | 26 +- libs/renderer/src/room/utils/Rasterizer.ts | 217 +- .../src/room/utils/RoomEnterEffect.ts | 116 +- libs/renderer/src/room/utils/RoomGeometry.ts | 707 +- libs/renderer/src/room/utils/RoomId.ts | 19 +- .../src/room/utils/RoomRotatingEffect.ts | 112 +- .../src/room/utils/RoomShakingEffect.ts | 112 +- .../src/room/utils/SpriteUtilities.ts | 25 +- libs/renderer/src/room/utils/index.ts | 20 +- nx.json | 13 +- package-lock.json | 852 +-- package.json | 1 + 3598 files changed, 137918 insertions(+), 149360 deletions(-) diff --git a/.prettierignore b/.prettierignore index d0b804d..fa9f2e5 100644 --- a/.prettierignore +++ b/.prettierignore @@ -2,3 +2,4 @@ /dist /coverage +package-lock.json \ No newline at end of file diff --git a/.prettierrc b/.prettierrc index e8812cd..4bf5a34 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,12 +1,12 @@ { - "trailingComma": "es5", - "tabWidth": 2, - "bracketSpacing": false, - "singleQuote": false, - "arrowParens": "avoid", - "printWidth": 160, - "jsxBracketSameLine": true, - "importOrder": ["^@core/(.*)$", "^@server/(.*)$", "^@ui/(.*)$", "^[./]"], - "importOrderSeparation": true, - "importOrderSortSpecifiers": true - } \ No newline at end of file + "trailingComma": "es5", + "tabWidth": 2, + "bracketSpacing": false, + "singleQuote": false, + "arrowParens": "avoid", + "printWidth": 160, + "jsxBracketSameLine": true, + "importOrder": ["^@core/(.*)$", "^@server/(.*)$", "^@ui/(.*)$", "^[./]"], + "importOrderSeparation": true, + "importOrderSortSpecifiers": true +} diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 462e29b..1b301e1 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,7 +1,3 @@ { - "recommendations": [ - "nrwl.angular-console", - "esbenp.prettier-vscode", - "dbaeumer.vscode-eslint" - ] + "recommendations": ["nrwl.angular-console", "esbenp.prettier-vscode", "dbaeumer.vscode-eslint"] } diff --git a/apps/frontend-e2e/cypress.config.ts b/apps/frontend-e2e/cypress.config.ts index 60aecd5..87ed65f 100644 --- a/apps/frontend-e2e/cypress.config.ts +++ b/apps/frontend-e2e/cypress.config.ts @@ -1,8 +1,8 @@ -import { defineConfig } from 'cypress'; -import { nxE2EPreset } from '@nrwl/cypress/plugins/cypress-preset'; +import {nxE2EPreset} from "@nrwl/cypress/plugins/cypress-preset"; +import {defineConfig} from "cypress"; export default defineConfig({ e2e: nxE2EPreset(__dirname, { - bundler: 'vite', + bundler: "vite", }), }); diff --git a/apps/frontend-e2e/src/e2e/app.cy.ts b/apps/frontend-e2e/src/e2e/app.cy.ts index c37b7f7..e00f2be 100644 --- a/apps/frontend-e2e/src/e2e/app.cy.ts +++ b/apps/frontend-e2e/src/e2e/app.cy.ts @@ -1,13 +1,13 @@ -import { getGreeting } from '../support/app.po'; +import {getGreeting} from "../support/app.po"; -describe('frontend', () => { - beforeEach(() => cy.visit('/')); +describe("frontend", () => { + beforeEach(() => cy.visit("/")); - it('should display welcome message', () => { + it("should display welcome message", () => { // Custom command example, see `../support/commands.ts` file - cy.login('my-email@something.com', 'myPassword'); + cy.login("my-email@something.com", "myPassword"); // Function helper example, see `../support/app.po.ts` file - getGreeting().contains('Welcome frontend'); + getGreeting().contains("Welcome frontend"); }); }); diff --git a/apps/frontend-e2e/src/support/app.po.ts b/apps/frontend-e2e/src/support/app.po.ts index 3293424..a413582 100644 --- a/apps/frontend-e2e/src/support/app.po.ts +++ b/apps/frontend-e2e/src/support/app.po.ts @@ -1 +1 @@ -export const getGreeting = () => cy.get('h1'); +export const getGreeting = () => cy.get("h1"); diff --git a/apps/frontend-e2e/src/support/commands.ts b/apps/frontend-e2e/src/support/commands.ts index 310f1fa..ac470cb 100644 --- a/apps/frontend-e2e/src/support/commands.ts +++ b/apps/frontend-e2e/src/support/commands.ts @@ -17,8 +17,8 @@ declare namespace Cypress { } // // -- This is a parent command -- -Cypress.Commands.add('login', (email, password) => { - console.log('Custom command example: Login', email, password); +Cypress.Commands.add("login", (email, password) => { + console.log("Custom command example: Login", email, password); }); // // -- This is a child command -- diff --git a/apps/frontend-e2e/src/support/e2e.ts b/apps/frontend-e2e/src/support/e2e.ts index 3d469a6..e18debc 100644 --- a/apps/frontend-e2e/src/support/e2e.ts +++ b/apps/frontend-e2e/src/support/e2e.ts @@ -12,6 +12,5 @@ // You can read more here: // https://on.cypress.io/configuration // *********************************************************** - // Import commands.js using ES2015 syntax: -import './commands'; +import "./commands"; diff --git a/apps/frontend/index.html b/apps/frontend/index.html index dd4538b..5fe4cc1 100644 --- a/apps/frontend/index.html +++ b/apps/frontend/index.html @@ -4,18 +4,18 @@ - - - - - - - - + + + + + + + + - - - + + + Nitro @@ -23,11 +23,11 @@
diff --git a/apps/frontend/public/site.webmanifest b/apps/frontend/public/site.webmanifest index 6264b89..e055abc 100644 --- a/apps/frontend/public/site.webmanifest +++ b/apps/frontend/public/site.webmanifest @@ -1,20 +1,20 @@ { - "start_url": "/", - "name": "Nitro", - "short_name": "Nitro", - "icons": [ - { - "src": "android-chrome-192x192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "android-chrome-512x512.png", - "sizes": "512x512", - "type": "image/png" - } - ], - "theme_color": "#ffffff", - "background_color": "#ffffff", - "display": "standalone" + "start_url": "/", + "name": "Nitro", + "short_name": "Nitro", + "icons": [ + { + "src": "android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" } diff --git a/apps/frontend/src/App.scss b/apps/frontend/src/App.scss index 2000ade..d0c75ee 100644 --- a/apps/frontend/src/App.scss +++ b/apps/frontend/src/App.scss @@ -94,9 +94,9 @@ $nitro-calendar-width: 850px; $nitro-calendar-height: 400px; .nitro-app { - width: 100%; - height: 100%; + width: 100%; + height: 100%; } -@import './common'; -@import './components'; +@import "./common"; +@import "./components"; diff --git a/apps/frontend/src/App.tsx b/apps/frontend/src/App.tsx index faa04eb..ed9aa40 100644 --- a/apps/frontend/src/App.tsx +++ b/apps/frontend/src/App.tsx @@ -1,141 +1,144 @@ -import { ConfigurationEvent, GetAssetManager, HabboWebTools, LegacyExternalInterface, Nitro, NitroCommunicationDemoEvent, NitroConfiguration, NitroEvent, NitroLocalizationEvent, NitroVersion, RoomEngineEvent } from '@nitro/renderer'; -import { FC, useCallback, useEffect, useState } from 'react'; -import { GetCommunication, GetConfiguration, GetNitroInstance, GetUIVersion } from './api'; -import { Base, TransitionAnimation, TransitionAnimationTypes } from './common'; -import { LoadingView } from './components/loading/LoadingView'; -import { MainView } from './components/main/MainView'; -import { useConfigurationEvent, useLocalizationEvent, useMainEvent, useRoomEngineEvent } from './hooks'; +import { + ConfigurationEvent, + GetAssetManager, + HabboWebTools, + LegacyExternalInterface, + Nitro, + NitroCommunicationDemoEvent, + NitroConfiguration, + NitroEvent, + NitroLocalizationEvent, + NitroVersion, + RoomEngineEvent, +} from "@nitro/renderer"; +import {FC, useCallback, useEffect, useState} from "react"; + +import {GetCommunication, GetConfiguration, GetNitroInstance, GetUIVersion} from "./api"; +import {Base, TransitionAnimation, TransitionAnimationTypes} from "./common"; +import {LoadingView} from "./components/loading/LoadingView"; +import {MainView} from "./components/main/MainView"; +import {useConfigurationEvent, useLocalizationEvent, useMainEvent, useRoomEngineEvent} from "./hooks"; NitroVersion.UI_VERSION = GetUIVersion(); -export const App: FC<{}> = props => -{ - const [ isReady, setIsReady ] = useState(false); - const [ isError, setIsError ] = useState(false); - const [ message, setMessage ] = useState('Getting Ready'); - const [ percent, setPercent ] = useState(0); - const [ imageRendering, setImageRendering ] = useState(true); +export const App: FC<{}> = props => { + const [isReady, setIsReady] = useState(false); + const [isError, setIsError] = useState(false); + const [message, setMessage] = useState("Getting Ready"); + const [percent, setPercent] = useState(0); + const [imageRendering, setImageRendering] = useState(true); - if(!GetNitroInstance()) - { - //@ts-ignore - if(!NitroConfig) throw new Error('NitroConfig is not defined!'); + if (!GetNitroInstance()) { + //@ts-ignore + if (!NitroConfig) throw new Error("NitroConfig is not defined!"); - Nitro.bootstrap(); + Nitro.bootstrap(); + } + + const handler = useCallback(async (event: NitroEvent) => { + switch (event.type) { + case ConfigurationEvent.LOADED: + GetNitroInstance().localization.init(); + setPercent(prevValue => prevValue + 20); + return; + case ConfigurationEvent.FAILED: + setIsError(true); + setMessage("Configuration Failed"); + return; + case Nitro.WEBGL_UNAVAILABLE: + setIsError(true); + setMessage("WebGL Required"); + return; + case Nitro.WEBGL_CONTEXT_LOST: + setIsError(true); + setMessage("WebGL Context Lost - Reloading"); + + setTimeout(() => window.location.reload(), 1500); + return; + case NitroCommunicationDemoEvent.CONNECTION_HANDSHAKING: + setPercent(prevValue => prevValue + 20); + return; + case NitroCommunicationDemoEvent.CONNECTION_HANDSHAKE_FAILED: + setIsError(true); + setMessage("Handshake Failed"); + return; + case NitroCommunicationDemoEvent.CONNECTION_AUTHENTICATED: + setPercent(prevValue => prevValue + 20); + + GetNitroInstance().init(); + + if (LegacyExternalInterface.available) LegacyExternalInterface.call("legacyTrack", "authentication", "authok", []); + return; + case NitroCommunicationDemoEvent.CONNECTION_ERROR: + setIsError(true); + setMessage("Connection Error"); + return; + case NitroCommunicationDemoEvent.CONNECTION_CLOSED: + //if(GetNitroInstance().roomEngine) GetNitroInstance().roomEngine.dispose(); + //setIsError(true); + setMessage("Connection Error"); + + HabboWebTools.send(-1, "client.init.handshake.fail"); + return; + case RoomEngineEvent.ENGINE_INITIALIZED: + setPercent(prevValue => prevValue + 20); + + setTimeout(() => setIsReady(true), 300); + return; + case NitroLocalizationEvent.LOADED: { + const assetUrls = GetConfiguration("preload.assets.urls"); + const urls: string[] = []; + + if (assetUrls && assetUrls.length) for (const url of assetUrls) urls.push(NitroConfiguration.interpolate(url)); + + const status = await GetAssetManager().downloadAssets(urls); + + if (status) { + GetCommunication().init(); + + setPercent(prevValue => prevValue + 20); + } else { + setIsError(true); + setMessage("Assets Failed"); + } + return; + } } + }, []); - const handler = useCallback(async (event: NitroEvent) => - { - switch(event.type) - { - case ConfigurationEvent.LOADED: - GetNitroInstance().localization.init(); - setPercent(prevValue => (prevValue + 20)); - return; - case ConfigurationEvent.FAILED: - setIsError(true); - setMessage('Configuration Failed'); - return; - case Nitro.WEBGL_UNAVAILABLE: - setIsError(true); - setMessage('WebGL Required'); - return; - case Nitro.WEBGL_CONTEXT_LOST: - setIsError(true); - setMessage('WebGL Context Lost - Reloading'); + useMainEvent(Nitro.WEBGL_UNAVAILABLE, handler); + useMainEvent(Nitro.WEBGL_CONTEXT_LOST, handler); + useMainEvent(NitroCommunicationDemoEvent.CONNECTION_HANDSHAKING, handler); + useMainEvent(NitroCommunicationDemoEvent.CONNECTION_HANDSHAKE_FAILED, handler); + useMainEvent(NitroCommunicationDemoEvent.CONNECTION_AUTHENTICATED, handler); + useMainEvent(NitroCommunicationDemoEvent.CONNECTION_ERROR, handler); + useMainEvent(NitroCommunicationDemoEvent.CONNECTION_CLOSED, handler); + useRoomEngineEvent(RoomEngineEvent.ENGINE_INITIALIZED, handler); + useLocalizationEvent(NitroLocalizationEvent.LOADED, handler); + useConfigurationEvent(ConfigurationEvent.LOADED, handler); + useConfigurationEvent(ConfigurationEvent.FAILED, handler); - setTimeout(() => window.location.reload(), 1500); - return; - case NitroCommunicationDemoEvent.CONNECTION_HANDSHAKING: - setPercent(prevValue => (prevValue + 20)); - return; - case NitroCommunicationDemoEvent.CONNECTION_HANDSHAKE_FAILED: - setIsError(true); - setMessage('Handshake Failed'); - return; - case NitroCommunicationDemoEvent.CONNECTION_AUTHENTICATED: - setPercent(prevValue => (prevValue + 20)); + useEffect(() => { + GetNitroInstance().core.configuration.init(); - GetNitroInstance().init(); + const resize = (event: UIEvent) => setImageRendering(!(window.devicePixelRatio % 1)); - if(LegacyExternalInterface.available) LegacyExternalInterface.call('legacyTrack', 'authentication', 'authok', []); - return; - case NitroCommunicationDemoEvent.CONNECTION_ERROR: - setIsError(true); - setMessage('Connection Error'); - return; - case NitroCommunicationDemoEvent.CONNECTION_CLOSED: - //if(GetNitroInstance().roomEngine) GetNitroInstance().roomEngine.dispose(); - //setIsError(true); - setMessage('Connection Error'); + window.addEventListener("resize", resize); - HabboWebTools.send(-1, 'client.init.handshake.fail'); - return; - case RoomEngineEvent.ENGINE_INITIALIZED: - setPercent(prevValue => (prevValue + 20)); + resize(null); - setTimeout(() => setIsReady(true), 300); - return; - case NitroLocalizationEvent.LOADED: { - const assetUrls = GetConfiguration('preload.assets.urls'); - const urls: string[] = []; + return () => { + window.removeEventListener("resize", resize); + }; + }, []); - if(assetUrls && assetUrls.length) for(const url of assetUrls) urls.push(NitroConfiguration.interpolate(url)); - - const status = await GetAssetManager().downloadAssets(urls); - - if(status) - { - GetCommunication().init(); - - setPercent(prevValue => (prevValue + 20)) - } - else - { - setIsError(true); - setMessage('Assets Failed'); - } - return; - } - } - }, []); - - useMainEvent(Nitro.WEBGL_UNAVAILABLE, handler); - useMainEvent(Nitro.WEBGL_CONTEXT_LOST, handler); - useMainEvent(NitroCommunicationDemoEvent.CONNECTION_HANDSHAKING, handler); - useMainEvent(NitroCommunicationDemoEvent.CONNECTION_HANDSHAKE_FAILED, handler); - useMainEvent(NitroCommunicationDemoEvent.CONNECTION_AUTHENTICATED, handler); - useMainEvent(NitroCommunicationDemoEvent.CONNECTION_ERROR, handler); - useMainEvent(NitroCommunicationDemoEvent.CONNECTION_CLOSED, handler); - useRoomEngineEvent(RoomEngineEvent.ENGINE_INITIALIZED, handler); - useLocalizationEvent(NitroLocalizationEvent.LOADED, handler); - useConfigurationEvent(ConfigurationEvent.LOADED, handler); - useConfigurationEvent(ConfigurationEvent.FAILED, handler); - - useEffect(() => - { - GetNitroInstance().core.configuration.init(); - - const resize = (event: UIEvent) => setImageRendering(!(window.devicePixelRatio % 1)); - - window.addEventListener('resize', resize); - - resize(null); - - return () => - { - window.removeEventListener('resize', resize); - } - }, []); - - return ( - - { (!isReady || isError) && - } - - - - - - ); -} + return ( + + {(!isReady || isError) && } + + + + + + ); +}; diff --git a/apps/frontend/src/api/GetRendererVersion.ts b/apps/frontend/src/api/GetRendererVersion.ts index d5a5233..56bc048 100644 --- a/apps/frontend/src/api/GetRendererVersion.ts +++ b/apps/frontend/src/api/GetRendererVersion.ts @@ -1,3 +1,3 @@ -import { NitroVersion } from '@nitro/renderer'; +import {NitroVersion} from "@nitro/renderer"; export const GetRendererVersion = () => NitroVersion.RENDERER_VERSION; diff --git a/apps/frontend/src/api/GetUIVersion.ts b/apps/frontend/src/api/GetUIVersion.ts index cf8d5a5..1065643 100644 --- a/apps/frontend/src/api/GetUIVersion.ts +++ b/apps/frontend/src/api/GetUIVersion.ts @@ -1 +1 @@ -export const GetUIVersion = () => '2.1.1'; +export const GetUIVersion = () => "2.1.1"; diff --git a/apps/frontend/src/api/achievements/AchievementCategory.ts b/apps/frontend/src/api/achievements/AchievementCategory.ts index 141a153..0f7dfca 100644 --- a/apps/frontend/src/api/achievements/AchievementCategory.ts +++ b/apps/frontend/src/api/achievements/AchievementCategory.ts @@ -1,40 +1,34 @@ -import { AchievementData } from '@nitro/renderer'; -import { AchievementUtilities } from './AchievementUtilities'; -import { IAchievementCategory } from './IAchievementCategory'; +import {AchievementData} from "@nitro/renderer"; -export class AchievementCategory implements IAchievementCategory -{ - private _code: string; - private _achievements: AchievementData[]; +import {AchievementUtilities} from "./AchievementUtilities"; +import {IAchievementCategory} from "./IAchievementCategory"; - constructor(code: string) - { - this._code = code; - this._achievements = []; - } +export class AchievementCategory implements IAchievementCategory { + private _code: string; + private _achievements: AchievementData[]; - public getProgress(): number - { - return AchievementUtilities.getAchievementCategoryProgress(this); - } + constructor(code: string) { + this._code = code; + this._achievements = []; + } - public getMaxProgress(): number - { - return AchievementUtilities.getAchievementCategoryMaxProgress(this); - } + public getProgress(): number { + return AchievementUtilities.getAchievementCategoryProgress(this); + } - public get code(): string - { - return this._code; - } + public getMaxProgress(): number { + return AchievementUtilities.getAchievementCategoryMaxProgress(this); + } - public get achievements(): AchievementData[] - { - return this._achievements; - } + public get code(): string { + return this._code; + } - public set achievements(achievements: AchievementData[]) - { - this._achievements = achievements; - } + public get achievements(): AchievementData[] { + return this._achievements; + } + + public set achievements(achievements: AchievementData[]) { + this._achievements = achievements; + } } diff --git a/apps/frontend/src/api/achievements/AchievementUtilities.ts b/apps/frontend/src/api/achievements/AchievementUtilities.ts index 28a54e2..6a882e2 100644 --- a/apps/frontend/src/api/achievements/AchievementUtilities.ts +++ b/apps/frontend/src/api/achievements/AchievementUtilities.ts @@ -1,97 +1,88 @@ -import { AchievementData } from '@nitro/renderer'; -import { GetConfiguration, GetLocalization } from '../nitro'; -import { IAchievementCategory } from './IAchievementCategory'; +import {AchievementData} from "@nitro/renderer"; -export class AchievementUtilities -{ - public static getAchievementBadgeCode(achievement: AchievementData): string - { - if(!achievement) return null; - - let badgeId = achievement.badgeId; - - if(!achievement.finalLevel) badgeId = GetLocalization().getPreviousLevelBadgeId(badgeId); - - return badgeId; +import {GetConfiguration, GetLocalization} from "../nitro"; +import {IAchievementCategory} from "./IAchievementCategory"; + +export class AchievementUtilities { + public static getAchievementBadgeCode(achievement: AchievementData): string { + if (!achievement) return null; + + let badgeId = achievement.badgeId; + + if (!achievement.finalLevel) badgeId = GetLocalization().getPreviousLevelBadgeId(badgeId); + + return badgeId; + } + + public static getAchievementCategoryImageUrl(category: IAchievementCategory, progress: number = null, icon: boolean = false): string { + const imageUrl = GetConfiguration("achievements.images.url"); + + let imageName = icon ? "achicon_" : "achcategory_"; + + imageName += category.code; + + if (progress !== null) imageName += `_${progress > 0 ? "active" : "inactive"}`; + + return imageUrl.replace("%image%", imageName); + } + + public static getAchievementCategoryMaxProgress(category: IAchievementCategory): number { + if (!category) return 0; + + let progress = 0; + + for (const achievement of category.achievements) { + progress += achievement.levelCount; } - public static getAchievementCategoryImageUrl(category: IAchievementCategory, progress: number = null, icon: boolean = false): string - { - const imageUrl = GetConfiguration('achievements.images.url'); - - let imageName = icon ? 'achicon_' : 'achcategory_'; - - imageName += category.code; - - if(progress !== null) imageName += `_${ ((progress > 0) ? 'active' : 'inactive') }`; - - return imageUrl.replace('%image%', imageName); - } + return progress; + } - public static getAchievementCategoryMaxProgress(category: IAchievementCategory): number - { - if(!category) return 0; - - let progress = 0; - - for(const achievement of category.achievements) - { - progress += achievement.levelCount; - } - - return progress; - } + public static getAchievementCategoryProgress(category: IAchievementCategory): number { + if (!category) return 0; - public static getAchievementCategoryProgress(category: IAchievementCategory): number - { - if(!category) return 0; - - let progress = 0; - - for(const achievement of category.achievements) progress += (achievement.finalLevel ? achievement.level : (achievement.level - 1)); - - return progress; - } + let progress = 0; - public static getAchievementCategoryTotalUnseen(category: IAchievementCategory): number - { - if(!category) return 0; - - let unseen = 0; - - for(const achievement of category.achievements) ((achievement.unseen > 0) && unseen++); - - return unseen; - } + for (const achievement of category.achievements) progress += achievement.finalLevel ? achievement.level : achievement.level - 1; - public static getAchievementHasStarted(achievement: AchievementData): boolean - { - if(!achievement) return false; - - if(achievement.finalLevel || ((achievement.level - 1) > 0)) return true; - - return false; - } + return progress; + } - public static getAchievementIsIgnored(achievement: AchievementData): boolean - { - if(!achievement) return false; - - const ignored = GetConfiguration('achievements.unseen.ignored'); - const value = achievement.badgeId.replace(/[0-9]/g, ''); - const index = ignored.indexOf(value); - - if(index >= 0) return true; - - return false; - } + public static getAchievementCategoryTotalUnseen(category: IAchievementCategory): number { + if (!category) return 0; - public static getAchievementLevel(achievement: AchievementData): number - { - if(!achievement) return 0; - - if(achievement.finalLevel) return achievement.level; - - return (achievement.level - 1); - } + let unseen = 0; + + for (const achievement of category.achievements) achievement.unseen > 0 && unseen++; + + return unseen; + } + + public static getAchievementHasStarted(achievement: AchievementData): boolean { + if (!achievement) return false; + + if (achievement.finalLevel || achievement.level - 1 > 0) return true; + + return false; + } + + public static getAchievementIsIgnored(achievement: AchievementData): boolean { + if (!achievement) return false; + + const ignored = GetConfiguration("achievements.unseen.ignored"); + const value = achievement.badgeId.replace(/[0-9]/g, ""); + const index = ignored.indexOf(value); + + if (index >= 0) return true; + + return false; + } + + public static getAchievementLevel(achievement: AchievementData): number { + if (!achievement) return 0; + + if (achievement.finalLevel) return achievement.level; + + return achievement.level - 1; + } } diff --git a/apps/frontend/src/api/achievements/IAchievementCategory.ts b/apps/frontend/src/api/achievements/IAchievementCategory.ts index 35aa139..8b1dc94 100644 --- a/apps/frontend/src/api/achievements/IAchievementCategory.ts +++ b/apps/frontend/src/api/achievements/IAchievementCategory.ts @@ -1,7 +1,6 @@ -import { AchievementData } from '@nitro/renderer'; +import {AchievementData} from "@nitro/renderer"; -export interface IAchievementCategory -{ - code: string; - achievements: AchievementData[]; +export interface IAchievementCategory { + code: string; + achievements: AchievementData[]; } diff --git a/apps/frontend/src/api/achievements/index.ts b/apps/frontend/src/api/achievements/index.ts index a3d44b7..b847938 100644 --- a/apps/frontend/src/api/achievements/index.ts +++ b/apps/frontend/src/api/achievements/index.ts @@ -1,3 +1,3 @@ -export * from './AchievementCategory'; -export * from './AchievementUtilities'; -export * from './IAchievementCategory'; +export * from "./AchievementCategory"; +export * from "./AchievementUtilities"; +export * from "./IAchievementCategory"; diff --git a/apps/frontend/src/api/avatar/AvatarEditorAction.ts b/apps/frontend/src/api/avatar/AvatarEditorAction.ts index 064d6df..36a301d 100644 --- a/apps/frontend/src/api/avatar/AvatarEditorAction.ts +++ b/apps/frontend/src/api/avatar/AvatarEditorAction.ts @@ -1,7 +1,6 @@ -export class AvatarEditorAction -{ - public static ACTION_SAVE: string = 'AEA_ACTION_SAVE'; - public static ACTION_CLEAR: string = 'AEA_ACTION_CLEAR'; - public static ACTION_RESET: string = 'AEA_ACTION_RESET'; - public static ACTION_RANDOMIZE: string = 'AEA_ACTION_RANDOMIZE'; +export class AvatarEditorAction { + public static ACTION_SAVE: string = "AEA_ACTION_SAVE"; + public static ACTION_CLEAR: string = "AEA_ACTION_CLEAR"; + public static ACTION_RESET: string = "AEA_ACTION_RESET"; + public static ACTION_RANDOMIZE: string = "AEA_ACTION_RANDOMIZE"; } diff --git a/apps/frontend/src/api/avatar/AvatarEditorGridColorItem.ts b/apps/frontend/src/api/avatar/AvatarEditorGridColorItem.ts index eff1efb..adbf01f 100644 --- a/apps/frontend/src/api/avatar/AvatarEditorGridColorItem.ts +++ b/apps/frontend/src/api/avatar/AvatarEditorGridColorItem.ts @@ -1,65 +1,54 @@ -import { ColorConverter, IPartColor } from '@nitro/renderer'; +import {ColorConverter, IPartColor} from "@nitro/renderer"; -export class AvatarEditorGridColorItem -{ - private _partColor: IPartColor; - private _isDisabled: boolean; - private _isHC: boolean; - private _isSelected: boolean; - private _notifier: () => void; +export class AvatarEditorGridColorItem { + private _partColor: IPartColor; + private _isDisabled: boolean; + private _isHC: boolean; + private _isSelected: boolean; + private _notifier: () => void; - constructor(partColor: IPartColor, isDisabled: boolean = false) - { - this._partColor = partColor; - this._isDisabled = isDisabled; - this._isHC = (this._partColor.clubLevel > 0); - this._isSelected = false; - } + constructor(partColor: IPartColor, isDisabled: boolean = false) { + this._partColor = partColor; + this._isDisabled = isDisabled; + this._isHC = this._partColor.clubLevel > 0; + this._isSelected = false; + } - public dispose(): void - { - this._partColor = null; - } + public dispose(): void { + this._partColor = null; + } - public get partColor(): IPartColor - { - return this._partColor; - } + public get partColor(): IPartColor { + return this._partColor; + } - public get color(): string - { - return ColorConverter.int2rgb(this._partColor.rgb); - } + public get color(): string { + return ColorConverter.int2rgb(this._partColor.rgb); + } - public get isDisabled(): boolean - { - return this._isDisabled; - } + public get isDisabled(): boolean { + return this._isDisabled; + } - public get isHC(): boolean - { - return this._isHC; - } + public get isHC(): boolean { + return this._isHC; + } - public get isSelected(): boolean - { - return this._isSelected; - } + public get isSelected(): boolean { + return this._isSelected; + } - public set isSelected(flag: boolean) - { - this._isSelected = flag; + public set isSelected(flag: boolean) { + this._isSelected = flag; - if(this.notify) this.notify(); - } + if (this.notify) this.notify(); + } - public get notify(): () => void - { - return this._notifier; - } + public get notify(): () => void { + return this._notifier; + } - public set notify(notifier: () => void) - { - this._notifier = notifier; - } + public set notify(notifier: () => void) { + this._notifier = notifier; + } } diff --git a/apps/frontend/src/api/avatar/AvatarEditorGridPartItem.ts b/apps/frontend/src/api/avatar/AvatarEditorGridPartItem.ts index ce33d47..72d4916 100644 --- a/apps/frontend/src/api/avatar/AvatarEditorGridPartItem.ts +++ b/apps/frontend/src/api/avatar/AvatarEditorGridPartItem.ts @@ -1,337 +1,321 @@ -import { AvatarFigurePartType, IAvatarImageListener, IAvatarRenderManager, IFigurePart, IFigurePartSet, IGraphicAsset, IPartColor, NitroAlphaFilter, NitroContainer, NitroSprite, TextureUtils } from '@nitro/renderer'; -import { GetAvatarRenderManager } from '../nitro'; -import { FigureData } from './FigureData'; +import { + AvatarFigurePartType, + IAvatarImageListener, + IAvatarRenderManager, + IFigurePart, + IFigurePartSet, + IGraphicAsset, + IPartColor, + NitroAlphaFilter, + NitroContainer, + NitroSprite, + TextureUtils, +} from "@nitro/renderer"; -export class AvatarEditorGridPartItem implements IAvatarImageListener -{ - private static ALPHA_FILTER: NitroAlphaFilter = new NitroAlphaFilter(0.2); - private static THUMB_DIRECTIONS: number[] = [ 2, 6, 0, 4, 3, 1 ]; - private static DRAW_ORDER: string[] = [ - AvatarFigurePartType.LEFT_HAND_ITEM, - AvatarFigurePartType.LEFT_HAND, - AvatarFigurePartType.LEFT_SLEEVE, - AvatarFigurePartType.LEFT_COAT_SLEEVE, - AvatarFigurePartType.BODY, - AvatarFigurePartType.SHOES, - AvatarFigurePartType.LEGS, - AvatarFigurePartType.CHEST, - AvatarFigurePartType.CHEST_ACCESSORY, - AvatarFigurePartType.COAT_CHEST, - AvatarFigurePartType.CHEST_PRINT, - AvatarFigurePartType.WAIST_ACCESSORY, - AvatarFigurePartType.RIGHT_HAND, - AvatarFigurePartType.RIGHT_SLEEVE, - AvatarFigurePartType.RIGHT_COAT_SLEEVE, - AvatarFigurePartType.HEAD, - AvatarFigurePartType.FACE, - AvatarFigurePartType.EYES, - AvatarFigurePartType.HAIR, - AvatarFigurePartType.HAIR_BIG, - AvatarFigurePartType.FACE_ACCESSORY, - AvatarFigurePartType.EYE_ACCESSORY, - AvatarFigurePartType.HEAD_ACCESSORY, - AvatarFigurePartType.HEAD_ACCESSORY_EXTRA, - AvatarFigurePartType.RIGHT_HAND_ITEM, - ]; +import {GetAvatarRenderManager} from "../nitro"; +import {FigureData} from "./FigureData"; - private _renderManager: IAvatarRenderManager; - private _partSet: IFigurePartSet; - private _partColors: IPartColor[]; - private _useColors: boolean; - private _isDisabled: boolean; - private _thumbContainer: NitroContainer; - private _imageUrl: string; - private _maxColorIndex: number; - private _isValidFigure: boolean; - private _isHC: boolean; - private _isSellable: boolean; - private _isClear: boolean; - private _isSelected: boolean; - private _disposed: boolean; - private _isInitalized: boolean; - private _notifier: () => void; +export class AvatarEditorGridPartItem implements IAvatarImageListener { + private static ALPHA_FILTER: NitroAlphaFilter = new NitroAlphaFilter(0.2); + private static THUMB_DIRECTIONS: number[] = [2, 6, 0, 4, 3, 1]; + private static DRAW_ORDER: string[] = [ + AvatarFigurePartType.LEFT_HAND_ITEM, + AvatarFigurePartType.LEFT_HAND, + AvatarFigurePartType.LEFT_SLEEVE, + AvatarFigurePartType.LEFT_COAT_SLEEVE, + AvatarFigurePartType.BODY, + AvatarFigurePartType.SHOES, + AvatarFigurePartType.LEGS, + AvatarFigurePartType.CHEST, + AvatarFigurePartType.CHEST_ACCESSORY, + AvatarFigurePartType.COAT_CHEST, + AvatarFigurePartType.CHEST_PRINT, + AvatarFigurePartType.WAIST_ACCESSORY, + AvatarFigurePartType.RIGHT_HAND, + AvatarFigurePartType.RIGHT_SLEEVE, + AvatarFigurePartType.RIGHT_COAT_SLEEVE, + AvatarFigurePartType.HEAD, + AvatarFigurePartType.FACE, + AvatarFigurePartType.EYES, + AvatarFigurePartType.HAIR, + AvatarFigurePartType.HAIR_BIG, + AvatarFigurePartType.FACE_ACCESSORY, + AvatarFigurePartType.EYE_ACCESSORY, + AvatarFigurePartType.HEAD_ACCESSORY, + AvatarFigurePartType.HEAD_ACCESSORY_EXTRA, + AvatarFigurePartType.RIGHT_HAND_ITEM, + ]; - constructor(partSet: IFigurePartSet, partColors: IPartColor[], useColors: boolean = true, isDisabled: boolean = false) - { - this._renderManager = GetAvatarRenderManager(); - this._partSet = partSet; - this._partColors = partColors; - this._useColors = useColors; - this._isDisabled = isDisabled; - this._thumbContainer = null; - this._imageUrl = null; - this._maxColorIndex = 0; - this._isValidFigure = false; - this._isHC = false; - this._isSellable = false; - this._isClear = false; - this._isSelected = false; - this._disposed = false; - this._isInitalized = false; + private _renderManager: IAvatarRenderManager; + private _partSet: IFigurePartSet; + private _partColors: IPartColor[]; + private _useColors: boolean; + private _isDisabled: boolean; + private _thumbContainer: NitroContainer; + private _imageUrl: string; + private _maxColorIndex: number; + private _isValidFigure: boolean; + private _isHC: boolean; + private _isSellable: boolean; + private _isClear: boolean; + private _isSelected: boolean; + private _disposed: boolean; + private _isInitalized: boolean; + private _notifier: () => void; - if(partSet) - { - const colors = partSet.parts; + constructor(partSet: IFigurePartSet, partColors: IPartColor[], useColors: boolean = true, isDisabled: boolean = false) { + this._renderManager = GetAvatarRenderManager(); + this._partSet = partSet; + this._partColors = partColors; + this._useColors = useColors; + this._isDisabled = isDisabled; + this._thumbContainer = null; + this._imageUrl = null; + this._maxColorIndex = 0; + this._isValidFigure = false; + this._isHC = false; + this._isSellable = false; + this._isClear = false; + this._isSelected = false; + this._disposed = false; + this._isInitalized = false; - for(const color of colors) this._maxColorIndex = Math.max(this._maxColorIndex, color.colorLayerIndex); + if (partSet) { + const colors = partSet.parts; + + for (const color of colors) this._maxColorIndex = Math.max(this._maxColorIndex, color.colorLayerIndex); + } + } + + public init(): void { + if (this._isInitalized) return; + + this._isInitalized = true; + + this.update(); + } + + public dispose(): void { + if (this._disposed) return; + + this._renderManager = null; + this._partSet = null; + this._partColors = null; + this._imageUrl = null; + this._disposed = true; + this._isInitalized = false; + + if (this._thumbContainer) { + this._thumbContainer.destroy(); + + this._thumbContainer = null; + } + } + + public update(): void { + this.updateThumbVisualization(); + } + + private analyzeFigure(): boolean { + if (!this._renderManager || !this._partSet || !this._partSet.parts || !this._partSet.parts.length) return false; + + const figureContainer = this._renderManager.createFigureContainer(this.partSet.type + "-" + this.partSet.id); + + if (!this._renderManager.isFigureContainerReady(figureContainer)) { + this._renderManager.downloadAvatarFigure(figureContainer, this); + + return false; + } + + this._isValidFigure = true; + + return true; + } + + private renderThumb(): NitroContainer { + if (!this._renderManager || !this._partSet) return null; + + if (!this._isValidFigure) { + if (!this.analyzeFigure()) return null; + } + + const parts = this._partSet.parts.concat().sort(this.sortByDrawOrder); + const container = new NitroContainer(); + + for (const part of parts) { + if (!part) continue; + + let asset: IGraphicAsset = null; + let direction = 0; + let hasAsset = false; + + while (!hasAsset && direction < AvatarEditorGridPartItem.THUMB_DIRECTIONS.length) { + const assetName = + FigureData.SCALE + + "_" + + FigureData.STD + + "_" + + part.type + + "_" + + part.id + + "_" + + AvatarEditorGridPartItem.THUMB_DIRECTIONS[direction] + + "_" + + FigureData.DEFAULT_FRAME; + + asset = this._renderManager.getAssetByName(assetName); + + if (asset && asset.texture) { + hasAsset = true; + } else { + direction++; } + } + + if (!hasAsset) continue; + + const x = asset.offsetX; + const y = asset.offsetY; + let partColor: IPartColor = null; + + if (this._useColors && part.colorLayerIndex > 0) { + const color = this._partColors[part.colorLayerIndex - 1]; + + if (color) partColor = color; + } + + const sprite = new NitroSprite(asset.texture); + + sprite.position.set(x, y); + + if (partColor) sprite.tint = partColor.rgb; + + container.addChild(sprite); } - public init(): void - { - if(this._isInitalized) return; + return container; + } - this._isInitalized = true; + private updateThumbVisualization(): void { + if (!this._isInitalized) return; - this.update(); + let container = this._thumbContainer; + + if (!container) container = this.renderThumb(); + + if (!container) return; + + if (this._partSet) { + this._isHC = this._partSet.clubLevel > 0; + this._isSellable = this._partSet.isSellable; + } else { + this._isHC = false; + this._isSellable = false; } - public dispose(): void - { - if(this._disposed) return; + if (this._isDisabled) this.setAlpha(container, 0.2); - this._renderManager = null; - this._partSet = null; - this._partColors = null; - this._imageUrl = null; - this._disposed = true; - this._isInitalized = false; + this._imageUrl = TextureUtils.generateImageUrl(container); - if(this._thumbContainer) - { - this._thumbContainer.destroy(); + if (this.notify) this.notify(); + } - this._thumbContainer = null; - } - } + private setAlpha(container: NitroContainer, alpha: number): NitroContainer { + container.filters = [AvatarEditorGridPartItem.ALPHA_FILTER]; - public update(): void - { - this.updateThumbVisualization(); - } + return container; + } - private analyzeFigure(): boolean - { - if(!this._renderManager || !this._partSet || !this._partSet.parts || !this._partSet.parts.length) return false; + private sortByDrawOrder(a: IFigurePart, b: IFigurePart): number { + const indexA = AvatarEditorGridPartItem.DRAW_ORDER.indexOf(a.type); + const indexB = AvatarEditorGridPartItem.DRAW_ORDER.indexOf(b.type); - const figureContainer = this._renderManager.createFigureContainer(((this.partSet.type + '-') + this.partSet.id)); + if (indexA < indexB) return -1; - if(!this._renderManager.isFigureContainerReady(figureContainer)) - { - this._renderManager.downloadAvatarFigure(figureContainer, this); + if (indexA > indexB) return 1; - return false; - } + if (a.index < b.index) return -1; - this._isValidFigure = true; + if (a.index > b.index) return 1; - return true; - } + return 0; + } - private renderThumb(): NitroContainer - { - if(!this._renderManager || !this._partSet) return null; + public resetFigure(figure: string): void { + if (!this.analyzeFigure()) return; - if(!this._isValidFigure) - { - if(!this.analyzeFigure()) return null; - } + this.update(); + } - const parts = this._partSet.parts.concat().sort(this.sortByDrawOrder); - const container = new NitroContainer(); + public get disposed(): boolean { + return this._disposed; + } - for(const part of parts) - { - if(!part) continue; + public get id(): number { + if (!this._partSet) return -1; - let asset: IGraphicAsset = null; - let direction = 0; - let hasAsset = false; + return this._partSet.id; + } - while(!hasAsset && (direction < AvatarEditorGridPartItem.THUMB_DIRECTIONS.length)) - { - const assetName = ((((((((((FigureData.SCALE + '_') + FigureData.STD) + '_') + part.type) + '_') + part.id) + '_') + AvatarEditorGridPartItem.THUMB_DIRECTIONS[direction]) + '_') + FigureData.DEFAULT_FRAME); + public get partSet(): IFigurePartSet { + return this._partSet; + } - asset = this._renderManager.getAssetByName(assetName); + public set partColors(partColors: IPartColor[]) { + this._partColors = partColors; - if(asset && asset.texture) - { - hasAsset = true; - } - else - { - direction++; - } - } + this.update(); + } - if(!hasAsset) continue; + public get isDisabled(): boolean { + return this._isDisabled; + } - const x = asset.offsetX; - const y = asset.offsetY; - let partColor: IPartColor = null; + public set thumbContainer(container: NitroContainer) { + this._thumbContainer = container; - if(this._useColors && (part.colorLayerIndex > 0)) - { - const color = this._partColors[(part.colorLayerIndex - 1)]; + this.update(); + } - if(color) partColor = color; - } + public get imageUrl(): string { + return this._imageUrl; + } - const sprite = new NitroSprite(asset.texture); + public get maxColorIndex(): number { + return this._maxColorIndex; + } - sprite.position.set(x, y); + public get isHC(): boolean { + return this._isHC; + } - if(partColor) sprite.tint = partColor.rgb; + public get isSellable(): boolean { + return this._isSellable; + } - container.addChild(sprite); - } + public get isClear(): boolean { + return this._isClear; + } - return container; - } + public set isClear(flag: boolean) { + this._isClear = flag; + } - private updateThumbVisualization(): void - { - if(!this._isInitalized) return; + public get isSelected(): boolean { + return this._isSelected; + } - let container = this._thumbContainer; + public set isSelected(flag: boolean) { + this._isSelected = flag; - if(!container) container = this.renderThumb(); + if (this.notify) this.notify(); + } - if(!container) return; + public get notify(): () => void { + return this._notifier; + } - if(this._partSet) - { - this._isHC = (this._partSet.clubLevel > 0); - this._isSellable = this._partSet.isSellable; - } - else - { - this._isHC = false; - this._isSellable = false; - } - - if(this._isDisabled) this.setAlpha(container, 0.2); - - this._imageUrl = TextureUtils.generateImageUrl(container); - - if(this.notify) this.notify(); - } - - private setAlpha(container: NitroContainer, alpha: number): NitroContainer - { - container.filters = [ AvatarEditorGridPartItem.ALPHA_FILTER ]; - - return container; - } - - private sortByDrawOrder(a: IFigurePart, b: IFigurePart): number - { - const indexA = AvatarEditorGridPartItem.DRAW_ORDER.indexOf(a.type); - const indexB = AvatarEditorGridPartItem.DRAW_ORDER.indexOf(b.type); - - if(indexA < indexB) return -1; - - if(indexA > indexB) return 1; - - if(a.index < b.index) return -1; - - if(a.index > b.index) return 1; - - return 0; - } - - public resetFigure(figure: string): void - { - if(!this.analyzeFigure()) return; - - this.update(); - } - - public get disposed(): boolean - { - return this._disposed; - } - - public get id(): number - { - if(!this._partSet) return -1; - - return this._partSet.id; - } - - public get partSet(): IFigurePartSet - { - return this._partSet; - } - - public set partColors(partColors: IPartColor[]) - { - this._partColors = partColors; - - this.update(); - } - - public get isDisabled(): boolean - { - return this._isDisabled; - } - - public set thumbContainer(container: NitroContainer) - { - this._thumbContainer = container; - - this.update(); - } - - public get imageUrl(): string - { - return this._imageUrl; - } - - public get maxColorIndex(): number - { - return this._maxColorIndex; - } - - public get isHC(): boolean - { - return this._isHC; - } - - public get isSellable(): boolean - { - return this._isSellable; - } - - public get isClear(): boolean - { - return this._isClear; - } - - public set isClear(flag: boolean) - { - this._isClear = flag; - } - - public get isSelected(): boolean - { - return this._isSelected; - } - - public set isSelected(flag: boolean) - { - this._isSelected = flag; - - if(this.notify) this.notify(); - } - - public get notify(): () => void - { - return this._notifier; - } - - public set notify(notifier: () => void) - { - this._notifier = notifier; - } + public set notify(notifier: () => void) { + this._notifier = notifier; + } } diff --git a/apps/frontend/src/api/avatar/AvatarEditorUtilities.ts b/apps/frontend/src/api/avatar/AvatarEditorUtilities.ts index c785d41..1600f5f 100644 --- a/apps/frontend/src/api/avatar/AvatarEditorUtilities.ts +++ b/apps/frontend/src/api/avatar/AvatarEditorUtilities.ts @@ -1,277 +1,249 @@ -import { IPartColor } from '@nitro/renderer'; -import { GetAvatarPalette, GetAvatarRenderManager, GetAvatarSetType, GetClubMemberLevel, GetConfiguration } from '../nitro'; -import { AvatarEditorGridColorItem } from './AvatarEditorGridColorItem'; -import { AvatarEditorGridPartItem } from './AvatarEditorGridPartItem'; -import { CategoryBaseModel } from './CategoryBaseModel'; -import { CategoryData } from './CategoryData'; -import { FigureData } from './FigureData'; +import {IPartColor} from "@nitro/renderer"; -export class AvatarEditorUtilities -{ - private static MAX_PALETTES: number = 2; +import {GetAvatarPalette, GetAvatarRenderManager, GetAvatarSetType, GetClubMemberLevel, GetConfiguration} from "../nitro"; +import {AvatarEditorGridColorItem} from "./AvatarEditorGridColorItem"; +import {AvatarEditorGridPartItem} from "./AvatarEditorGridPartItem"; +import {CategoryBaseModel} from "./CategoryBaseModel"; +import {CategoryData} from "./CategoryData"; +import {FigureData} from "./FigureData"; - public static CURRENT_FIGURE: FigureData = null; - public static FIGURE_SET_IDS: number[] = []; - public static BOUND_FURNITURE_NAMES: string[] = []; +export class AvatarEditorUtilities { + private static MAX_PALETTES: number = 2; - public static getGender(gender: string): string - { - switch(gender) - { - case FigureData.MALE: - case 'm': - case 'M': - gender = FigureData.MALE; - break; - case FigureData.FEMALE: - case 'f': - case 'F': - gender = FigureData.FEMALE; - break; - default: - gender = FigureData.MALE; - } + public static CURRENT_FIGURE: FigureData = null; + public static FIGURE_SET_IDS: number[] = []; + public static BOUND_FURNITURE_NAMES: string[] = []; - return gender; + public static getGender(gender: string): string { + switch (gender) { + case FigureData.MALE: + case "m": + case "M": + gender = FigureData.MALE; + break; + case FigureData.FEMALE: + case "f": + case "F": + gender = FigureData.FEMALE; + break; + default: + gender = FigureData.MALE; } - public static hasFigureSetId(setId: number): boolean - { - return (this.FIGURE_SET_IDS.indexOf(setId) >= 0); + return gender; + } + + public static hasFigureSetId(setId: number): boolean { + return this.FIGURE_SET_IDS.indexOf(setId) >= 0; + } + + public static createCategory(model: CategoryBaseModel, name: string): CategoryData { + if (!model || !name || !this.CURRENT_FIGURE) return null; + + const partItems: AvatarEditorGridPartItem[] = []; + const colorItems: AvatarEditorGridColorItem[][] = []; + + let i = 0; + + while (i < this.MAX_PALETTES) { + colorItems.push([]); + + i++; } - public static createCategory(model: CategoryBaseModel, name: string): CategoryData - { - if(!model || !name || !this.CURRENT_FIGURE) return null; + const setType = GetAvatarSetType(name); - const partItems: AvatarEditorGridPartItem[] = []; - const colorItems: AvatarEditorGridColorItem[][] = []; + if (!setType) return null; + const palette = GetAvatarPalette(setType.paletteID); + + if (!palette) return null; + + let colorIds = this.CURRENT_FIGURE.getColorIds(name); + + if (!colorIds) colorIds = []; + + const partColors: IPartColor[] = new Array(colorIds.length); + const clubItemsDimmed = this.clubItemsDimmed; + const clubMemberLevel = GetClubMemberLevel(); + + for (const partColor of palette.colors.getValues()) { + if (partColor.isSelectable && (clubItemsDimmed || clubMemberLevel >= partColor.clubLevel)) { let i = 0; - while(i < this.MAX_PALETTES) - { - colorItems.push([]); + while (i < this.MAX_PALETTES) { + const isDisabled = clubMemberLevel < partColor.clubLevel; + const colorItem = new AvatarEditorGridColorItem(partColor, isDisabled); + + colorItems[i].push(colorItem); + + i++; + } + + if (name !== FigureData.FACE) { + let i = 0; + + while (i < colorIds.length) { + if (partColor.id === colorIds[i]) partColors[i] = partColor; i++; + } } - - const setType = GetAvatarSetType(name); - - if(!setType) return null; - - const palette = GetAvatarPalette(setType.paletteID); - - if(!palette) return null; - - let colorIds = this.CURRENT_FIGURE.getColorIds(name); - - if(!colorIds) colorIds = []; - - const partColors: IPartColor[] = new Array(colorIds.length); - const clubItemsDimmed = this.clubItemsDimmed; - const clubMemberLevel = GetClubMemberLevel(); - - for(const partColor of palette.colors.getValues()) - { - if(partColor.isSelectable && (clubItemsDimmed || (clubMemberLevel >= partColor.clubLevel))) - { - let i = 0; - - while(i < this.MAX_PALETTES) - { - const isDisabled = (clubMemberLevel < partColor.clubLevel); - const colorItem = new AvatarEditorGridColorItem(partColor, isDisabled); - - colorItems[i].push(colorItem); - - i++; - } - - if(name !== FigureData.FACE) - { - let i = 0; - - while(i < colorIds.length) - { - if(partColor.id === colorIds[i]) partColors[i] = partColor; - - i++; - } - } - } - } - - let mandatorySetIds: string[] = []; - - if(clubItemsDimmed) - { - mandatorySetIds = GetAvatarRenderManager().getMandatoryAvatarPartSetIds(this.CURRENT_FIGURE.gender, 2); - } - else - { - mandatorySetIds = GetAvatarRenderManager().getMandatoryAvatarPartSetIds(this.CURRENT_FIGURE.gender, clubMemberLevel); - } - - const isntMandatorySet = (mandatorySetIds.indexOf(name) === -1); - - if(isntMandatorySet) - { - const partItem = new AvatarEditorGridPartItem(null, null, false); - - partItem.isClear = true; - - partItems.push(partItem); - } - - const usesColors = (name !== FigureData.FACE); - const partSets = setType.partSets; - const totalPartSets = partSets.length; - - i = (totalPartSets - 1); - - while(i >= 0) - { - const partSet = partSets.getWithIndex(i); - - let isValidGender = false; - - if(partSet.gender === FigureData.UNISEX) - { - isValidGender = true; - } - - else if(partSet.gender === this.CURRENT_FIGURE.gender) - { - isValidGender = true; - } - - if(partSet.isSelectable && isValidGender && (clubItemsDimmed || (clubMemberLevel >= partSet.clubLevel))) - { - const isDisabled = (clubMemberLevel < partSet.clubLevel); - - let isValid = true; - - if(partSet.isSellable) isValid = this.hasFigureSetId(partSet.id); - - if(isValid) partItems.push(new AvatarEditorGridPartItem(partSet, partColors, usesColors, isDisabled)); - } - - i--; - } - - partItems.sort(this.clubItemsFirst ? this.clubSorter : this.noobSorter); - - // if(this._forceSellableClothingVisibility || GetNitroInstance().getConfiguration("avatareditor.support.sellablefurni", false)) - // { - // _local_31 = (this._manager.windowManager.assets.getAssetByName("camera_zoom_in") as BitmapDataAsset); - // _local_32 = (_local_31.content as BitmapData).clone(); - // _local_33 = (AvatarEditorView._Str_6802.clone() as IWindowContainer); - // _local_33.name = AvatarEditorGridView.GET_MORE; - // _local_7 = new AvatarEditorGridPartItem(_local_33, k, null, null, false); - // _local_7._Str_3093 = _local_32; - // _local_3.push(_local_7); - // } - - i = 0; - - while(i < this.MAX_PALETTES) - { - colorItems[i].sort(this.colorSorter); - - i++; - } - - return new CategoryData(name, partItems, colorItems); + } } - public static clubSorter(a: AvatarEditorGridPartItem, b: AvatarEditorGridPartItem): number - { - const clubLevelA = (!a.partSet ? 9999999999 : a.partSet.clubLevel); - const clubLevelB = (!b.partSet ? 9999999999 : b.partSet.clubLevel); - const isSellableA = (!a.partSet ? false : a.partSet.isSellable); - const isSellableB = (!b.partSet ? false : b.partSet.isSellable); + let mandatorySetIds: string[] = []; - if(isSellableA && !isSellableB) return 1; - - if(isSellableB && !isSellableA) return -1; - - if(clubLevelA > clubLevelB) return -1; - - if(clubLevelA < clubLevelB) return 1; - - if(a.partSet.id > b.partSet.id) return -1; - - if(a.partSet.id < b.partSet.id) return 1; - - return 0; + if (clubItemsDimmed) { + mandatorySetIds = GetAvatarRenderManager().getMandatoryAvatarPartSetIds(this.CURRENT_FIGURE.gender, 2); + } else { + mandatorySetIds = GetAvatarRenderManager().getMandatoryAvatarPartSetIds(this.CURRENT_FIGURE.gender, clubMemberLevel); } - public static colorSorter(a: AvatarEditorGridColorItem, b: AvatarEditorGridColorItem): number - { - const clubLevelA = (!a.partColor ? -1 : a.partColor.clubLevel); - const clubLevelB = (!b.partColor ? -1 : b.partColor.clubLevel); + const isntMandatorySet = mandatorySetIds.indexOf(name) === -1; - if(clubLevelA < clubLevelB) return -1; + if (isntMandatorySet) { + const partItem = new AvatarEditorGridPartItem(null, null, false); - if(clubLevelA > clubLevelB) return 1; + partItem.isClear = true; - if(a.partColor.index < b.partColor.index) return -1; - - if(a.partColor.index > b.partColor.index) return 1; - - return 0; + partItems.push(partItem); } - public static noobSorter(a: AvatarEditorGridPartItem, b: AvatarEditorGridPartItem): number - { - const clubLevelA = (!a.partSet ? -1 : a.partSet.clubLevel); - const clubLevelB = (!b.partSet ? -1 : b.partSet.clubLevel); - const isSellableA = (!a.partSet ? false : a.partSet.isSellable); - const isSellableB = (!b.partSet ? false : b.partSet.isSellable); + const usesColors = name !== FigureData.FACE; + const partSets = setType.partSets; + const totalPartSets = partSets.length; - if(isSellableA && !isSellableB) return 1; + i = totalPartSets - 1; - if(isSellableB && !isSellableA) return -1; + while (i >= 0) { + const partSet = partSets.getWithIndex(i); - if(clubLevelA < clubLevelB) return -1; + let isValidGender = false; - if(clubLevelA > clubLevelB) return 1; + if (partSet.gender === FigureData.UNISEX) { + isValidGender = true; + } else if (partSet.gender === this.CURRENT_FIGURE.gender) { + isValidGender = true; + } - if(a.partSet.id < b.partSet.id) return -1; + if (partSet.isSelectable && isValidGender && (clubItemsDimmed || clubMemberLevel >= partSet.clubLevel)) { + const isDisabled = clubMemberLevel < partSet.clubLevel; - if(a.partSet.id > b.partSet.id) return 1; + let isValid = true; - return 0; + if (partSet.isSellable) isValid = this.hasFigureSetId(partSet.id); + + if (isValid) partItems.push(new AvatarEditorGridPartItem(partSet, partColors, usesColors, isDisabled)); + } + + i--; } - public static avatarSetFirstSelectableColor(name: string): number - { - const setType = GetAvatarSetType(name); + partItems.sort(this.clubItemsFirst ? this.clubSorter : this.noobSorter); - if(!setType) return -1; + // if(this._forceSellableClothingVisibility || GetNitroInstance().getConfiguration("avatareditor.support.sellablefurni", false)) + // { + // _local_31 = (this._manager.windowManager.assets.getAssetByName("camera_zoom_in") as BitmapDataAsset); + // _local_32 = (_local_31.content as BitmapData).clone(); + // _local_33 = (AvatarEditorView._Str_6802.clone() as IWindowContainer); + // _local_33.name = AvatarEditorGridView.GET_MORE; + // _local_7 = new AvatarEditorGridPartItem(_local_33, k, null, null, false); + // _local_7._Str_3093 = _local_32; + // _local_3.push(_local_7); + // } - const palette = GetAvatarPalette(setType.paletteID); + i = 0; - if(!palette) return -1; + while (i < this.MAX_PALETTES) { + colorItems[i].sort(this.colorSorter); - for(const color of palette.colors.getValues()) - { - if(!color.isSelectable || (GetClubMemberLevel() < color.clubLevel)) continue; - - return color.id; - } - - return -1; + i++; } - public static get clubItemsFirst(): boolean - { - return GetConfiguration('avatareditor.show.clubitems.first', true); + return new CategoryData(name, partItems, colorItems); + } + + public static clubSorter(a: AvatarEditorGridPartItem, b: AvatarEditorGridPartItem): number { + const clubLevelA = !a.partSet ? 9999999999 : a.partSet.clubLevel; + const clubLevelB = !b.partSet ? 9999999999 : b.partSet.clubLevel; + const isSellableA = !a.partSet ? false : a.partSet.isSellable; + const isSellableB = !b.partSet ? false : b.partSet.isSellable; + + if (isSellableA && !isSellableB) return 1; + + if (isSellableB && !isSellableA) return -1; + + if (clubLevelA > clubLevelB) return -1; + + if (clubLevelA < clubLevelB) return 1; + + if (a.partSet.id > b.partSet.id) return -1; + + if (a.partSet.id < b.partSet.id) return 1; + + return 0; + } + + public static colorSorter(a: AvatarEditorGridColorItem, b: AvatarEditorGridColorItem): number { + const clubLevelA = !a.partColor ? -1 : a.partColor.clubLevel; + const clubLevelB = !b.partColor ? -1 : b.partColor.clubLevel; + + if (clubLevelA < clubLevelB) return -1; + + if (clubLevelA > clubLevelB) return 1; + + if (a.partColor.index < b.partColor.index) return -1; + + if (a.partColor.index > b.partColor.index) return 1; + + return 0; + } + + public static noobSorter(a: AvatarEditorGridPartItem, b: AvatarEditorGridPartItem): number { + const clubLevelA = !a.partSet ? -1 : a.partSet.clubLevel; + const clubLevelB = !b.partSet ? -1 : b.partSet.clubLevel; + const isSellableA = !a.partSet ? false : a.partSet.isSellable; + const isSellableB = !b.partSet ? false : b.partSet.isSellable; + + if (isSellableA && !isSellableB) return 1; + + if (isSellableB && !isSellableA) return -1; + + if (clubLevelA < clubLevelB) return -1; + + if (clubLevelA > clubLevelB) return 1; + + if (a.partSet.id < b.partSet.id) return -1; + + if (a.partSet.id > b.partSet.id) return 1; + + return 0; + } + + public static avatarSetFirstSelectableColor(name: string): number { + const setType = GetAvatarSetType(name); + + if (!setType) return -1; + + const palette = GetAvatarPalette(setType.paletteID); + + if (!palette) return -1; + + for (const color of palette.colors.getValues()) { + if (!color.isSelectable || GetClubMemberLevel() < color.clubLevel) continue; + + return color.id; } - public static get clubItemsDimmed(): boolean - { - return GetConfiguration('avatareditor.show.clubitems.dimmed', true); - } + return -1; + } + + public static get clubItemsFirst(): boolean { + return GetConfiguration("avatareditor.show.clubitems.first", true); + } + + public static get clubItemsDimmed(): boolean { + return GetConfiguration("avatareditor.show.clubitems.dimmed", true); + } } diff --git a/apps/frontend/src/api/avatar/BodyModel.ts b/apps/frontend/src/api/avatar/BodyModel.ts index 3ca8382..cb2d7d0 100644 --- a/apps/frontend/src/api/avatar/BodyModel.ts +++ b/apps/frontend/src/api/avatar/BodyModel.ts @@ -1,76 +1,72 @@ -import { AvatarEditorFigureCategory, AvatarScaleType, AvatarSetType } from '@nitro/renderer'; -import { GetAvatarRenderManager } from '../nitro'; -import { AvatarEditorUtilities } from './AvatarEditorUtilities'; -import { CategoryBaseModel } from './CategoryBaseModel'; -import { FigureData } from './FigureData'; +import {AvatarEditorFigureCategory, AvatarScaleType, AvatarSetType} from "@nitro/renderer"; -export class BodyModel extends CategoryBaseModel -{ - private _imageCallBackHandled: boolean = false; +import {GetAvatarRenderManager} from "../nitro"; +import {AvatarEditorUtilities} from "./AvatarEditorUtilities"; +import {CategoryBaseModel} from "./CategoryBaseModel"; +import {FigureData} from "./FigureData"; - public init(): void - { - super.init(); +export class BodyModel extends CategoryBaseModel { + private _imageCallBackHandled: boolean = false; - this.addCategory(FigureData.FACE); + public init(): void { + super.init(); - this._isInitalized = true; - } + this.addCategory(FigureData.FACE); - public selectColor(category: string, colorIndex: number, paletteId: number): void - { - super.selectColor(category, colorIndex, paletteId); + this._isInitalized = true; + } - this.updateSelectionsFromFigure(FigureData.FACE); - } + public selectColor(category: string, colorIndex: number, paletteId: number): void { + super.selectColor(category, colorIndex, paletteId); - protected updateSelectionsFromFigure(name: string): void - { - if(!this._categories || !AvatarEditorUtilities.CURRENT_FIGURE) return; + this.updateSelectionsFromFigure(FigureData.FACE); + } - const category = this._categories.get(name); + protected updateSelectionsFromFigure(name: string): void { + if (!this._categories || !AvatarEditorUtilities.CURRENT_FIGURE) return; - if(!category) return; + const category = this._categories.get(name); - const setId = AvatarEditorUtilities.CURRENT_FIGURE.getPartSetId(name); + if (!category) return; - let colorIds = AvatarEditorUtilities.CURRENT_FIGURE.getColorIds(name); + const setId = AvatarEditorUtilities.CURRENT_FIGURE.getPartSetId(name); - if(!colorIds) colorIds = []; + let colorIds = AvatarEditorUtilities.CURRENT_FIGURE.getColorIds(name); - category.selectPartId(setId); - category.selectColorIds(colorIds); + if (!colorIds) colorIds = []; - for(const part of category.parts) - { - const resetFigure = (figure: string) => - { - const figureString = AvatarEditorUtilities.CURRENT_FIGURE.getFigureStringWithFace(part.id); - const avatarImage = GetAvatarRenderManager().createAvatarImage(figureString, AvatarScaleType.LARGE, null, { resetFigure, dispose: null, disposed: false }); - - const sprite = avatarImage.getImageAsSprite(AvatarSetType.HEAD); - - if(sprite) - { - sprite.y = 10; - - part.thumbContainer = sprite; - - setTimeout(() => avatarImage.dispose(), 0); - } - } + category.selectPartId(setId); + category.selectColorIds(colorIds); - resetFigure(null); + for (const part of category.parts) { + const resetFigure = (figure: string) => { + const figureString = AvatarEditorUtilities.CURRENT_FIGURE.getFigureStringWithFace(part.id); + const avatarImage = GetAvatarRenderManager().createAvatarImage(figureString, AvatarScaleType.LARGE, null, { + resetFigure, + dispose: null, + disposed: false, + }); + + const sprite = avatarImage.getImageAsSprite(AvatarSetType.HEAD); + + if (sprite) { + sprite.y = 10; + + part.thumbContainer = sprite; + + setTimeout(() => avatarImage.dispose(), 0); } - } + }; - public get canSetGender(): boolean - { - return true; + resetFigure(null); } + } - public get name(): string - { - return AvatarEditorFigureCategory.GENERIC; - } + public get canSetGender(): boolean { + return true; + } + + public get name(): string { + return AvatarEditorFigureCategory.GENERIC; + } } diff --git a/apps/frontend/src/api/avatar/CategoryBaseModel.ts b/apps/frontend/src/api/avatar/CategoryBaseModel.ts index 34dd933..e96741f 100644 --- a/apps/frontend/src/api/avatar/CategoryBaseModel.ts +++ b/apps/frontend/src/api/avatar/CategoryBaseModel.ts @@ -1,246 +1,215 @@ -import { AvatarEditorUtilities } from './AvatarEditorUtilities'; -import { CategoryData } from './CategoryData'; -import { IAvatarEditorCategoryModel } from './IAvatarEditorCategoryModel'; +import {AvatarEditorUtilities} from "./AvatarEditorUtilities"; +import {CategoryData} from "./CategoryData"; +import {IAvatarEditorCategoryModel} from "./IAvatarEditorCategoryModel"; -export class CategoryBaseModel implements IAvatarEditorCategoryModel -{ - protected _categories: Map; - protected _isInitalized: boolean; - protected _maxPaletteCount: number; - private _disposed: boolean; +export class CategoryBaseModel implements IAvatarEditorCategoryModel { + protected _categories: Map; + protected _isInitalized: boolean; + protected _maxPaletteCount: number; + private _disposed: boolean; - constructor() - { - this._isInitalized = false; - this._maxPaletteCount = 0; + constructor() { + this._isInitalized = false; + this._maxPaletteCount = 0; + } + + public dispose(): void { + this._categories = null; + this._disposed = true; + } + + public get disposed(): boolean { + return this._disposed; + } + + public init(): void { + if (!this._categories) this._categories = new Map(); + } + + public reset(): void { + this._isInitalized = false; + + if (this._categories) { + for (const category of this._categories.values()) category && category.dispose(); } - public dispose(): void - { - this._categories = null; - this._disposed = true; + this._categories = new Map(); + } + + protected addCategory(name: string): void { + let existing = this._categories.get(name); + + if (existing) return; + + existing = AvatarEditorUtilities.createCategory(this, name); + + if (!existing) return; + + this._categories.set(name, existing); + + this.updateSelectionsFromFigure(name); + } + + protected updateSelectionsFromFigure(figure: string): void { + const category = this._categories.get(figure); + + if (!category) return; + + const setId = AvatarEditorUtilities.CURRENT_FIGURE.getPartSetId(figure); + + let colorIds = AvatarEditorUtilities.CURRENT_FIGURE.getColorIds(figure); + + if (!colorIds) colorIds = []; + + category.selectPartId(setId); + category.selectColorIds(colorIds); + } + + public hasClubSelectionsOverLevel(level: number): boolean { + if (!this._categories) return false; + + for (const category of this._categories.values()) { + if (!category) continue; + + if (category.hasClubSelectionsOverLevel(level)) return true; } - public get disposed(): boolean - { - return this._disposed; + return false; + } + + public hasInvalidSelectedItems(ownedItems: number[]): boolean { + if (!this._categories) return false; + + for (const category of this._categories.values()) { + if (category.hasInvalidSelectedItems(ownedItems)) return true; } - public init(): void - { - if(!this._categories) this._categories = new Map(); - } + return false; + } - public reset(): void - { - this._isInitalized = false; + public stripClubItemsOverLevel(level: number): boolean { + if (!this._categories) return false; - if(this._categories) - { - for(const category of this._categories.values()) (category && category.dispose()); + let didStrip = false; + + for (const [name, category] of this._categories.entries()) { + let isValid = false; + + if (category.stripClubItemsOverLevel(level)) isValid = true; + + if (category.stripClubColorsOverLevel(level)) isValid = true; + + if (isValid) { + const partItem = category.getCurrentPart(); + + if (partItem && AvatarEditorUtilities.CURRENT_FIGURE) { + AvatarEditorUtilities.CURRENT_FIGURE.savePartData(name, partItem.id, category.getSelectedColorIds(), true); } - this._categories = new Map(); + didStrip = true; + } } - protected addCategory(name: string): void - { - let existing = this._categories.get(name); + return didStrip; + } - if(existing) return; + public stripInvalidSellableItems(): boolean { + if (!this._categories) return false; - existing = AvatarEditorUtilities.createCategory(this, name); + let didStrip = false; - if(!existing) return; + for (const [name, category] of this._categories.entries()) { + const isValid = false; - this._categories.set(name, existing); + // if(category._Str_8360(this._Str_2278.manager.inventory)) _local_6 = true; - this.updateSelectionsFromFigure(name); - } + if (isValid) { + const partItem = category.getCurrentPart(); - protected updateSelectionsFromFigure(figure: string): void - { - const category = this._categories.get(figure); - - if(!category) return; - - const setId = AvatarEditorUtilities.CURRENT_FIGURE.getPartSetId(figure); - - let colorIds = AvatarEditorUtilities.CURRENT_FIGURE.getColorIds(figure); - - if(!colorIds) colorIds = []; - - category.selectPartId(setId); - category.selectColorIds(colorIds); - } - - public hasClubSelectionsOverLevel(level: number): boolean - { - if(!this._categories) return false; - - for(const category of this._categories.values()) - { - if(!category) continue; - - if(category.hasClubSelectionsOverLevel(level)) return true; + if (partItem && AvatarEditorUtilities.CURRENT_FIGURE) { + AvatarEditorUtilities.CURRENT_FIGURE.savePartData(name, partItem.id, category.getSelectedColorIds(), true); } - return false; + didStrip = true; + } } - public hasInvalidSelectedItems(ownedItems: number[]): boolean - { - if(!this._categories) return false; + return didStrip; + } - for(const category of this._categories.values()) - { - if(category.hasInvalidSelectedItems(ownedItems)) return true; - } + public selectPart(category: string, partIndex: number): void { + const categoryData = this._categories.get(category); - return false; + if (!categoryData) return; + + const selectedPartIndex = categoryData.selectedPartIndex; + + categoryData.selectPartIndex(partIndex); + + const partItem = categoryData.getCurrentPart(); + + if (!partItem) return; + + if (partItem.isDisabled) { + categoryData.selectPartIndex(selectedPartIndex); + + // open hc window + + return; } - public stripClubItemsOverLevel(level: number): boolean - { - if(!this._categories) return false; + this._maxPaletteCount = partItem.maxColorIndex; - let didStrip = false; + AvatarEditorUtilities.CURRENT_FIGURE.savePartData(category, partItem.id, categoryData.getSelectedColorIds(), true); + } - for(const [ name, category ] of this._categories.entries()) - { - let isValid = false; + public selectColor(category: string, colorIndex: number, paletteId: number): void { + const categoryData = this._categories.get(category); - if(category.stripClubItemsOverLevel(level)) isValid = true; + if (!categoryData) return; - if(category.stripClubColorsOverLevel(level)) isValid = true; + const paletteIndex = categoryData.getCurrentColorIndex(paletteId); - if(isValid) - { - const partItem = category.getCurrentPart(); + categoryData.selectColorIndex(colorIndex, paletteId); - if(partItem && AvatarEditorUtilities.CURRENT_FIGURE) - { - AvatarEditorUtilities.CURRENT_FIGURE.savePartData(name, partItem.id, category.getSelectedColorIds(), true); - } + const colorItem = categoryData.getSelectedColor(paletteId); - didStrip = true; - } - } + if (colorItem.isDisabled) { + categoryData.selectColorIndex(paletteIndex, paletteId); - return didStrip; + // open hc window + + return; } - public stripInvalidSellableItems(): boolean - { - if(!this._categories) return false; + AvatarEditorUtilities.CURRENT_FIGURE.savePartSetColourId(category, categoryData.getSelectedColorIds(), true); + } - let didStrip = false; + public getCategoryData(category: string): CategoryData { + if (!this._isInitalized) this.init(); - for(const [ name, category ] of this._categories.entries()) - { - const isValid = false; + if (!this._categories) return null; - // if(category._Str_8360(this._Str_2278.manager.inventory)) _local_6 = true; + return this._categories.get(category); + } - if(isValid) - { - const partItem = category.getCurrentPart(); + public get categories(): Map { + return this._categories; + } - if(partItem && AvatarEditorUtilities.CURRENT_FIGURE) - { - AvatarEditorUtilities.CURRENT_FIGURE.savePartData(name, partItem.id, category.getSelectedColorIds(), true); - } + public get canSetGender(): boolean { + return false; + } - didStrip = true; - } - } + public get maxPaletteCount(): number { + return this._maxPaletteCount || 1; + } - return didStrip; - } + public set maxPaletteCount(count: number) { + this._maxPaletteCount = count; + } - public selectPart(category: string, partIndex: number): void - { - const categoryData = this._categories.get(category); - - if(!categoryData) return; - - const selectedPartIndex = categoryData.selectedPartIndex; - - categoryData.selectPartIndex(partIndex); - - const partItem = categoryData.getCurrentPart(); - - if(!partItem) return; - - if(partItem.isDisabled) - { - categoryData.selectPartIndex(selectedPartIndex); - - // open hc window - - return; - } - - this._maxPaletteCount = partItem.maxColorIndex; - - AvatarEditorUtilities.CURRENT_FIGURE.savePartData(category, partItem.id, categoryData.getSelectedColorIds(), true); - } - - public selectColor(category: string, colorIndex: number, paletteId: number): void - { - const categoryData = this._categories.get(category); - - if(!categoryData) return; - - const paletteIndex = categoryData.getCurrentColorIndex(paletteId); - - categoryData.selectColorIndex(colorIndex, paletteId); - - const colorItem = categoryData.getSelectedColor(paletteId); - - if(colorItem.isDisabled) - { - categoryData.selectColorIndex(paletteIndex, paletteId); - - // open hc window - - return; - } - - AvatarEditorUtilities.CURRENT_FIGURE.savePartSetColourId(category, categoryData.getSelectedColorIds(), true); - } - - public getCategoryData(category: string): CategoryData - { - if(!this._isInitalized) this.init(); - - if(!this._categories) return null; - - return this._categories.get(category); - } - - public get categories(): Map - { - return this._categories; - } - - public get canSetGender(): boolean - { - return false; - } - - public get maxPaletteCount(): number - { - return (this._maxPaletteCount || 1); - } - - public set maxPaletteCount(count: number) - { - this._maxPaletteCount = count; - } - - public get name(): string - { - return null; - } + public get name(): string { + return null; + } } diff --git a/apps/frontend/src/api/avatar/CategoryData.ts b/apps/frontend/src/api/avatar/CategoryData.ts index d8083c2..7090120 100644 --- a/apps/frontend/src/api/avatar/CategoryData.ts +++ b/apps/frontend/src/api/avatar/CategoryData.ts @@ -1,487 +1,418 @@ -import { IPartColor } from '@nitro/renderer'; -import { AvatarEditorGridColorItem } from './AvatarEditorGridColorItem'; -import { AvatarEditorGridPartItem } from './AvatarEditorGridPartItem'; +import {IPartColor} from "@nitro/renderer"; -export class CategoryData -{ - private _name: string; - private _parts: AvatarEditorGridPartItem[]; - private _palettes: AvatarEditorGridColorItem[][]; - private _selectedPartIndex: number = -1; - private _paletteIndexes: number[]; +import {AvatarEditorGridColorItem} from "./AvatarEditorGridColorItem"; +import {AvatarEditorGridPartItem} from "./AvatarEditorGridPartItem"; - constructor(name: string, partItems: AvatarEditorGridPartItem[], colorItems: AvatarEditorGridColorItem[][]) - { - this._name = name; - this._parts = partItems; - this._palettes = colorItems; - this._selectedPartIndex = -1; +export class CategoryData { + private _name: string; + private _parts: AvatarEditorGridPartItem[]; + private _palettes: AvatarEditorGridColorItem[][]; + private _selectedPartIndex: number = -1; + private _paletteIndexes: number[]; + + constructor(name: string, partItems: AvatarEditorGridPartItem[], colorItems: AvatarEditorGridColorItem[][]) { + this._name = name; + this._parts = partItems; + this._palettes = colorItems; + this._selectedPartIndex = -1; + } + + private static defaultColorId(palettes: AvatarEditorGridColorItem[], clubLevel: number): number { + if (!palettes || !palettes.length) return -1; + + let i = 0; + + while (i < palettes.length) { + const colorItem = palettes[i]; + + if (colorItem.partColor && colorItem.partColor.clubLevel <= clubLevel) { + return colorItem.partColor.id; + } + + i++; } - private static defaultColorId(palettes: AvatarEditorGridColorItem[], clubLevel: number): number - { - if(!palettes || !palettes.length) return -1; + return -1; + } - let i = 0; + public init(): void { + for (const part of this._parts) { + if (!part) continue; - while(i < palettes.length) - { - const colorItem = palettes[i]; + part.init(); + } + } - if(colorItem.partColor && (colorItem.partColor.clubLevel <= clubLevel)) - { - return colorItem.partColor.id; - } + public dispose(): void { + if (this._parts) { + for (const part of this._parts) part.dispose(); - i++; + this._parts = null; + } + + if (this._palettes) { + for (const palette of this._palettes) for (const colorItem of palette) colorItem.dispose(); + + this._palettes = null; + } + + this._selectedPartIndex = -1; + this._paletteIndexes = null; + } + + public selectPartId(partId: number): void { + if (!this._parts) return; + + let i = 0; + + while (i < this._parts.length) { + const partItem = this._parts[i]; + + if (partItem.id === partId) { + this.selectPartIndex(i); + + return; + } + + i++; + } + } + + public selectColorIds(colorIds: number[]): void { + if (!colorIds || !this._palettes) return; + + this._paletteIndexes = new Array(colorIds.length); + + let i = 0; + + while (i < this._palettes.length) { + const palette = this.getPalette(i); + + if (palette) { + let colorId = 0; + + if (colorIds.length > i) { + colorId = colorIds[i]; + } else { + const colorItem = palette[0]; + + if (colorItem && colorItem.partColor) colorId = colorItem.partColor.id; } - return -1; - } + let j = 0; - public init(): void - { - for(const part of this._parts) - { - if(!part) continue; + while (j < palette.length) { + const colorItem = palette[j]; - part.init(); + if (colorItem.partColor.id === colorId) { + this._paletteIndexes[i] = j; + + colorItem.isSelected = true; + } else { + colorItem.isSelected = false; + } + + j++; } + } + + i++; } - public dispose(): void - { - if(this._parts) - { - for(const part of this._parts) part.dispose(); + this.updatePartColors(); + } - this._parts = null; + public selectPartIndex(partIndex: number): AvatarEditorGridPartItem { + if (!this._parts) return null; + + if (this._selectedPartIndex >= 0 && this._parts.length > this._selectedPartIndex) { + const partItem = this._parts[this._selectedPartIndex]; + + if (partItem) partItem.isSelected = false; + } + + if (this._parts.length > partIndex) { + const partItem = this._parts[partIndex]; + + if (partItem) { + partItem.isSelected = true; + + this._selectedPartIndex = partIndex; + + return partItem; + } + } + + return null; + } + + public selectColorIndex(colorIndex: number, paletteId: number): AvatarEditorGridColorItem { + const palette = this.getPalette(paletteId); + + if (!palette) return null; + + if (palette.length <= colorIndex) return null; + + this.deselectColorIndex(this._paletteIndexes[paletteId], paletteId); + + this._paletteIndexes[paletteId] = colorIndex; + + const colorItem = palette[colorIndex]; + + if (!colorItem) return null; + + colorItem.isSelected = true; + + this.updatePartColors(); + + return colorItem; + } + + public getCurrentColorIndex(k: number): number { + return this._paletteIndexes[k]; + } + + private deselectColorIndex(colorIndex: number, paletteIndex: number): void { + const palette = this.getPalette(paletteIndex); + + if (!palette) return; + + if (palette.length <= colorIndex) return; + + const colorItem = palette[colorIndex]; + + if (!colorItem) return; + + colorItem.isSelected = false; + } + + public getSelectedColorIds(): number[] { + if (!this._paletteIndexes || !this._paletteIndexes.length) return null; + + if (!this._palettes || !this._palettes.length) return null; + + const palette = this._palettes[0]; + + if (!palette || !palette.length) return null; + + const colorItem = palette[0]; + + if (!colorItem || !colorItem.partColor) return null; + + const colorId = colorItem.partColor.id; + const colorIds: number[] = []; + + let i = 0; + + while (i < this._paletteIndexes.length) { + const paletteSet = this._palettes[i]; + + if (!(!paletteSet || paletteSet.length <= i)) { + if (paletteSet.length > this._paletteIndexes[i]) { + const color = paletteSet[this._paletteIndexes[i]]; + + if (color && color.partColor) { + colorIds.push(color.partColor.id); + } else { + colorIds.push(colorId); + } + } else { + colorIds.push(colorId); } + } - if(this._palettes) - { - for(const palette of this._palettes) for(const colorItem of palette) colorItem.dispose(); + i++; + } - this._palettes = null; + const partItem = this.getCurrentPart(); + + if (!partItem) return null; + + return colorIds.slice(0, Math.max(partItem.maxColorIndex, 1)); + } + + private getSelectedColors(): IPartColor[] { + const partColors: IPartColor[] = []; + + let i = 0; + + while (i < this._paletteIndexes.length) { + const colorItem = this.getSelectedColor(i); + + if (colorItem) { + partColors.push(colorItem.partColor); + } else { + partColors.push(null); + } + + i++; + } + + return partColors; + } + + public getSelectedColor(paletteId: number): AvatarEditorGridColorItem { + const palette = this.getPalette(paletteId); + + if (!palette || palette.length <= this._paletteIndexes[paletteId]) return null; + + return palette[this._paletteIndexes[paletteId]]; + } + + public getSelectedColorId(paletteId: number): number { + const colorItem = this.getSelectedColor(paletteId); + + if (colorItem && colorItem.partColor) return colorItem.partColor.id; + + return 0; + } + + public getPalette(paletteId: number): AvatarEditorGridColorItem[] { + if (!this._paletteIndexes || !this._palettes || this._palettes.length <= paletteId) { + return null; + } + + return this._palettes[paletteId]; + } + + public getCurrentPart(): AvatarEditorGridPartItem { + return this._parts[this._selectedPartIndex] as AvatarEditorGridPartItem; + } + + private updatePartColors(): void { + const partColors = this.getSelectedColors(); + + for (const partItem of this._parts) { + if (partItem) partItem.partColors = partColors; + } + } + + public hasClubSelectionsOverLevel(level: number): boolean { + let hasInvalidSelections = false; + + const partColors = this.getSelectedColors(); + + if (partColors) { + let i = 0; + + while (i < partColors.length) { + const partColor = partColors[i]; + + if (partColor && partColor.clubLevel > level) hasInvalidSelections = true; + + i++; + } + } + + const partItem = this.getCurrentPart(); + + if (partItem && partItem.partSet) { + const partSet = partItem.partSet; + + if (partSet && partSet.clubLevel > level) hasInvalidSelections = true; + } + + return hasInvalidSelections; + } + + public hasInvalidSelectedItems(ownedItems: number[]): boolean { + const part = this.getCurrentPart(); + + if (!part) return false; + + const partSet = part.partSet; + + if (!partSet || !partSet.isSellable) return; + + return ownedItems.indexOf(partSet.id) > -1; + } + + public stripClubItemsOverLevel(level: number): boolean { + const partItem = this.getCurrentPart(); + + if (partItem && partItem.partSet) { + const partSet = partItem.partSet; + + if (partSet.clubLevel > level) { + const newPartItem = this.selectPartIndex(0); + + if (newPartItem && !newPartItem.partSet) this.selectPartIndex(1); + + return true; + } + } + + return false; + } + + public stripClubColorsOverLevel(level: number): boolean { + const colorIds: number[] = []; + const partColors = this.getSelectedColors(); + const colorItems = this.getPalette(0); + + let didStrip = false; + + const colorId = CategoryData.defaultColorId(colorItems, level); + + if (colorId === -1) return false; + + let i = 0; + + while (i < partColors.length) { + const partColor = partColors[i]; + + if (!partColor) { + colorIds.push(colorId); + + didStrip = true; + } else { + if (partColor.clubLevel > level) { + colorIds.push(colorId); + + didStrip = true; + } else { + colorIds.push(partColor.id); } + } - this._selectedPartIndex = -1; - this._paletteIndexes = null; + i++; } - public selectPartId(partId: number): void - { - if(!this._parts) return; - - let i = 0; - - while(i < this._parts.length) - { - const partItem = this._parts[i]; - - if(partItem.id === partId) - { - this.selectPartIndex(i); - - return; - } - - i++; - } - } - - public selectColorIds(colorIds: number[]): void - { - if(!colorIds || !this._palettes) return; - - this._paletteIndexes = new Array(colorIds.length); - - let i = 0; - - while(i < this._palettes.length) - { - const palette = this.getPalette(i); - - if(palette) - { - let colorId = 0; - - if(colorIds.length > i) - { - colorId = colorIds[i]; - } - else - { - const colorItem = palette[0]; - - if(colorItem && colorItem.partColor) colorId = colorItem.partColor.id; - } - - let j = 0; - - while(j < palette.length) - { - const colorItem = palette[j]; - - if(colorItem.partColor.id === colorId) - { - this._paletteIndexes[i] = j; - - colorItem.isSelected = true; - } - else - { - colorItem.isSelected = false; - } - - j++; - } - } - - i++; - } - - this.updatePartColors(); - } - - public selectPartIndex(partIndex: number): AvatarEditorGridPartItem - { - if(!this._parts) return null; - - if((this._selectedPartIndex >= 0) && (this._parts.length > this._selectedPartIndex)) - { - const partItem = this._parts[this._selectedPartIndex]; - - if(partItem) partItem.isSelected = false; - } - - if(this._parts.length > partIndex) - { - const partItem = this._parts[partIndex]; - - if(partItem) - { - partItem.isSelected = true; - - this._selectedPartIndex = partIndex; - - return partItem; - } - } - - return null; - } - - public selectColorIndex(colorIndex: number, paletteId: number): AvatarEditorGridColorItem - { - const palette = this.getPalette(paletteId); - - if(!palette) return null; - - if(palette.length <= colorIndex) return null; - - this.deselectColorIndex(this._paletteIndexes[paletteId], paletteId); - - this._paletteIndexes[paletteId] = colorIndex; - - const colorItem = palette[colorIndex]; - - if(!colorItem) return null; - - colorItem.isSelected = true; - - this.updatePartColors(); - - return colorItem; - } - - public getCurrentColorIndex(k: number): number - { - return this._paletteIndexes[k]; - } - - private deselectColorIndex(colorIndex: number, paletteIndex: number): void - { - const palette = this.getPalette(paletteIndex); - - if(!palette) return; - - if(palette.length <= colorIndex) return; - - const colorItem = palette[colorIndex]; - - if(!colorItem) return; - - colorItem.isSelected = false; - } - - public getSelectedColorIds(): number[] - { - if(!this._paletteIndexes || !this._paletteIndexes.length) return null; - - if(!this._palettes || !this._palettes.length) return null; - - const palette = this._palettes[0]; - - if(!palette || (!palette.length)) return null; - - const colorItem = palette[0]; - - if(!colorItem || !colorItem.partColor) return null; - - const colorId = colorItem.partColor.id; - const colorIds: number[] = []; - - let i = 0; - - while(i < this._paletteIndexes.length) - { - const paletteSet = this._palettes[i]; - - if(!((!(paletteSet)) || (paletteSet.length <= i))) - { - if(paletteSet.length > this._paletteIndexes[i]) - { - const color = paletteSet[this._paletteIndexes[i]]; - - if(color && color.partColor) - { - colorIds.push(color.partColor.id); - } - else - { - colorIds.push(colorId); - } - } - else - { - colorIds.push(colorId); - } - } - - i++; - } - - const partItem = this.getCurrentPart(); - - if(!partItem) return null; - - return colorIds.slice(0, Math.max(partItem.maxColorIndex, 1)); - } - - private getSelectedColors(): IPartColor[] - { - const partColors: IPartColor[] = []; - - let i = 0; - - while(i < this._paletteIndexes.length) - { - const colorItem = this.getSelectedColor(i); - - if(colorItem) - { - partColors.push(colorItem.partColor); - } - else - { - partColors.push(null); - } - - i++; - } - - return partColors; - } - - public getSelectedColor(paletteId: number): AvatarEditorGridColorItem - { - const palette = this.getPalette(paletteId); - - if(!palette || (palette.length <= this._paletteIndexes[paletteId])) return null; - - return palette[this._paletteIndexes[paletteId]]; - } - - public getSelectedColorId(paletteId: number): number - { - const colorItem = this.getSelectedColor(paletteId); - - if(colorItem && (colorItem.partColor)) return colorItem.partColor.id; - - return 0; - } - - public getPalette(paletteId: number): AvatarEditorGridColorItem[] - { - if(!this._paletteIndexes || !this._palettes || (this._palettes.length <= paletteId)) - { - return null; - } - - return this._palettes[paletteId]; - } - - public getCurrentPart(): AvatarEditorGridPartItem - { - return this._parts[this._selectedPartIndex] as AvatarEditorGridPartItem; - } - - private updatePartColors(): void - { - const partColors = this.getSelectedColors(); - - for(const partItem of this._parts) - { - if(partItem) partItem.partColors = partColors; - } - } - - public hasClubSelectionsOverLevel(level: number): boolean - { - let hasInvalidSelections = false; - - const partColors = this.getSelectedColors(); - - if(partColors) - { - let i = 0; - - while(i < partColors.length) - { - const partColor = partColors[i]; - - if(partColor && (partColor.clubLevel > level)) hasInvalidSelections = true; - - i++; - } - } - - const partItem = this.getCurrentPart(); - - if(partItem && partItem.partSet) - { - const partSet = partItem.partSet; - - if(partSet && (partSet.clubLevel > level)) hasInvalidSelections = true; - } - - return hasInvalidSelections; - } - - public hasInvalidSelectedItems(ownedItems: number[]): boolean - { - const part = this.getCurrentPart(); - - if(!part) return false; - - const partSet = part.partSet; - - if(!partSet || !partSet.isSellable) return; - - return (ownedItems.indexOf(partSet.id) > -1); - } - - public stripClubItemsOverLevel(level: number): boolean - { - const partItem = this.getCurrentPart(); - - if(partItem && partItem.partSet) - { - const partSet = partItem.partSet; - - if(partSet.clubLevel > level) - { - const newPartItem = this.selectPartIndex(0); - - if(newPartItem && !newPartItem.partSet) this.selectPartIndex(1); - - return true; - } - } - - return false; - } - - public stripClubColorsOverLevel(level: number): boolean - { - const colorIds: number[] = []; - const partColors = this.getSelectedColors(); - const colorItems = this.getPalette(0); - - let didStrip = false; - - const colorId = CategoryData.defaultColorId(colorItems, level); - - if(colorId === -1) return false; - - let i = 0; - - while(i < partColors.length) - { - const partColor = partColors[i]; - - if(!partColor) - { - colorIds.push(colorId); - - didStrip = true; - } - else - { - if(partColor.clubLevel > level) - { - colorIds.push(colorId); - - didStrip = true; - } - else - { - colorIds.push(partColor.id); - } - } - - i++; - } - - if(didStrip) this.selectColorIds(colorIds); - - return didStrip; - } - - // public stripInvalidSellableItems(k:IHabboInventory): boolean - // { - // var _local_3:IFigurePartSet; - // var _local_4:AvatarEditorGridPartItem; - // var _local_2:AvatarEditorGridPartItem = this._Str_6315(); - // if (((_local_2) && (_local_2.partSet))) - // { - // _local_3 = _local_2.partSet; - // if (((_local_3.isSellable) && (!(k._Str_14439(_local_3.id))))) - // { - // _local_4 = this._Str_8066(0); - // if (((!(_local_4 == null)) && (_local_4.partSet == null))) - // { - // this._Str_8066(1); - // } - // return true; - // } - // } - // return false; - // } - - public get name(): string - { - return this._name; - } - - public get parts(): AvatarEditorGridPartItem[] - { - return this._parts; - } - - public get selectedPartIndex(): number - { - return this._selectedPartIndex; - } + if (didStrip) this.selectColorIds(colorIds); + + return didStrip; + } + + // public stripInvalidSellableItems(k:IHabboInventory): boolean + // { + // var _local_3:IFigurePartSet; + // var _local_4:AvatarEditorGridPartItem; + // var _local_2:AvatarEditorGridPartItem = this._Str_6315(); + // if (((_local_2) && (_local_2.partSet))) + // { + // _local_3 = _local_2.partSet; + // if (((_local_3.isSellable) && (!(k._Str_14439(_local_3.id))))) + // { + // _local_4 = this._Str_8066(0); + // if (((!(_local_4 == null)) && (_local_4.partSet == null))) + // { + // this._Str_8066(1); + // } + // return true; + // } + // } + // return false; + // } + + public get name(): string { + return this._name; + } + + public get parts(): AvatarEditorGridPartItem[] { + return this._parts; + } + + public get selectedPartIndex(): number { + return this._selectedPartIndex; + } } diff --git a/apps/frontend/src/api/avatar/FigureData.ts b/apps/frontend/src/api/avatar/FigureData.ts index 78014d1..78ad3f3 100644 --- a/apps/frontend/src/api/avatar/FigureData.ts +++ b/apps/frontend/src/api/avatar/FigureData.ts @@ -1,287 +1,268 @@ -import { AvatarEditorUtilities } from './AvatarEditorUtilities'; +import {AvatarEditorUtilities} from "./AvatarEditorUtilities"; -export class FigureData -{ - private static DEFAULT_DIRECTION: number = 4; +export class FigureData { + private static DEFAULT_DIRECTION: number = 4; - public static MALE: string = 'M'; - public static FEMALE: string = 'F'; - public static UNISEX: string = 'U'; - public static SCALE: string = 'h'; - public static STD: string = 'std'; - public static DEFAULT_FRAME: string = '0'; - public static FACE: string = 'hd'; - public static HAIR: string = 'hr'; - public static HAT: string = 'ha'; - public static HEAD_ACCESSORIES: string = 'he'; - public static EYE_ACCESSORIES: string = 'ea'; - public static FACE_ACCESSORIES: string = 'fa'; - public static JACKET: string = 'cc'; - public static SHIRT: string = 'ch'; - public static CHEST_ACCESSORIES: string = 'ca'; - public static CHEST_PRINTS: string = 'cp'; - public static TROUSERS: string = 'lg'; - public static SHOES: string = 'sh'; - public static TROUSER_ACCESSORIES: string = 'wa'; - public static SET_TYPES = [ FigureData.FACE, FigureData.HAIR, FigureData.HAT, FigureData.HEAD_ACCESSORIES, FigureData.EYE_ACCESSORIES, FigureData.FACE_ACCESSORIES, FigureData.JACKET, FigureData.SHIRT, FigureData.CHEST_ACCESSORIES, FigureData.CHEST_PRINTS, FigureData.TROUSERS, FigureData.SHOES, FigureData.TROUSERS ]; + public static MALE: string = "M"; + public static FEMALE: string = "F"; + public static UNISEX: string = "U"; + public static SCALE: string = "h"; + public static STD: string = "std"; + public static DEFAULT_FRAME: string = "0"; + public static FACE: string = "hd"; + public static HAIR: string = "hr"; + public static HAT: string = "ha"; + public static HEAD_ACCESSORIES: string = "he"; + public static EYE_ACCESSORIES: string = "ea"; + public static FACE_ACCESSORIES: string = "fa"; + public static JACKET: string = "cc"; + public static SHIRT: string = "ch"; + public static CHEST_ACCESSORIES: string = "ca"; + public static CHEST_PRINTS: string = "cp"; + public static TROUSERS: string = "lg"; + public static SHOES: string = "sh"; + public static TROUSER_ACCESSORIES: string = "wa"; + public static SET_TYPES = [ + FigureData.FACE, + FigureData.HAIR, + FigureData.HAT, + FigureData.HEAD_ACCESSORIES, + FigureData.EYE_ACCESSORIES, + FigureData.FACE_ACCESSORIES, + FigureData.JACKET, + FigureData.SHIRT, + FigureData.CHEST_ACCESSORIES, + FigureData.CHEST_PRINTS, + FigureData.TROUSERS, + FigureData.SHOES, + FigureData.TROUSERS, + ]; - private _data: Map; - private _colors: Map; - private _gender: string = 'M'; - private _direction: number = FigureData.DEFAULT_DIRECTION; - private _avatarEffectType: number = -1; - private _notifier: () => void = null; + private _data: Map; + private _colors: Map; + private _gender: string = "M"; + private _direction: number = FigureData.DEFAULT_DIRECTION; + private _avatarEffectType: number = -1; + private _notifier: () => void = null; - public loadAvatarData(figureString: string, gender: string): void - { - this._data = new Map(); - this._colors = new Map(); - this._gender = gender; + public loadAvatarData(figureString: string, gender: string): void { + this._data = new Map(); + this._colors = new Map(); + this._gender = gender; - this.parseFigureString(figureString); - this.updateView(); + this.parseFigureString(figureString); + this.updateView(); + } + + private parseFigureString(figure: string): void { + if (!figure) return; + + const sets = figure.split("."); + + if (!sets || !sets.length) return; + + for (const set of sets) { + const parts = set.split("-"); + + if (!parts.length) continue; + + const setType = parts[0]; + const setId = parseInt(parts[1]); + const colorIds: number[] = []; + + let offset = 2; + + while (offset < parts.length) { + colorIds.push(parseInt(parts[offset])); + + offset++; + } + + if (!colorIds.length) colorIds.push(0); + + this.savePartSetId(setType, setId, false); + this.savePartSetColourId(setType, colorIds, false); } + } - private parseFigureString(figure: string): void - { - if(!figure) return; + public getPartSetId(setType: string): number { + const existing = this._data.get(setType); - const sets = figure.split('.'); + if (existing !== undefined) return existing; - if(!sets || !sets.length) return; + return -1; + } - for(const set of sets) - { - const parts = set.split('-'); + public getColorIds(setType: string): number[] { + const existing = this._colors.get(setType); - if(!parts.length) continue; + if (existing !== undefined) return existing; - const setType = parts[0]; - const setId = parseInt(parts[1]); - const colorIds: number[] = []; + return [AvatarEditorUtilities.avatarSetFirstSelectableColor(setType)]; + } - let offset = 2; + public getFigureString(): string { + let figureString = ""; + const setParts: string[] = []; - while(offset < parts.length) - { - colorIds.push(parseInt(parts[offset])); + for (const [setType, setId] of this._data.entries()) { + const colorIds = this._colors.get(setType); - offset++; - } - - if(!colorIds.length) colorIds.push(0); - - this.savePartSetId(setType, setId, false); - this.savePartSetColourId(setType, colorIds, false); - } - } - - public getPartSetId(setType: string): number - { - const existing = this._data.get(setType); - - if(existing !== undefined) return existing; - - return -1; - } - - public getColorIds(setType: string): number[] - { - const existing = this._colors.get(setType); - - if(existing !== undefined) return existing; - - return [ AvatarEditorUtilities.avatarSetFirstSelectableColor(setType) ]; - } - - public getFigureString(): string - { - let figureString = ''; - const setParts: string[] = []; - - for(const [ setType, setId ] of this._data.entries()) - { - const colorIds = this._colors.get(setType); - - let setPart = ((setType + '-') + setId); - - if(colorIds && colorIds.length) - { - let i = 0; - - while(i < colorIds.length) - { - setPart = (setPart + ('-' + colorIds[i])); - - i++; - } - } - - setParts.push(setPart); - } + let setPart = setType + "-" + setId; + if (colorIds && colorIds.length) { let i = 0; - while(i < setParts.length) - { - figureString = (figureString + setParts[i]); + while (i < colorIds.length) { + setPart = setPart + ("-" + colorIds[i]); - if(i < (setParts.length - 1)) figureString = (figureString + '.'); - - i++; + i++; } + } - return figureString; + setParts.push(setPart); } - public savePartData(setType: string, partId: number, colorIds: number[], update: boolean = false): void - { - this.savePartSetId(setType, partId, update); - this.savePartSetColourId(setType, colorIds, update); + let i = 0; + + while (i < setParts.length) { + figureString = figureString + setParts[i]; + + if (i < setParts.length - 1) figureString = figureString + "."; + + i++; } - private savePartSetId(setType: string, partId: number, update: boolean = true): void - { - switch(setType) - { - case FigureData.FACE: - case FigureData.HAIR: - case FigureData.HAT: - case FigureData.HEAD_ACCESSORIES: - case FigureData.EYE_ACCESSORIES: - case FigureData.FACE_ACCESSORIES: - case FigureData.SHIRT: - case FigureData.JACKET: - case FigureData.CHEST_ACCESSORIES: - case FigureData.CHEST_PRINTS: - case FigureData.TROUSERS: - case FigureData.SHOES: - case FigureData.TROUSER_ACCESSORIES: - if(partId >= 0) - { - this._data.set(setType, partId); - } - else - { - this._data.delete(setType); - } - break; - } + return figureString; + } - if(update) this.updateView(); + public savePartData(setType: string, partId: number, colorIds: number[], update: boolean = false): void { + this.savePartSetId(setType, partId, update); + this.savePartSetColourId(setType, colorIds, update); + } + + private savePartSetId(setType: string, partId: number, update: boolean = true): void { + switch (setType) { + case FigureData.FACE: + case FigureData.HAIR: + case FigureData.HAT: + case FigureData.HEAD_ACCESSORIES: + case FigureData.EYE_ACCESSORIES: + case FigureData.FACE_ACCESSORIES: + case FigureData.SHIRT: + case FigureData.JACKET: + case FigureData.CHEST_ACCESSORIES: + case FigureData.CHEST_PRINTS: + case FigureData.TROUSERS: + case FigureData.SHOES: + case FigureData.TROUSER_ACCESSORIES: + if (partId >= 0) { + this._data.set(setType, partId); + } else { + this._data.delete(setType); + } + break; } - public savePartSetColourId(setType: string, colorIds: number[], update: boolean = true): void - { - switch(setType) - { - case FigureData.FACE: - case FigureData.HAIR: - case FigureData.HAT: - case FigureData.HEAD_ACCESSORIES: - case FigureData.EYE_ACCESSORIES: - case FigureData.FACE_ACCESSORIES: - case FigureData.SHIRT: - case FigureData.JACKET: - case FigureData.CHEST_ACCESSORIES: - case FigureData.CHEST_PRINTS: - case FigureData.TROUSERS: - case FigureData.SHOES: - case FigureData.TROUSER_ACCESSORIES: - this._colors.set(setType, colorIds); - break; - } + if (update) this.updateView(); + } - if(update) this.updateView(); + public savePartSetColourId(setType: string, colorIds: number[], update: boolean = true): void { + switch (setType) { + case FigureData.FACE: + case FigureData.HAIR: + case FigureData.HAT: + case FigureData.HEAD_ACCESSORIES: + case FigureData.EYE_ACCESSORIES: + case FigureData.FACE_ACCESSORIES: + case FigureData.SHIRT: + case FigureData.JACKET: + case FigureData.CHEST_ACCESSORIES: + case FigureData.CHEST_PRINTS: + case FigureData.TROUSERS: + case FigureData.SHOES: + case FigureData.TROUSER_ACCESSORIES: + this._colors.set(setType, colorIds); + break; } - public getFigureStringWithFace(k: number, override = true): string - { - let figureString = ''; + if (update) this.updateView(); + } - const setTypes: string[] = [ FigureData.FACE ]; - const figureSets: string[] = []; + public getFigureStringWithFace(k: number, override = true): string { + let figureString = ""; - for(const setType of setTypes) - { - const colors = this._colors.get(setType); + const setTypes: string[] = [FigureData.FACE]; + const figureSets: string[] = []; - if(!colors) continue; + for (const setType of setTypes) { + const colors = this._colors.get(setType); - let setId = this._data.get(setType); + if (!colors) continue; - if((setType === FigureData.FACE) && override) setId = k; + let setId = this._data.get(setType); - let figureSet = ((setType + '-') + setId); + if (setType === FigureData.FACE && override) setId = k; - if(setId >= 0) - { - let i = 0; - - while(i < colors.length) - { - figureSet = (figureSet + ('-' + colors[i])); - - i++; - } - } - - figureSets.push(figureSet); - } + let figureSet = setType + "-" + setId; + if (setId >= 0) { let i = 0; - while(i < figureSets.length) - { - figureString = (figureString + figureSets[i]); + while (i < colors.length) { + figureSet = figureSet + ("-" + colors[i]); - if(i < (figureSets.length - 1)) figureString = (figureString + '.'); - - i++; + i++; } + } - return figureString; + figureSets.push(figureSet); } - public updateView(): void - { - if(this.notify) this.notify(); + let i = 0; + + while (i < figureSets.length) { + figureString = figureString + figureSets[i]; + + if (i < figureSets.length - 1) figureString = figureString + "."; + + i++; } - public get gender(): string - { - return this._gender; - } + return figureString; + } - public get direction(): number - { - return this._direction; - } + public updateView(): void { + if (this.notify) this.notify(); + } - public set direction(direction: number) - { - this._direction = direction; + public get gender(): string { + return this._gender; + } - this.updateView(); - } + public get direction(): number { + return this._direction; + } - public set avatarEffectType(k: number) - { - this._avatarEffectType = k; - } + public set direction(direction: number) { + this._direction = direction; - public get avatarEffectType(): number - { - return this._avatarEffectType; - } + this.updateView(); + } - public get notify(): () => void - { - return this._notifier; - } + public set avatarEffectType(k: number) { + this._avatarEffectType = k; + } - public set notify(notifier: () => void) - { - this._notifier = notifier; - } + public get avatarEffectType(): number { + return this._avatarEffectType; + } + + public get notify(): () => void { + return this._notifier; + } + + public set notify(notifier: () => void) { + this._notifier = notifier; + } } diff --git a/apps/frontend/src/api/avatar/FigureGenerator.ts b/apps/frontend/src/api/avatar/FigureGenerator.ts index 577f3bf..a99b910 100644 --- a/apps/frontend/src/api/avatar/FigureGenerator.ts +++ b/apps/frontend/src/api/avatar/FigureGenerator.ts @@ -1,90 +1,93 @@ -import { AvatarFigureContainer, IFigurePartSet, IPalette, IPartColor, SetType } from '@nitro/renderer'; -import { GetAvatarRenderManager } from '../nitro'; -import { Randomizer } from '../utils'; -import { FigureData } from './FigureData'; +import {AvatarFigureContainer, IFigurePartSet, IPalette, IPartColor, SetType} from "@nitro/renderer"; -function getTotalColors(partSet: IFigurePartSet): number -{ - const parts = partSet.parts; +import {GetAvatarRenderManager} from "../nitro"; +import {Randomizer} from "../utils"; +import {FigureData} from "./FigureData"; - let totalColors = 0; +function getTotalColors(partSet: IFigurePartSet): number { + const parts = partSet.parts; - for(const part of parts) totalColors = Math.max(totalColors, part.colorLayerIndex); + let totalColors = 0; - return totalColors; + for (const part of parts) totalColors = Math.max(totalColors, part.colorLayerIndex); + + return totalColors; } -function getRandomSetTypes(requiredSets: string[], options: string[]): string[] -{ - options = options.filter(option => (requiredSets.indexOf(option) === -1)); +function getRandomSetTypes(requiredSets: string[], options: string[]): string[] { + options = options.filter(option => requiredSets.indexOf(option) === -1); - return [ ...requiredSets, ...Randomizer.getRandomElements(options, (Randomizer.getRandomNumber(options.length) + 1)) ]; + return [...requiredSets, ...Randomizer.getRandomElements(options, Randomizer.getRandomNumber(options.length) + 1)]; } -function getRandomPartSet(setType: SetType, gender: string, clubLevel: number = 0, figureSetIds: number[] = []): IFigurePartSet -{ - if(!setType) return null; +function getRandomPartSet(setType: SetType, gender: string, clubLevel: number = 0, figureSetIds: number[] = []): IFigurePartSet { + if (!setType) return null; - const options = setType.partSets.getValues().filter(option => - { - if(!option.isSelectable || ((option.gender !== 'U') && (option.gender !== gender)) || (option.clubLevel > clubLevel) || (option.isSellable && (figureSetIds.indexOf(option.id) === -1))) return null; + const options = setType.partSets.getValues().filter(option => { + if ( + !option.isSelectable || + (option.gender !== "U" && option.gender !== gender) || + option.clubLevel > clubLevel || + (option.isSellable && figureSetIds.indexOf(option.id) === -1) + ) + return null; - return option; - }); + return option; + }); - if(!options || !options.length) return null; + if (!options || !options.length) return null; - return Randomizer.getRandomElement(options); + return Randomizer.getRandomElement(options); } -function getRandomColors(palette: IPalette, partSet: IFigurePartSet, clubLevel: number = 0): IPartColor[] -{ - if(!palette) return []; +function getRandomColors(palette: IPalette, partSet: IFigurePartSet, clubLevel: number = 0): IPartColor[] { + if (!palette) return []; - const options = palette.colors.getValues().filter(option => - { - if(!option.isSelectable || (option.clubLevel > clubLevel)) return null; + const options = palette.colors.getValues().filter(option => { + if (!option.isSelectable || option.clubLevel > clubLevel) return null; - return option; - }); + return option; + }); - if(!options || !options.length) return null; + if (!options || !options.length) return null; - return Randomizer.getRandomElements(options, getTotalColors(partSet)); + return Randomizer.getRandomElements(options, getTotalColors(partSet)); } -export function generateRandomFigure(figureData: FigureData, gender: string, clubLevel: number = 0, figureSetIds: number[] = [], ignoredSets: string[] = []): string -{ - const structure = GetAvatarRenderManager().structure; - const figureContainer = new AvatarFigureContainer(''); - const requiredSets = getRandomSetTypes(structure.getMandatorySetTypeIds(gender, clubLevel), FigureData.SET_TYPES); +export function generateRandomFigure( + figureData: FigureData, + gender: string, + clubLevel: number = 0, + figureSetIds: number[] = [], + ignoredSets: string[] = [] +): string { + const structure = GetAvatarRenderManager().structure; + const figureContainer = new AvatarFigureContainer(""); + const requiredSets = getRandomSetTypes(structure.getMandatorySetTypeIds(gender, clubLevel), FigureData.SET_TYPES); - for(const setType of ignoredSets) - { - const partSetId = figureData.getPartSetId(setType); - const colors = figureData.getColorIds(setType); + for (const setType of ignoredSets) { + const partSetId = figureData.getPartSetId(setType); + const colors = figureData.getColorIds(setType); - figureContainer.updatePart(setType, partSetId, colors); + figureContainer.updatePart(setType, partSetId, colors); + } + + for (const type of requiredSets) { + if (figureContainer.hasPartType(type)) continue; + + const setType = structure.figureData.getSetType(type) as SetType; + const selectedSet = getRandomPartSet(setType, gender, clubLevel, figureSetIds); + + if (!selectedSet) continue; + + let selectedColors: number[] = []; + + if (selectedSet.isColorable) { + selectedColors = getRandomColors(structure.figureData.getPalette(setType.paletteID), selectedSet, clubLevel).map(color => color.id); } - for(const type of requiredSets) - { - if(figureContainer.hasPartType(type)) continue; - - const setType = (structure.figureData.getSetType(type) as SetType); - const selectedSet = getRandomPartSet(setType, gender, clubLevel, figureSetIds); + figureContainer.updatePart(setType.type, selectedSet.id, selectedColors); + } - if(!selectedSet) continue; - - let selectedColors: number[] = []; - - if(selectedSet.isColorable) - { - selectedColors = getRandomColors(structure.figureData.getPalette(setType.paletteID), selectedSet, clubLevel).map(color => color.id); - } - - figureContainer.updatePart(setType.type, selectedSet.id, selectedColors); - } - - return figureContainer.getFigureString(); + return figureContainer.getFigureString(); } diff --git a/apps/frontend/src/api/avatar/HeadModel.ts b/apps/frontend/src/api/avatar/HeadModel.ts index 5aaf353..6bfe511 100644 --- a/apps/frontend/src/api/avatar/HeadModel.ts +++ b/apps/frontend/src/api/avatar/HeadModel.ts @@ -1,24 +1,22 @@ -import { AvatarEditorFigureCategory } from '@nitro/renderer'; -import { CategoryBaseModel } from './CategoryBaseModel'; -import { FigureData } from './FigureData'; +import {AvatarEditorFigureCategory} from "@nitro/renderer"; -export class HeadModel extends CategoryBaseModel -{ - public init(): void - { - super.init(); +import {CategoryBaseModel} from "./CategoryBaseModel"; +import {FigureData} from "./FigureData"; - this.addCategory(FigureData.HAIR); - this.addCategory(FigureData.HAT); - this.addCategory(FigureData.HEAD_ACCESSORIES); - this.addCategory(FigureData.EYE_ACCESSORIES); - this.addCategory(FigureData.FACE_ACCESSORIES); +export class HeadModel extends CategoryBaseModel { + public init(): void { + super.init(); - this._isInitalized = true; - } + this.addCategory(FigureData.HAIR); + this.addCategory(FigureData.HAT); + this.addCategory(FigureData.HEAD_ACCESSORIES); + this.addCategory(FigureData.EYE_ACCESSORIES); + this.addCategory(FigureData.FACE_ACCESSORIES); - public get name(): string - { - return AvatarEditorFigureCategory.HEAD; - } + this._isInitalized = true; + } + + public get name(): string { + return AvatarEditorFigureCategory.HEAD; + } } diff --git a/apps/frontend/src/api/avatar/IAvatarEditorCategoryModel.ts b/apps/frontend/src/api/avatar/IAvatarEditorCategoryModel.ts index dc9affa..7f9c008 100644 --- a/apps/frontend/src/api/avatar/IAvatarEditorCategoryModel.ts +++ b/apps/frontend/src/api/avatar/IAvatarEditorCategoryModel.ts @@ -1,19 +1,18 @@ -import { CategoryData } from './CategoryData'; +import {CategoryData} from "./CategoryData"; -export interface IAvatarEditorCategoryModel -{ - init(): void; - dispose(): void; - reset(): void; - getCategoryData(category: string): CategoryData; - selectPart(category: string, partIndex: number): void; - selectColor(category: string, colorIndex: number, paletteId: number): void; - hasClubSelectionsOverLevel(level: number): boolean; - hasInvalidSelectedItems(ownedItems: number[]): boolean; - stripClubItemsOverLevel(level: number): boolean; - stripInvalidSellableItems(): boolean; - categories: Map; - canSetGender: boolean; - maxPaletteCount: number; - name: string; +export interface IAvatarEditorCategoryModel { + init(): void; + dispose(): void; + reset(): void; + getCategoryData(category: string): CategoryData; + selectPart(category: string, partIndex: number): void; + selectColor(category: string, colorIndex: number, paletteId: number): void; + hasClubSelectionsOverLevel(level: number): boolean; + hasInvalidSelectedItems(ownedItems: number[]): boolean; + stripClubItemsOverLevel(level: number): boolean; + stripInvalidSellableItems(): boolean; + categories: Map; + canSetGender: boolean; + maxPaletteCount: number; + name: string; } diff --git a/apps/frontend/src/api/avatar/LegModel.ts b/apps/frontend/src/api/avatar/LegModel.ts index 17886aa..677121d 100644 --- a/apps/frontend/src/api/avatar/LegModel.ts +++ b/apps/frontend/src/api/avatar/LegModel.ts @@ -1,22 +1,20 @@ -import { AvatarEditorFigureCategory } from '@nitro/renderer'; -import { CategoryBaseModel } from './CategoryBaseModel'; -import { FigureData } from './FigureData'; +import {AvatarEditorFigureCategory} from "@nitro/renderer"; -export class LegModel extends CategoryBaseModel -{ - public init(): void - { - super.init(); +import {CategoryBaseModel} from "./CategoryBaseModel"; +import {FigureData} from "./FigureData"; - this.addCategory(FigureData.TROUSERS); - this.addCategory(FigureData.SHOES); - this.addCategory(FigureData.TROUSER_ACCESSORIES); +export class LegModel extends CategoryBaseModel { + public init(): void { + super.init(); - this._isInitalized = true; - } + this.addCategory(FigureData.TROUSERS); + this.addCategory(FigureData.SHOES); + this.addCategory(FigureData.TROUSER_ACCESSORIES); - public get name(): string - { - return AvatarEditorFigureCategory.LEGS; - } + this._isInitalized = true; + } + + public get name(): string { + return AvatarEditorFigureCategory.LEGS; + } } diff --git a/apps/frontend/src/api/avatar/TorsoModel.ts b/apps/frontend/src/api/avatar/TorsoModel.ts index 5a9febe..35cbc7c 100644 --- a/apps/frontend/src/api/avatar/TorsoModel.ts +++ b/apps/frontend/src/api/avatar/TorsoModel.ts @@ -1,23 +1,21 @@ -import { AvatarEditorFigureCategory } from '@nitro/renderer'; -import { CategoryBaseModel } from './CategoryBaseModel'; -import { FigureData } from './FigureData'; +import {AvatarEditorFigureCategory} from "@nitro/renderer"; -export class TorsoModel extends CategoryBaseModel -{ - public init(): void - { - super.init(); +import {CategoryBaseModel} from "./CategoryBaseModel"; +import {FigureData} from "./FigureData"; - this.addCategory(FigureData.SHIRT); - this.addCategory(FigureData.CHEST_PRINTS); - this.addCategory(FigureData.JACKET); - this.addCategory(FigureData.CHEST_ACCESSORIES); +export class TorsoModel extends CategoryBaseModel { + public init(): void { + super.init(); - this._isInitalized = true; - } + this.addCategory(FigureData.SHIRT); + this.addCategory(FigureData.CHEST_PRINTS); + this.addCategory(FigureData.JACKET); + this.addCategory(FigureData.CHEST_ACCESSORIES); - public get name(): string - { - return AvatarEditorFigureCategory.TORSO; - } + this._isInitalized = true; + } + + public get name(): string { + return AvatarEditorFigureCategory.TORSO; + } } diff --git a/apps/frontend/src/api/avatar/index.ts b/apps/frontend/src/api/avatar/index.ts index 37b3072..3aadf75 100644 --- a/apps/frontend/src/api/avatar/index.ts +++ b/apps/frontend/src/api/avatar/index.ts @@ -1,13 +1,13 @@ -export * from './AvatarEditorAction'; -export * from './AvatarEditorGridColorItem'; -export * from './AvatarEditorGridPartItem'; -export * from './AvatarEditorUtilities'; -export * from './BodyModel'; -export * from './CategoryBaseModel'; -export * from './CategoryData'; -export * from './FigureData'; -export * from './FigureGenerator'; -export * from './HeadModel'; -export * from './IAvatarEditorCategoryModel'; -export * from './LegModel'; -export * from './TorsoModel'; +export * from "./AvatarEditorAction"; +export * from "./AvatarEditorGridColorItem"; +export * from "./AvatarEditorGridPartItem"; +export * from "./AvatarEditorUtilities"; +export * from "./BodyModel"; +export * from "./CategoryBaseModel"; +export * from "./CategoryData"; +export * from "./FigureData"; +export * from "./FigureGenerator"; +export * from "./HeadModel"; +export * from "./IAvatarEditorCategoryModel"; +export * from "./LegModel"; +export * from "./TorsoModel"; diff --git a/apps/frontend/src/api/camera/CameraEditorTabs.ts b/apps/frontend/src/api/camera/CameraEditorTabs.ts index 6e894e7..27e7e3f 100644 --- a/apps/frontend/src/api/camera/CameraEditorTabs.ts +++ b/apps/frontend/src/api/camera/CameraEditorTabs.ts @@ -1,5 +1,4 @@ -export class CameraEditorTabs -{ - public static readonly COLORMATRIX: string = 'colormatrix'; - public static readonly COMPOSITE: string = 'composite'; +export class CameraEditorTabs { + public static readonly COLORMATRIX: string = "colormatrix"; + public static readonly COMPOSITE: string = "composite"; } diff --git a/apps/frontend/src/api/camera/CameraPicture.ts b/apps/frontend/src/api/camera/CameraPicture.ts index 9336fe1..04daf47 100644 --- a/apps/frontend/src/api/camera/CameraPicture.ts +++ b/apps/frontend/src/api/camera/CameraPicture.ts @@ -1,9 +1,5 @@ -import { NitroTexture } from '@nitro/renderer'; +import {NitroTexture} from "@nitro/renderer"; -export class CameraPicture -{ - constructor( - public texture: NitroTexture, - public imageUrl: string) - {} +export class CameraPicture { + constructor(public texture: NitroTexture, public imageUrl: string) {} } diff --git a/apps/frontend/src/api/camera/CameraPictureThumbnail.ts b/apps/frontend/src/api/camera/CameraPictureThumbnail.ts index cd12660..ffb2c56 100644 --- a/apps/frontend/src/api/camera/CameraPictureThumbnail.ts +++ b/apps/frontend/src/api/camera/CameraPictureThumbnail.ts @@ -1,7 +1,3 @@ -export class CameraPictureThumbnail -{ - constructor( - public effectName: string, - public thumbnailUrl: string) - {} +export class CameraPictureThumbnail { + constructor(public effectName: string, public thumbnailUrl: string) {} } diff --git a/apps/frontend/src/api/camera/index.ts b/apps/frontend/src/api/camera/index.ts index 93c6ccb..564afae 100644 --- a/apps/frontend/src/api/camera/index.ts +++ b/apps/frontend/src/api/camera/index.ts @@ -1,3 +1,3 @@ -export * from './CameraEditorTabs'; -export * from './CameraPicture'; -export * from './CameraPictureThumbnail'; +export * from "./CameraEditorTabs"; +export * from "./CameraPicture"; +export * from "./CameraPictureThumbnail"; diff --git a/apps/frontend/src/api/campaign/CalendarItem.ts b/apps/frontend/src/api/campaign/CalendarItem.ts index d3634b3..7e1ce7f 100644 --- a/apps/frontend/src/api/campaign/CalendarItem.ts +++ b/apps/frontend/src/api/campaign/CalendarItem.ts @@ -1,30 +1,25 @@ -import { ICalendarItem } from './ICalendarItem'; +import {ICalendarItem} from "./ICalendarItem"; -export class CalendarItem implements ICalendarItem -{ - private _productName: string; - private _customImage: string; - private _furnitureClassName: string; +export class CalendarItem implements ICalendarItem { + private _productName: string; + private _customImage: string; + private _furnitureClassName: string; - constructor(productName: string, customImage: string, furnitureClassName: string) - { - this._productName = productName; - this._customImage = customImage; - this._furnitureClassName = furnitureClassName; - } + constructor(productName: string, customImage: string, furnitureClassName: string) { + this._productName = productName; + this._customImage = customImage; + this._furnitureClassName = furnitureClassName; + } - public get productName(): string - { - return this._productName; - } + public get productName(): string { + return this._productName; + } - public get customImage(): string - { - return this._customImage; - } + public get customImage(): string { + return this._customImage; + } - public get furnitureClassName(): string - { - return this._furnitureClassName; - } + public get furnitureClassName(): string { + return this._furnitureClassName; + } } diff --git a/apps/frontend/src/api/campaign/CalendarItemState.ts b/apps/frontend/src/api/campaign/CalendarItemState.ts index 1b91ca3..15d5246 100644 --- a/apps/frontend/src/api/campaign/CalendarItemState.ts +++ b/apps/frontend/src/api/campaign/CalendarItemState.ts @@ -1,7 +1,6 @@ -export class CalendarItemState -{ - public static readonly STATE_UNLOCKED = 1; - public static readonly STATE_LOCKED_AVAILABLE = 2; - public static readonly STATE_LOCKED_EXPIRED = 3; - public static readonly STATE_LOCKED_FUTURE = 4; +export class CalendarItemState { + public static readonly STATE_UNLOCKED = 1; + public static readonly STATE_LOCKED_AVAILABLE = 2; + public static readonly STATE_LOCKED_EXPIRED = 3; + public static readonly STATE_LOCKED_FUTURE = 4; } diff --git a/apps/frontend/src/api/campaign/ICalendarItem.ts b/apps/frontend/src/api/campaign/ICalendarItem.ts index 87dfbd6..83ef4ae 100644 --- a/apps/frontend/src/api/campaign/ICalendarItem.ts +++ b/apps/frontend/src/api/campaign/ICalendarItem.ts @@ -1,6 +1,5 @@ -export interface ICalendarItem -{ - readonly productName: string; - readonly customImage: string; - readonly furnitureClassName: string; +export interface ICalendarItem { + readonly productName: string; + readonly customImage: string; + readonly furnitureClassName: string; } diff --git a/apps/frontend/src/api/campaign/index.ts b/apps/frontend/src/api/campaign/index.ts index a86e40c..f440754 100644 --- a/apps/frontend/src/api/campaign/index.ts +++ b/apps/frontend/src/api/campaign/index.ts @@ -1,3 +1,3 @@ -export * from './CalendarItem'; -export * from './CalendarItemState'; -export * from './ICalendarItem'; +export * from "./CalendarItem"; +export * from "./CalendarItemState"; +export * from "./ICalendarItem"; diff --git a/apps/frontend/src/api/catalog/BuilderFurniPlaceableStatus.ts b/apps/frontend/src/api/catalog/BuilderFurniPlaceableStatus.ts index 40eb6f6..67ba653 100644 --- a/apps/frontend/src/api/catalog/BuilderFurniPlaceableStatus.ts +++ b/apps/frontend/src/api/catalog/BuilderFurniPlaceableStatus.ts @@ -1,10 +1,9 @@ -export class BuilderFurniPlaceableStatus -{ - public static OKAY: number = 0; - public static MISSING_OFFER: number = 1; - public static FURNI_LIMIT_REACHED: number = 2; - public static NOT_IN_ROOM: number = 3; - public static NOT_ROOM_OWNER: number = 4; - public static GUILD_ROOM: number = 5; - public static VISITORS_IN_ROOM: number = 6; +export class BuilderFurniPlaceableStatus { + public static OKAY: number = 0; + public static MISSING_OFFER: number = 1; + public static FURNI_LIMIT_REACHED: number = 2; + public static NOT_IN_ROOM: number = 3; + public static NOT_ROOM_OWNER: number = 4; + public static GUILD_ROOM: number = 5; + public static VISITORS_IN_ROOM: number = 6; } diff --git a/apps/frontend/src/api/catalog/CatalogNode.ts b/apps/frontend/src/api/catalog/CatalogNode.ts index c160ade..7fb8605 100644 --- a/apps/frontend/src/api/catalog/CatalogNode.ts +++ b/apps/frontend/src/api/catalog/CatalogNode.ts @@ -1,124 +1,105 @@ -import { NodeData } from '@nitro/renderer'; -import { ICatalogNode } from './ICatalogNode'; +import {NodeData} from "@nitro/renderer"; -export class CatalogNode implements ICatalogNode -{ - private _depth: number = 0; - private _localization: string = ''; - private _pageId: number = -1; - private _pageName: string = ''; - private _iconId: number = 0; - private _children: ICatalogNode[]; - private _offerIds: number[]; - private _parent: ICatalogNode; - private _isVisible: boolean; - private _isActive: boolean; - private _isOpen: boolean; +import {ICatalogNode} from "./ICatalogNode"; - constructor(node: NodeData, depth: number, parent: ICatalogNode) - { - this._depth = depth; - this._parent = parent; - this._localization = node.localization; - this._pageId = node.pageId; - this._pageName = node.pageName; - this._iconId = node.icon; - this._children = []; - this._offerIds = node.offerIds; - this._isVisible = node.visible; - this._isActive = false; - this._isOpen = false; - } +export class CatalogNode implements ICatalogNode { + private _depth: number = 0; + private _localization: string = ""; + private _pageId: number = -1; + private _pageName: string = ""; + private _iconId: number = 0; + private _children: ICatalogNode[]; + private _offerIds: number[]; + private _parent: ICatalogNode; + private _isVisible: boolean; + private _isActive: boolean; + private _isOpen: boolean; - public activate(): void - { - this._isActive = true; - } + constructor(node: NodeData, depth: number, parent: ICatalogNode) { + this._depth = depth; + this._parent = parent; + this._localization = node.localization; + this._pageId = node.pageId; + this._pageName = node.pageName; + this._iconId = node.icon; + this._children = []; + this._offerIds = node.offerIds; + this._isVisible = node.visible; + this._isActive = false; + this._isOpen = false; + } - public deactivate(): void - { - this._isActive = false; - } + public activate(): void { + this._isActive = true; + } - public open(): void - { - this._isOpen = true; - } + public deactivate(): void { + this._isActive = false; + } - public close(): void - { - this._isOpen = false; - } + public open(): void { + this._isOpen = true; + } - public addChild(child: ICatalogNode):void - { - if(!child) return; + public close(): void { + this._isOpen = false; + } - this._children.push(child); - } + public addChild(child: ICatalogNode): void { + if (!child) return; - public get depth(): number - { - return this._depth; - } + this._children.push(child); + } - public get isBranch(): boolean - { - return (this._children.length > 0); - } + public get depth(): number { + return this._depth; + } - public get isLeaf(): boolean - { - return (this._children.length === 0); - } + public get isBranch(): boolean { + return this._children.length > 0; + } - public get localization(): string - { - return this._localization; - } + public get isLeaf(): boolean { + return this._children.length === 0; + } - public get pageId(): number - { - return this._pageId; - } + public get localization(): string { + return this._localization; + } - public get pageName(): string - { - return this._pageName; - } + public get pageId(): number { + return this._pageId; + } - public get iconId(): number - { - return this._iconId; - } + public get pageName(): string { + return this._pageName; + } - public get children(): ICatalogNode[] - { - return this._children; - } + public get iconId(): number { + return this._iconId; + } - public get offerIds(): number[] - { - return this._offerIds; - } + public get children(): ICatalogNode[] { + return this._children; + } - public get parent(): ICatalogNode - { - return this._parent; - } + public get offerIds(): number[] { + return this._offerIds; + } - public get isVisible(): boolean - { - return this._isVisible; - } + public get parent(): ICatalogNode { + return this._parent; + } - public get isActive(): boolean - { - return this._isActive; - } + public get isVisible(): boolean { + return this._isVisible; + } - public get isOpen(): boolean - { - return this._isOpen; - } + public get isActive(): boolean { + return this._isActive; + } + + public get isOpen(): boolean { + return this._isOpen; + } } diff --git a/apps/frontend/src/api/catalog/CatalogPage.ts b/apps/frontend/src/api/catalog/CatalogPage.ts index 1e80609..865a2a3 100644 --- a/apps/frontend/src/api/catalog/CatalogPage.ts +++ b/apps/frontend/src/api/catalog/CatalogPage.ts @@ -1,59 +1,58 @@ -import { ICatalogPage } from './ICatalogPage'; -import { IPageLocalization } from './IPageLocalization'; -import { IPurchasableOffer } from './IPurchasableOffer'; +import {ICatalogPage} from "./ICatalogPage"; +import {IPageLocalization} from "./IPageLocalization"; +import {IPurchasableOffer} from "./IPurchasableOffer"; -export class CatalogPage implements ICatalogPage -{ - public static MODE_NORMAL: number = 0; +export class CatalogPage implements ICatalogPage { + public static MODE_NORMAL: number = 0; - private _pageId: number; - private _layoutCode: string; - private _localization: IPageLocalization; - private _offers: IPurchasableOffer[]; - private _acceptSeasonCurrencyAsCredits: boolean; - private _mode: number; + private _pageId: number; + private _layoutCode: string; + private _localization: IPageLocalization; + private _offers: IPurchasableOffer[]; + private _acceptSeasonCurrencyAsCredits: boolean; + private _mode: number; - constructor(pageId: number, layoutCode: string, localization: IPageLocalization, offers: IPurchasableOffer[], acceptSeasonCurrencyAsCredits: boolean, mode: number = -1) - { - this._pageId = pageId; - this._layoutCode = layoutCode; - this._localization = localization; - this._offers = offers; - this._acceptSeasonCurrencyAsCredits = acceptSeasonCurrencyAsCredits; + constructor( + pageId: number, + layoutCode: string, + localization: IPageLocalization, + offers: IPurchasableOffer[], + acceptSeasonCurrencyAsCredits: boolean, + mode: number = -1 + ) { + this._pageId = pageId; + this._layoutCode = layoutCode; + this._localization = localization; + this._offers = offers; + this._acceptSeasonCurrencyAsCredits = acceptSeasonCurrencyAsCredits; - for(const offer of offers) (offer.page = this); + for (const offer of offers) offer.page = this; - if(mode === -1) this._mode = CatalogPage.MODE_NORMAL; - else this._mode = mode; - } + if (mode === -1) this._mode = CatalogPage.MODE_NORMAL; + else this._mode = mode; + } - public get pageId(): number - { - return this._pageId; - } + public get pageId(): number { + return this._pageId; + } - public get layoutCode(): string - { - return this._layoutCode; - } + public get layoutCode(): string { + return this._layoutCode; + } - public get localization(): IPageLocalization - { - return this._localization; - } + public get localization(): IPageLocalization { + return this._localization; + } - public get offers(): IPurchasableOffer[] - { - return this._offers; - } + public get offers(): IPurchasableOffer[] { + return this._offers; + } - public get acceptSeasonCurrencyAsCredits(): boolean - { - return this._acceptSeasonCurrencyAsCredits; - } + public get acceptSeasonCurrencyAsCredits(): boolean { + return this._acceptSeasonCurrencyAsCredits; + } - public get mode(): number - { - return this._mode; - } + public get mode(): number { + return this._mode; + } } diff --git a/apps/frontend/src/api/catalog/CatalogPageName.ts b/apps/frontend/src/api/catalog/CatalogPageName.ts index 8e4c7b6..6a3686a 100644 --- a/apps/frontend/src/api/catalog/CatalogPageName.ts +++ b/apps/frontend/src/api/catalog/CatalogPageName.ts @@ -1,26 +1,25 @@ -export class CatalogPageName -{ - public static DUCKET_INFO: string = 'ducket_info'; - public static CREDITS: string = 'credits'; - public static AVATAR_EFFECTS: string = 'avatar_effects'; - public static HC_MEMBERSHIP: string = 'hc_membership'; - public static CLUB_GIFTS: string = 'club_gifts'; - public static LIMITED_SOLD: string = 'limited_sold'; - public static PET_ACCESSORIES: string = 'pet_accessories'; - public static TRAX_SONGS: string = 'trax_songs'; - public static NEW_ADDITIONS: string = 'new_additions'; - public static QUEST_SHELL: string = 'quest_shell'; - public static QUEST_SNOWFLAKES: string = 'quest_snowflakes'; - public static VAL_QUESTS: string = 'val_quests'; - public static GUILD_CUSTOM_FURNI: string = 'guild_custom_furni'; - public static GIFT_SHOP: string = 'gift_shop'; - public static HORSE_STYLES: string = 'horse_styles'; - public static HORSE_SHOE: string = 'horse_shoe'; - public static SET_EASTER: string = 'set_easter'; - public static ECOTRON_TRANSFORM: string = 'ecotron_transform'; - public static LOYALTY_INFO: string = 'loyalty_info'; - public static ROOM_BUNDLES: string = 'room_bundles'; - public static ROOM_BUNDLES_MOBILE: string = 'room_bundles_mobile'; - public static HABBO_CLUB_DESKTOP: string = 'habbo_club_desktop'; - public static MOBILE_SUBSCRIPTIONS: string = 'mobile_subscriptions'; +export class CatalogPageName { + public static DUCKET_INFO: string = "ducket_info"; + public static CREDITS: string = "credits"; + public static AVATAR_EFFECTS: string = "avatar_effects"; + public static HC_MEMBERSHIP: string = "hc_membership"; + public static CLUB_GIFTS: string = "club_gifts"; + public static LIMITED_SOLD: string = "limited_sold"; + public static PET_ACCESSORIES: string = "pet_accessories"; + public static TRAX_SONGS: string = "trax_songs"; + public static NEW_ADDITIONS: string = "new_additions"; + public static QUEST_SHELL: string = "quest_shell"; + public static QUEST_SNOWFLAKES: string = "quest_snowflakes"; + public static VAL_QUESTS: string = "val_quests"; + public static GUILD_CUSTOM_FURNI: string = "guild_custom_furni"; + public static GIFT_SHOP: string = "gift_shop"; + public static HORSE_STYLES: string = "horse_styles"; + public static HORSE_SHOE: string = "horse_shoe"; + public static SET_EASTER: string = "set_easter"; + public static ECOTRON_TRANSFORM: string = "ecotron_transform"; + public static LOYALTY_INFO: string = "loyalty_info"; + public static ROOM_BUNDLES: string = "room_bundles"; + public static ROOM_BUNDLES_MOBILE: string = "room_bundles_mobile"; + public static HABBO_CLUB_DESKTOP: string = "habbo_club_desktop"; + public static MOBILE_SUBSCRIPTIONS: string = "mobile_subscriptions"; } diff --git a/apps/frontend/src/api/catalog/CatalogPetPalette.ts b/apps/frontend/src/api/catalog/CatalogPetPalette.ts index 86bb3bf..b47124d 100644 --- a/apps/frontend/src/api/catalog/CatalogPetPalette.ts +++ b/apps/frontend/src/api/catalog/CatalogPetPalette.ts @@ -1,10 +1,5 @@ -import { SellablePetPaletteData } from '@nitro/renderer'; +import {SellablePetPaletteData} from "@nitro/renderer"; -export class CatalogPetPalette -{ - constructor( - public readonly breed: string, - public readonly palettes: SellablePetPaletteData[] - ) - {} +export class CatalogPetPalette { + constructor(public readonly breed: string, public readonly palettes: SellablePetPaletteData[]) {} } diff --git a/apps/frontend/src/api/catalog/CatalogPurchaseState.ts b/apps/frontend/src/api/catalog/CatalogPurchaseState.ts index b442f62..242967c 100644 --- a/apps/frontend/src/api/catalog/CatalogPurchaseState.ts +++ b/apps/frontend/src/api/catalog/CatalogPurchaseState.ts @@ -1,10 +1,9 @@ -export class CatalogPurchaseState -{ - public static NONE = 0; - public static CONFIRM = 1; - public static PURCHASE = 2; - public static NO_CREDITS = 3; - public static NO_POINTS = 4; - public static SOLD_OUT = 5; - public static FAILED = 6; +export class CatalogPurchaseState { + public static NONE = 0; + public static CONFIRM = 1; + public static PURCHASE = 2; + public static NO_CREDITS = 3; + public static NO_POINTS = 4; + public static SOLD_OUT = 5; + public static FAILED = 6; } diff --git a/apps/frontend/src/api/catalog/CatalogType.ts b/apps/frontend/src/api/catalog/CatalogType.ts index 670ad6f..af94b6a 100644 --- a/apps/frontend/src/api/catalog/CatalogType.ts +++ b/apps/frontend/src/api/catalog/CatalogType.ts @@ -1,5 +1,4 @@ -export class CatalogType -{ - public static NORMAL: string = 'NORMAL'; - public static BUILDER: string = 'BUILDERS_CLUB'; +export class CatalogType { + public static NORMAL: string = "NORMAL"; + public static BUILDER: string = "BUILDERS_CLUB"; } diff --git a/apps/frontend/src/api/catalog/CatalogUtilities.ts b/apps/frontend/src/api/catalog/CatalogUtilities.ts index 02bdf6d..a56d0b4 100644 --- a/apps/frontend/src/api/catalog/CatalogUtilities.ts +++ b/apps/frontend/src/api/catalog/CatalogUtilities.ts @@ -1,125 +1,207 @@ -import { SellablePetPaletteData } from '@nitro/renderer'; -import { GetRoomEngine } from '../nitro'; -import { ICatalogNode } from './ICatalogNode'; +import {SellablePetPaletteData} from "@nitro/renderer"; -export const GetPixelEffectIcon = (id: number) => -{ - return ''; -} +import {GetRoomEngine} from "../nitro"; +import {ICatalogNode} from "./ICatalogNode"; -export const GetSubscriptionProductIcon = (id: number) => -{ - return ''; -} +export const GetPixelEffectIcon = (id: number) => { + return ""; +}; -export const GetOfferNodes = (offerNodes: Map, offerId: number) => -{ - const nodes = offerNodes.get(offerId); - const allowedNodes: ICatalogNode[] = []; +export const GetSubscriptionProductIcon = (id: number) => { + return ""; +}; - if(nodes && nodes.length) - { - for(const node of nodes) - { - if(!node.isVisible) continue; - - allowedNodes.push(node); - } +export const GetOfferNodes = (offerNodes: Map, offerId: number) => { + const nodes = offerNodes.get(offerId); + const allowedNodes: ICatalogNode[] = []; + + if (nodes && nodes.length) { + for (const node of nodes) { + if (!node.isVisible) continue; + + allowedNodes.push(node); + } + } + + return allowedNodes; +}; + +export const FilterCatalogNode = (search: string, furniLines: string[], node: ICatalogNode, nodes: ICatalogNode[]) => { + if (node.isVisible && node.pageId > 0) { + let nodeAdded = false; + + const hayStack = [node.pageName, node.localization].join(" ").toLowerCase().replace(/ /gi, ""); + + if (hayStack.indexOf(search) > -1) { + nodes.push(node); + + nodeAdded = true; } - return allowedNodes; -} + if (!nodeAdded) { + for (const furniLine of furniLines) { + if (hayStack.indexOf(furniLine) >= 0) { + nodes.push(node); -export const FilterCatalogNode = (search: string, furniLines: string[], node: ICatalogNode, nodes: ICatalogNode[]) => -{ - if(node.isVisible && (node.pageId > 0)) - { - let nodeAdded = false; - - const hayStack = [ node.pageName, node.localization ].join(' ').toLowerCase().replace(/ /gi, ''); - - if(hayStack.indexOf(search) > -1) - { - nodes.push(node); - - nodeAdded = true; + break; } + } + } + } - if(!nodeAdded) - { - for(const furniLine of furniLines) - { - if(hayStack.indexOf(furniLine) >= 0) - { - nodes.push(node); + for (const child of node.children) FilterCatalogNode(search, furniLines, child, nodes); +}; - break; - } - } - } - } - - for(const child of node.children) FilterCatalogNode(search, furniLines, child, nodes); -} - -export function GetPetIndexFromLocalization(localization: string) -{ - if(!localization.length) return 0; - - let index = (localization.length - 1); - - while(index >= 0) - { - if(isNaN(parseInt(localization.charAt(index)))) break; - - index--; - } - - if(index > 0) return parseInt(localization.substring(index + 1)); - - return -1; -} - -export function GetPetAvailableColors(petIndex: number, palettes: SellablePetPaletteData[]): number[][] -{ - switch(petIndex) - { - case 0: - return [ [ 16743226 ], [ 16750435 ], [ 16764339 ], [ 0xF59500 ], [ 16498012 ], [ 16704690 ], [ 0xEDD400 ], [ 16115545 ], [ 16513201 ], [ 8694111 ], [ 11585939 ], [ 14413767 ], [ 6664599 ], [ 9553845 ], [ 12971486 ], [ 8358322 ], [ 10002885 ], [ 13292268 ], [ 10780600 ], [ 12623573 ], [ 14403561 ], [ 12418717 ], [ 14327229 ], [ 15517403 ], [ 14515069 ], [ 15764368 ], [ 16366271 ], [ 0xABABAB ], [ 0xD4D4D4 ], [ 0xFFFFFF ], [ 14256481 ], [ 14656129 ], [ 15848130 ], [ 14005087 ], [ 14337152 ], [ 15918540 ], [ 15118118 ], [ 15531929 ], [ 9764857 ], [ 11258085 ] ]; - case 1: - return [ [ 16743226 ], [ 16750435 ], [ 16764339 ], [ 0xF59500 ], [ 16498012 ], [ 16704690 ], [ 0xEDD400 ], [ 16115545 ], [ 16513201 ], [ 8694111 ], [ 11585939 ], [ 14413767 ], [ 6664599 ], [ 9553845 ], [ 12971486 ], [ 8358322 ], [ 10002885 ], [ 13292268 ], [ 10780600 ], [ 12623573 ], [ 14403561 ], [ 12418717 ], [ 14327229 ], [ 15517403 ], [ 14515069 ], [ 15764368 ], [ 16366271 ], [ 0xABABAB ], [ 0xD4D4D4 ], [ 0xFFFFFF ], [ 14256481 ], [ 14656129 ], [ 15848130 ], [ 14005087 ], [ 14337152 ], [ 15918540 ], [ 15118118 ], [ 15531929 ], [ 9764857 ], [ 11258085 ] ]; - case 2: - return [ [ 16579283 ], [ 15378351 ], [ 8830016 ], [ 15257125 ], [ 9340985 ], [ 8949607 ], [ 6198292 ], [ 8703620 ], [ 9889626 ], [ 8972045 ], [ 12161285 ], [ 13162269 ], [ 8620113 ], [ 12616503 ], [ 8628101 ], [ 0xD2FF00 ], [ 9764857 ] ]; - case 3: - return [ [ 0xFFFFFF ], [ 0xEEEEEE ], [ 0xDDDDDD ] ]; - case 4: - return [ [ 0xFFFFFF ], [ 16053490 ], [ 15464440 ], [ 16248792 ], [ 15396319 ], [ 15007487 ] ]; - case 5: - return [ [ 0xFFFFFF ], [ 0xEEEEEE ], [ 0xDDDDDD ] ]; - case 6: - return [ [ 0xFFFFFF ], [ 0xEEEEEE ], [ 0xDDDDDD ], [ 16767177 ], [ 16770205 ], [ 16751331 ] ]; - case 7: - return [ [ 0xCCCCCC ], [ 0xAEAEAE ], [ 16751331 ], [ 10149119 ], [ 16763290 ], [ 16743786 ] ]; - default: { - const colors: number[][] = []; - - for(const palette of palettes) - { - const petColorResult = GetRoomEngine().getPetColorResult(petIndex, palette.paletteId); - - if(!petColorResult) continue; - - if(petColorResult.primaryColor === petColorResult.secondaryColor) - { - colors.push([ petColorResult.primaryColor ]); - } - else - { - colors.push([ petColorResult.primaryColor, petColorResult.secondaryColor ]); - } - } - - return colors; +export function GetPetIndexFromLocalization(localization: string) { + if (!localization.length) return 0; + + let index = localization.length - 1; + + while (index >= 0) { + if (isNaN(parseInt(localization.charAt(index)))) break; + + index--; + } + + if (index > 0) return parseInt(localization.substring(index + 1)); + + return -1; +} + +export function GetPetAvailableColors(petIndex: number, palettes: SellablePetPaletteData[]): number[][] { + switch (petIndex) { + case 0: + return [ + [16743226], + [16750435], + [16764339], + [0xf59500], + [16498012], + [16704690], + [0xedd400], + [16115545], + [16513201], + [8694111], + [11585939], + [14413767], + [6664599], + [9553845], + [12971486], + [8358322], + [10002885], + [13292268], + [10780600], + [12623573], + [14403561], + [12418717], + [14327229], + [15517403], + [14515069], + [15764368], + [16366271], + [0xababab], + [0xd4d4d4], + [0xffffff], + [14256481], + [14656129], + [15848130], + [14005087], + [14337152], + [15918540], + [15118118], + [15531929], + [9764857], + [11258085], + ]; + case 1: + return [ + [16743226], + [16750435], + [16764339], + [0xf59500], + [16498012], + [16704690], + [0xedd400], + [16115545], + [16513201], + [8694111], + [11585939], + [14413767], + [6664599], + [9553845], + [12971486], + [8358322], + [10002885], + [13292268], + [10780600], + [12623573], + [14403561], + [12418717], + [14327229], + [15517403], + [14515069], + [15764368], + [16366271], + [0xababab], + [0xd4d4d4], + [0xffffff], + [14256481], + [14656129], + [15848130], + [14005087], + [14337152], + [15918540], + [15118118], + [15531929], + [9764857], + [11258085], + ]; + case 2: + return [ + [16579283], + [15378351], + [8830016], + [15257125], + [9340985], + [8949607], + [6198292], + [8703620], + [9889626], + [8972045], + [12161285], + [13162269], + [8620113], + [12616503], + [8628101], + [0xd2ff00], + [9764857], + ]; + case 3: + return [[0xffffff], [0xeeeeee], [0xdddddd]]; + case 4: + return [[0xffffff], [16053490], [15464440], [16248792], [15396319], [15007487]]; + case 5: + return [[0xffffff], [0xeeeeee], [0xdddddd]]; + case 6: + return [[0xffffff], [0xeeeeee], [0xdddddd], [16767177], [16770205], [16751331]]; + case 7: + return [[0xcccccc], [0xaeaeae], [16751331], [10149119], [16763290], [16743786]]; + default: { + const colors: number[][] = []; + + for (const palette of palettes) { + const petColorResult = GetRoomEngine().getPetColorResult(petIndex, palette.paletteId); + + if (!petColorResult) continue; + + if (petColorResult.primaryColor === petColorResult.secondaryColor) { + colors.push([petColorResult.primaryColor]); + } else { + colors.push([petColorResult.primaryColor, petColorResult.secondaryColor]); } + } + + return colors; } + } } diff --git a/apps/frontend/src/api/catalog/FurnitureOffer.ts b/apps/frontend/src/api/catalog/FurnitureOffer.ts index 5ef5f05..2f812c4 100644 --- a/apps/frontend/src/api/catalog/FurnitureOffer.ts +++ b/apps/frontend/src/api/catalog/FurnitureOffer.ts @@ -1,120 +1,106 @@ -import { GetProductOfferComposer, IFurnitureData } from '@nitro/renderer'; -import { GetProductDataForLocalization, SendMessageComposer } from '..'; -import { ICatalogPage } from './ICatalogPage'; -import { IProduct } from './IProduct'; -import { IPurchasableOffer } from './IPurchasableOffer'; -import { Offer } from './Offer'; -import { Product } from './Product'; +import {GetProductOfferComposer, IFurnitureData} from "@nitro/renderer"; -export class FurnitureOffer implements IPurchasableOffer -{ - private _furniData:IFurnitureData; - private _page: ICatalogPage; - private _product: IProduct; +import {GetProductDataForLocalization, SendMessageComposer} from ".."; +import {ICatalogPage} from "./ICatalogPage"; +import {IProduct} from "./IProduct"; +import {IPurchasableOffer} from "./IPurchasableOffer"; +import {Offer} from "./Offer"; +import {Product} from "./Product"; - constructor(furniData: IFurnitureData) - { - this._furniData = furniData; - this._product = (new Product(this._furniData.type, this._furniData.id, this._furniData.customParams, 1, GetProductDataForLocalization(this._furniData.className), this._furniData) as IProduct); - } +export class FurnitureOffer implements IPurchasableOffer { + private _furniData: IFurnitureData; + private _page: ICatalogPage; + private _product: IProduct; - public activate(): void - { - SendMessageComposer(new GetProductOfferComposer((this._furniData.rentOfferId > -1) ? this._furniData.rentOfferId : this._furniData.purchaseOfferId)); - } + constructor(furniData: IFurnitureData) { + this._furniData = furniData; + this._product = new Product( + this._furniData.type, + this._furniData.id, + this._furniData.customParams, + 1, + GetProductDataForLocalization(this._furniData.className), + this._furniData + ) as IProduct; + } - public get offerId(): number - { - return (this.isRentOffer) ? this._furniData.rentOfferId : this._furniData.purchaseOfferId; - } + public activate(): void { + SendMessageComposer(new GetProductOfferComposer(this._furniData.rentOfferId > -1 ? this._furniData.rentOfferId : this._furniData.purchaseOfferId)); + } - public get priceInActivityPoints(): number - { - return 0; - } + public get offerId(): number { + return this.isRentOffer ? this._furniData.rentOfferId : this._furniData.purchaseOfferId; + } - public get activityPointType(): number - { - return 0; - } + public get priceInActivityPoints(): number { + return 0; + } - public get priceInCredits(): number - { - return 0; - } + public get activityPointType(): number { + return 0; + } - public get page(): ICatalogPage - { - return this._page; - } + public get priceInCredits(): number { + return 0; + } - public set page(page: ICatalogPage) - { - this._page = page; - } + public get page(): ICatalogPage { + return this._page; + } - public get priceType(): string - { - return ''; - } + public set page(page: ICatalogPage) { + this._page = page; + } - public get product(): IProduct - { - return this._product; - } + public get priceType(): string { + return ""; + } - public get products(): IProduct[] - { - return [ this._product ]; - } + public get product(): IProduct { + return this._product; + } - public get localizationId(): string - { - return 'roomItem.name.' + this._furniData.id; - } + public get products(): IProduct[] { + return [this._product]; + } - public get bundlePurchaseAllowed(): boolean - { - return false; - } + public get localizationId(): string { + return "roomItem.name." + this._furniData.id; + } - public get isRentOffer(): boolean - { - return (this._furniData.rentOfferId > -1); - } + public get bundlePurchaseAllowed(): boolean { + return false; + } - public get giftable(): boolean - { - return false; - } + public get isRentOffer(): boolean { + return this._furniData.rentOfferId > -1; + } - public get pricingModel(): string - { - return Offer.PRICING_MODEL_FURNITURE; - } + public get giftable(): boolean { + return false; + } - public get clubLevel(): number - { - return 0; - } + public get pricingModel(): string { + return Offer.PRICING_MODEL_FURNITURE; + } - public get badgeCode(): string - { - return ''; - } + public get clubLevel(): number { + return 0; + } - public get localizationName(): string - { - return this._furniData.name; - } + public get badgeCode(): string { + return ""; + } - public get localizationDescription(): string - { - return this._furniData.description; - } + public get localizationName(): string { + return this._furniData.name; + } - public get isLazy(): boolean - { - return true; - } + public get localizationDescription(): string { + return this._furniData.description; + } + + public get isLazy(): boolean { + return true; + } } diff --git a/apps/frontend/src/api/catalog/GetImageIconUrlForProduct.ts b/apps/frontend/src/api/catalog/GetImageIconUrlForProduct.ts index 1e8d8c0..5dc98bc 100644 --- a/apps/frontend/src/api/catalog/GetImageIconUrlForProduct.ts +++ b/apps/frontend/src/api/catalog/GetImageIconUrlForProduct.ts @@ -1,19 +1,17 @@ -import { GetRoomEngine } from '../nitro'; -import { ProductTypeEnum } from './ProductTypeEnum'; +import {GetRoomEngine} from "../nitro"; +import {ProductTypeEnum} from "./ProductTypeEnum"; -export const GetImageIconUrlForProduct = (productType: string, productClassId: number, extraData: string = null) => -{ - let imageUrl: string = null; +export const GetImageIconUrlForProduct = (productType: string, productClassId: number, extraData: string = null) => { + let imageUrl: string = null; - switch(productType.toLocaleLowerCase()) - { - case ProductTypeEnum.FLOOR: - imageUrl = GetRoomEngine().getFurnitureFloorIconUrl(productClassId); - break; - case ProductTypeEnum.WALL: - imageUrl = GetRoomEngine().getFurnitureWallIconUrl(productClassId, extraData); - break; - } + switch (productType.toLocaleLowerCase()) { + case ProductTypeEnum.FLOOR: + imageUrl = GetRoomEngine().getFurnitureFloorIconUrl(productClassId); + break; + case ProductTypeEnum.WALL: + imageUrl = GetRoomEngine().getFurnitureWallIconUrl(productClassId, extraData); + break; + } - return imageUrl; -} + return imageUrl; +}; diff --git a/apps/frontend/src/api/catalog/GiftWrappingConfiguration.ts b/apps/frontend/src/api/catalog/GiftWrappingConfiguration.ts index 49d01ab..723d3a9 100644 --- a/apps/frontend/src/api/catalog/GiftWrappingConfiguration.ts +++ b/apps/frontend/src/api/catalog/GiftWrappingConfiguration.ts @@ -1,51 +1,43 @@ -import { GiftWrappingConfigurationParser } from '@nitro/renderer'; +import {GiftWrappingConfigurationParser} from "@nitro/renderer"; -export class GiftWrappingConfiguration -{ - private _isEnabled: boolean = false; - private _price: number = null; - private _stuffTypes: number[] = null; - private _boxTypes: number[] = null; - private _ribbonTypes: number[] = null; - private _defaultStuffTypes: number[] = null; +export class GiftWrappingConfiguration { + private _isEnabled: boolean = false; + private _price: number = null; + private _stuffTypes: number[] = null; + private _boxTypes: number[] = null; + private _ribbonTypes: number[] = null; + private _defaultStuffTypes: number[] = null; - constructor(parser: GiftWrappingConfigurationParser) - { - this._isEnabled = parser.isEnabled; - this._price = parser.price; - this._boxTypes = parser.boxTypes; - this._ribbonTypes = parser.ribbonTypes; - this._stuffTypes = parser.giftWrappers; - this._defaultStuffTypes = parser.giftFurnis; - } + constructor(parser: GiftWrappingConfigurationParser) { + this._isEnabled = parser.isEnabled; + this._price = parser.price; + this._boxTypes = parser.boxTypes; + this._ribbonTypes = parser.ribbonTypes; + this._stuffTypes = parser.giftWrappers; + this._defaultStuffTypes = parser.giftFurnis; + } - public get isEnabled(): boolean - { - return this._isEnabled; - } + public get isEnabled(): boolean { + return this._isEnabled; + } - public get price(): number - { - return this._price; - } + public get price(): number { + return this._price; + } - public get stuffTypes(): number[] - { - return this._stuffTypes; - } + public get stuffTypes(): number[] { + return this._stuffTypes; + } - public get boxTypes(): number[] - { - return this._boxTypes; - } + public get boxTypes(): number[] { + return this._boxTypes; + } - public get ribbonTypes(): number[] - { - return this._ribbonTypes; - } + public get ribbonTypes(): number[] { + return this._ribbonTypes; + } - public get defaultStuffTypes(): number[] - { - return this._defaultStuffTypes; - } + public get defaultStuffTypes(): number[] { + return this._defaultStuffTypes; + } } diff --git a/apps/frontend/src/api/catalog/ICatalogNode.ts b/apps/frontend/src/api/catalog/ICatalogNode.ts index c69f5a6..b299b21 100644 --- a/apps/frontend/src/api/catalog/ICatalogNode.ts +++ b/apps/frontend/src/api/catalog/ICatalogNode.ts @@ -1,21 +1,20 @@ -export interface ICatalogNode -{ - activate(): void; - deactivate(): void; - open(): void; - close(): void; - addChild(node: ICatalogNode): void; - readonly depth: number; - readonly isBranch: boolean; - readonly isLeaf: boolean; - readonly localization: string; - readonly pageId: number; - readonly pageName: string; - readonly iconId: number; - readonly children: ICatalogNode[]; - readonly offerIds: number[]; - readonly parent: ICatalogNode; - readonly isVisible: boolean; - readonly isActive: boolean; - readonly isOpen: boolean; +export interface ICatalogNode { + activate(): void; + deactivate(): void; + open(): void; + close(): void; + addChild(node: ICatalogNode): void; + readonly depth: number; + readonly isBranch: boolean; + readonly isLeaf: boolean; + readonly localization: string; + readonly pageId: number; + readonly pageName: string; + readonly iconId: number; + readonly children: ICatalogNode[]; + readonly offerIds: number[]; + readonly parent: ICatalogNode; + readonly isVisible: boolean; + readonly isActive: boolean; + readonly isOpen: boolean; } diff --git a/apps/frontend/src/api/catalog/ICatalogOptions.ts b/apps/frontend/src/api/catalog/ICatalogOptions.ts index 49e2059..c40ea3c 100644 --- a/apps/frontend/src/api/catalog/ICatalogOptions.ts +++ b/apps/frontend/src/api/catalog/ICatalogOptions.ts @@ -1,13 +1,13 @@ -import { ClubGiftInfoParser, ClubOfferData, HabboGroupEntryData, MarketplaceConfigurationMessageParser } from '@nitro/renderer'; -import { CatalogPetPalette } from './CatalogPetPalette'; -import { GiftWrappingConfiguration } from './GiftWrappingConfiguration'; +import {ClubGiftInfoParser, ClubOfferData, HabboGroupEntryData, MarketplaceConfigurationMessageParser} from "@nitro/renderer"; -export interface ICatalogOptions -{ - groups?: HabboGroupEntryData[]; - petPalettes?: CatalogPetPalette[]; - clubOffers?: ClubOfferData[]; - clubGifts?: ClubGiftInfoParser; - giftConfiguration?: GiftWrappingConfiguration; - marketplaceConfiguration?: MarketplaceConfigurationMessageParser; +import {CatalogPetPalette} from "./CatalogPetPalette"; +import {GiftWrappingConfiguration} from "./GiftWrappingConfiguration"; + +export interface ICatalogOptions { + groups?: HabboGroupEntryData[]; + petPalettes?: CatalogPetPalette[]; + clubOffers?: ClubOfferData[]; + clubGifts?: ClubGiftInfoParser; + giftConfiguration?: GiftWrappingConfiguration; + marketplaceConfiguration?: MarketplaceConfigurationMessageParser; } diff --git a/apps/frontend/src/api/catalog/ICatalogPage.ts b/apps/frontend/src/api/catalog/ICatalogPage.ts index ed11ba0..55a840d 100644 --- a/apps/frontend/src/api/catalog/ICatalogPage.ts +++ b/apps/frontend/src/api/catalog/ICatalogPage.ts @@ -1,12 +1,11 @@ -import { IPageLocalization } from './IPageLocalization'; -import { IPurchasableOffer } from './IPurchasableOffer'; +import {IPageLocalization} from "./IPageLocalization"; +import {IPurchasableOffer} from "./IPurchasableOffer"; -export interface ICatalogPage -{ - readonly pageId: number; - readonly layoutCode: string; - readonly localization: IPageLocalization; - readonly offers: IPurchasableOffer[]; - readonly acceptSeasonCurrencyAsCredits: boolean; - readonly mode: number; +export interface ICatalogPage { + readonly pageId: number; + readonly layoutCode: string; + readonly localization: IPageLocalization; + readonly offers: IPurchasableOffer[]; + readonly acceptSeasonCurrencyAsCredits: boolean; + readonly mode: number; } diff --git a/apps/frontend/src/api/catalog/IMarketplaceSearchOptions.ts b/apps/frontend/src/api/catalog/IMarketplaceSearchOptions.ts index 9489ef0..f55401c 100644 --- a/apps/frontend/src/api/catalog/IMarketplaceSearchOptions.ts +++ b/apps/frontend/src/api/catalog/IMarketplaceSearchOptions.ts @@ -1,7 +1,6 @@ -export interface IMarketplaceSearchOptions -{ - query: string; - type: number; - minPrice: number; - maxPrice: number; +export interface IMarketplaceSearchOptions { + query: string; + type: number; + minPrice: number; + maxPrice: number; } diff --git a/apps/frontend/src/api/catalog/IPageLocalization.ts b/apps/frontend/src/api/catalog/IPageLocalization.ts index ad652e1..94487dc 100644 --- a/apps/frontend/src/api/catalog/IPageLocalization.ts +++ b/apps/frontend/src/api/catalog/IPageLocalization.ts @@ -1,5 +1,4 @@ -export interface IPageLocalization -{ - getText(index: number): string - getImage(index: number): string +export interface IPageLocalization { + getText(index: number): string; + getImage(index: number): string; } diff --git a/apps/frontend/src/api/catalog/IProduct.ts b/apps/frontend/src/api/catalog/IProduct.ts index 2ae66a1..15c2342 100644 --- a/apps/frontend/src/api/catalog/IProduct.ts +++ b/apps/frontend/src/api/catalog/IProduct.ts @@ -1,16 +1,16 @@ -import { IFurnitureData, IProductData } from '@nitro/renderer'; -import { IPurchasableOffer } from './IPurchasableOffer'; +import {IFurnitureData, IProductData} from "@nitro/renderer"; -export interface IProduct -{ - getIconUrl(offer?: IPurchasableOffer): string; - productType: string; - productClassId: number; - extraParam: string; - productCount: number; - productData: IProductData; - furnitureData: IFurnitureData; - isUniqueLimitedItem: boolean; - uniqueLimitedItemSeriesSize: number; - uniqueLimitedItemsLeft: number; +import {IPurchasableOffer} from "./IPurchasableOffer"; + +export interface IProduct { + getIconUrl(offer?: IPurchasableOffer): string; + productType: string; + productClassId: number; + extraParam: string; + productCount: number; + productData: IProductData; + furnitureData: IFurnitureData; + isUniqueLimitedItem: boolean; + uniqueLimitedItemSeriesSize: number; + uniqueLimitedItemsLeft: number; } diff --git a/apps/frontend/src/api/catalog/IPurchasableOffer.ts b/apps/frontend/src/api/catalog/IPurchasableOffer.ts index b182865..1a598fc 100644 --- a/apps/frontend/src/api/catalog/IPurchasableOffer.ts +++ b/apps/frontend/src/api/catalog/IPurchasableOffer.ts @@ -1,25 +1,24 @@ -import { ICatalogPage } from './ICatalogPage'; -import { IProduct } from './IProduct'; +import {ICatalogPage} from "./ICatalogPage"; +import {IProduct} from "./IProduct"; -export interface IPurchasableOffer -{ - activate(): void; - clubLevel: number; - page: ICatalogPage; - offerId: number; - localizationId: string; - priceInCredits: number; - priceInActivityPoints: number; - activityPointType: number; - giftable: boolean; - product: IProduct; - pricingModel: string; - priceType: string; - bundlePurchaseAllowed: boolean; - isRentOffer: boolean; - badgeCode: string; - localizationName: string; - localizationDescription: string; - isLazy: boolean; - products: IProduct[]; +export interface IPurchasableOffer { + activate(): void; + clubLevel: number; + page: ICatalogPage; + offerId: number; + localizationId: string; + priceInCredits: number; + priceInActivityPoints: number; + activityPointType: number; + giftable: boolean; + product: IProduct; + pricingModel: string; + priceType: string; + bundlePurchaseAllowed: boolean; + isRentOffer: boolean; + badgeCode: string; + localizationName: string; + localizationDescription: string; + isLazy: boolean; + products: IProduct[]; } diff --git a/apps/frontend/src/api/catalog/IPurchaseOptions.ts b/apps/frontend/src/api/catalog/IPurchaseOptions.ts index 9208fe5..dbccd07 100644 --- a/apps/frontend/src/api/catalog/IPurchaseOptions.ts +++ b/apps/frontend/src/api/catalog/IPurchaseOptions.ts @@ -1,9 +1,8 @@ -import { IObjectData } from '@nitro/renderer'; +import {IObjectData} from "@nitro/renderer"; -export interface IPurchaseOptions -{ - quantity?: number; - extraData?: string; - extraParamRequired?: boolean; - previewStuffData?: IObjectData; +export interface IPurchaseOptions { + quantity?: number; + extraData?: string; + extraParamRequired?: boolean; + previewStuffData?: IObjectData; } diff --git a/apps/frontend/src/api/catalog/MarketplaceOfferData.ts b/apps/frontend/src/api/catalog/MarketplaceOfferData.ts index d369eb2..2d03d03 100644 --- a/apps/frontend/src/api/catalog/MarketplaceOfferData.ts +++ b/apps/frontend/src/api/catalog/MarketplaceOfferData.ts @@ -1,128 +1,117 @@ -import { IObjectData } from '@nitro/renderer'; +import {IObjectData} from "@nitro/renderer"; -export class MarketplaceOfferData -{ - public static readonly TYPE_FLOOR: number = 1; - public static readonly TYPE_WALL: number = 2; +export class MarketplaceOfferData { + public static readonly TYPE_FLOOR: number = 1; + public static readonly TYPE_WALL: number = 2; - private _offerId: number; - private _furniId: number; - private _furniType: number; - private _extraData: string; - private _stuffData: IObjectData; - private _price: number; - private _averagePrice: number; - private _imageCallback: number; - private _status: number; - private _timeLeftMinutes: number = -1; - private _offerCount: number; - private _image: string; + private _offerId: number; + private _furniId: number; + private _furniType: number; + private _extraData: string; + private _stuffData: IObjectData; + private _price: number; + private _averagePrice: number; + private _imageCallback: number; + private _status: number; + private _timeLeftMinutes: number = -1; + private _offerCount: number; + private _image: string; - constructor(offerId: number, furniId: number, furniType: number, extraData: string, stuffData: IObjectData, price: number, status: number, averagePrice: number, offerCount: number = -1) - { - this._offerId = offerId; - this._furniId = furniId; - this._furniType = furniType; - this._extraData = extraData; - this._stuffData = stuffData; - this._price = price; - this._status = status; - this._averagePrice = averagePrice; - this._offerCount = offerCount; - } + constructor( + offerId: number, + furniId: number, + furniType: number, + extraData: string, + stuffData: IObjectData, + price: number, + status: number, + averagePrice: number, + offerCount: number = -1 + ) { + this._offerId = offerId; + this._furniId = furniId; + this._furniType = furniType; + this._extraData = extraData; + this._stuffData = stuffData; + this._price = price; + this._status = status; + this._averagePrice = averagePrice; + this._offerCount = offerCount; + } - public get offerId(): number - { - return this._offerId; - } + public get offerId(): number { + return this._offerId; + } - public set offerId(offerId: number) - { - this._offerId = offerId; - } + public set offerId(offerId: number) { + this._offerId = offerId; + } - public get furniId(): number - { - return this._furniId; - } + public get furniId(): number { + return this._furniId; + } - public get furniType(): number - { - return this._furniType; - } + public get furniType(): number { + return this._furniType; + } - public get extraData(): string - { - return this._extraData; - } + public get extraData(): string { + return this._extraData; + } - public get stuffData(): IObjectData - { - return this._stuffData; - } + public get stuffData(): IObjectData { + return this._stuffData; + } - public get price(): number - { - return this._price; - } + public get price(): number { + return this._price; + } - public set price(price: number) - { - this._price = price; - } + public set price(price: number) { + this._price = price; + } - public get averagePrice(): number - { - return this._averagePrice; - } + public get averagePrice(): number { + return this._averagePrice; + } - public get image(): string - { - return this._image; - } + public get image(): string { + return this._image; + } - public set image(image: string) - { - this._image = image; - } + public set image(image: string) { + this._image = image; + } - public get imageCallback(): number - { - return this._imageCallback; - } + public get imageCallback(): number { + return this._imageCallback; + } - public set imageCallback(callback: number) - { - this._imageCallback = callback; - } + public set imageCallback(callback: number) { + this._imageCallback = callback; + } - public get status(): number - { - return this._status; - } + public get status(): number { + return this._status; + } - public get timeLeftMinutes(): number - { - return this._timeLeftMinutes; - } + public get timeLeftMinutes(): number { + return this._timeLeftMinutes; + } - public set timeLeftMinutes(minutes: number) - { - this._timeLeftMinutes = minutes; - } + public set timeLeftMinutes(minutes: number) { + this._timeLeftMinutes = minutes; + } - public get offerCount(): number - { - return this._offerCount; - } + public get offerCount(): number { + return this._offerCount; + } - public set offerCount(count: number) - { - this._offerCount = count; - } + public set offerCount(count: number) { + this._offerCount = count; + } - public get isUniqueLimitedItem(): boolean - { - return (this.stuffData && (this.stuffData.uniqueSeries > 0)); - } + public get isUniqueLimitedItem(): boolean { + return this.stuffData && this.stuffData.uniqueSeries > 0; + } } diff --git a/apps/frontend/src/api/catalog/MarketplaceOfferState.ts b/apps/frontend/src/api/catalog/MarketplaceOfferState.ts index 20c0e45..4c7ebc6 100644 --- a/apps/frontend/src/api/catalog/MarketplaceOfferState.ts +++ b/apps/frontend/src/api/catalog/MarketplaceOfferState.ts @@ -1,7 +1,6 @@ -export class MarketPlaceOfferState -{ - public static readonly ONGOING = 1; - public static readonly ONGOING_OWN = 1; - public static readonly SOLD = 2; - public static readonly EXPIRED = 3; +export class MarketPlaceOfferState { + public static readonly ONGOING = 1; + public static readonly ONGOING_OWN = 1; + public static readonly SOLD = 2; + public static readonly EXPIRED = 3; } diff --git a/apps/frontend/src/api/catalog/MarketplaceSearchType.ts b/apps/frontend/src/api/catalog/MarketplaceSearchType.ts index ac7a701..b73f6c3 100644 --- a/apps/frontend/src/api/catalog/MarketplaceSearchType.ts +++ b/apps/frontend/src/api/catalog/MarketplaceSearchType.ts @@ -1,6 +1,5 @@ -export class MarketplaceSearchType -{ - public static readonly BY_ACTIVITY = 1; - public static readonly BY_VALUE = 2; - public static readonly ADVANCED = 3; +export class MarketplaceSearchType { + public static readonly BY_ACTIVITY = 1; + public static readonly BY_VALUE = 2; + public static readonly ADVANCED = 3; } diff --git a/apps/frontend/src/api/catalog/Offer.ts b/apps/frontend/src/api/catalog/Offer.ts index c14d6ac..f79eb39 100644 --- a/apps/frontend/src/api/catalog/Offer.ts +++ b/apps/frontend/src/api/catalog/Offer.ts @@ -1,245 +1,217 @@ -import { GetFurnitureData, GetProductDataForLocalization, LocalizeText, ProductTypeEnum } from '..'; -import { ICatalogPage } from './ICatalogPage'; -import { IProduct } from './IProduct'; -import { IPurchasableOffer } from './IPurchasableOffer'; -import { Product } from './Product'; +import {GetFurnitureData, GetProductDataForLocalization, LocalizeText, ProductTypeEnum} from ".."; +import {ICatalogPage} from "./ICatalogPage"; +import {IProduct} from "./IProduct"; +import {IPurchasableOffer} from "./IPurchasableOffer"; +import {Product} from "./Product"; -export class Offer implements IPurchasableOffer -{ - public static PRICING_MODEL_UNKNOWN: string = 'pricing_model_unknown'; - public static PRICING_MODEL_SINGLE: string = 'pricing_model_single'; - public static PRICING_MODEL_MULTI: string = 'pricing_model_multi'; - public static PRICING_MODEL_BUNDLE: string = 'pricing_model_bundle'; - public static PRICING_MODEL_FURNITURE: string = 'pricing_model_furniture'; - public static PRICE_TYPE_NONE: string = 'price_type_none'; - public static PRICE_TYPE_CREDITS: string = 'price_type_credits'; - public static PRICE_TYPE_ACTIVITYPOINTS: string = 'price_type_activitypoints'; - public static PRICE_TYPE_CREDITS_ACTIVITYPOINTS: string = 'price_type_credits_and_activitypoints'; +export class Offer implements IPurchasableOffer { + public static PRICING_MODEL_UNKNOWN: string = "pricing_model_unknown"; + public static PRICING_MODEL_SINGLE: string = "pricing_model_single"; + public static PRICING_MODEL_MULTI: string = "pricing_model_multi"; + public static PRICING_MODEL_BUNDLE: string = "pricing_model_bundle"; + public static PRICING_MODEL_FURNITURE: string = "pricing_model_furniture"; + public static PRICE_TYPE_NONE: string = "price_type_none"; + public static PRICE_TYPE_CREDITS: string = "price_type_credits"; + public static PRICE_TYPE_ACTIVITYPOINTS: string = "price_type_activitypoints"; + public static PRICE_TYPE_CREDITS_ACTIVITYPOINTS: string = "price_type_credits_and_activitypoints"; - private _pricingModel: string; - private _priceType: string; - private _offerId: number; - private _localizationId: string; - private _priceInCredits: number; - private _priceInActivityPoints: number; - private _activityPointType: number; - private _giftable: boolean; - private _isRentOffer: boolean; - private _page: ICatalogPage; - private _clubLevel: number = 0; - private _products: IProduct[]; - private _badgeCode: string; - private _bundlePurchaseAllowed: boolean = false; + private _pricingModel: string; + private _priceType: string; + private _offerId: number; + private _localizationId: string; + private _priceInCredits: number; + private _priceInActivityPoints: number; + private _activityPointType: number; + private _giftable: boolean; + private _isRentOffer: boolean; + private _page: ICatalogPage; + private _clubLevel: number = 0; + private _products: IProduct[]; + private _badgeCode: string; + private _bundlePurchaseAllowed: boolean = false; - constructor(offerId: number, localizationId: string, isRentOffer: boolean, priceInCredits: number, priceInActivityPoints: number, activityPointType: number, giftable: boolean, clubLevel: number, products: IProduct[], bundlePurchaseAllowed: boolean) - { - this._offerId = offerId; - this._localizationId = localizationId; - this._isRentOffer = isRentOffer; - this._priceInCredits = priceInCredits; - this._priceInActivityPoints = priceInActivityPoints; - this._activityPointType = activityPointType; - this._giftable = giftable; - this._clubLevel = clubLevel; - this._products = products; - this._bundlePurchaseAllowed = bundlePurchaseAllowed; + constructor( + offerId: number, + localizationId: string, + isRentOffer: boolean, + priceInCredits: number, + priceInActivityPoints: number, + activityPointType: number, + giftable: boolean, + clubLevel: number, + products: IProduct[], + bundlePurchaseAllowed: boolean + ) { + this._offerId = offerId; + this._localizationId = localizationId; + this._isRentOffer = isRentOffer; + this._priceInCredits = priceInCredits; + this._priceInActivityPoints = priceInActivityPoints; + this._activityPointType = activityPointType; + this._giftable = giftable; + this._clubLevel = clubLevel; + this._products = products; + this._bundlePurchaseAllowed = bundlePurchaseAllowed; - this.setPricingModelForProducts(); - this.setPricingType(); + this.setPricingModelForProducts(); + this.setPricingType(); - for(const product of products) - { - if(product.productType === ProductTypeEnum.BADGE) - { - this._badgeCode = product.extraParam; + for (const product of products) { + if (product.productType === ProductTypeEnum.BADGE) { + this._badgeCode = product.extraParam; - break; - } - } + break; + } + } + } + + public activate(): void {} + + public get clubLevel(): number { + return this._clubLevel; + } + + public get page(): ICatalogPage { + return this._page; + } + + public set page(k: ICatalogPage) { + this._page = k; + } + + public get offerId(): number { + return this._offerId; + } + + public get localizationId(): string { + return this._localizationId; + } + + public get priceInCredits(): number { + return this._priceInCredits; + } + + public get priceInActivityPoints(): number { + return this._priceInActivityPoints; + } + + public get activityPointType(): number { + return this._activityPointType; + } + + public get giftable(): boolean { + return this._giftable; + } + + public get product(): IProduct { + if (!this._products || !this._products.length) return null; + + if (this._products.length === 1) return this._products[0]; + + const products = Product.stripAddonProducts(this._products); + + if (products.length) return products[0]; + + return null; + } + + public get pricingModel(): string { + return this._pricingModel; + } + + public get priceType(): string { + return this._priceType; + } + + public get bundlePurchaseAllowed(): boolean { + return this._bundlePurchaseAllowed; + } + + public get isRentOffer(): boolean { + return this._isRentOffer; + } + + public get badgeCode(): string { + return this._badgeCode; + } + + public get localizationName(): string { + const productData = GetProductDataForLocalization(this._localizationId); + + if (productData) return productData.name; + + return LocalizeText(this._localizationId); + } + + public get localizationDescription(): string { + const productData = GetProductDataForLocalization(this._localizationId); + + if (productData) return productData.description; + + return LocalizeText(this._localizationId); + } + + public get isLazy(): boolean { + return false; + } + + public get products(): IProduct[] { + return this._products; + } + + private setPricingModelForProducts(): void { + const products = Product.stripAddonProducts(this._products); + + if (products.length === 1) { + if (products[0].productCount === 1) { + this._pricingModel = Offer.PRICING_MODEL_SINGLE; + } else { + this._pricingModel = Offer.PRICING_MODEL_MULTI; + } + } else if (products.length > 1) { + this._pricingModel = Offer.PRICING_MODEL_BUNDLE; + } else { + this._pricingModel = Offer.PRICING_MODEL_UNKNOWN; + } + } + + private setPricingType(): void { + if (this._priceInCredits > 0 && this._priceInActivityPoints > 0) { + this._priceType = Offer.PRICE_TYPE_CREDITS_ACTIVITYPOINTS; + } else if (this._priceInCredits > 0) { + this._priceType = Offer.PRICE_TYPE_CREDITS; + } else if (this._priceInActivityPoints > 0) { + this._priceType = Offer.PRICE_TYPE_ACTIVITYPOINTS; + } else { + this._priceType = Offer.PRICE_TYPE_NONE; + } + } + + public clone(): IPurchasableOffer { + const products: IProduct[] = []; + const productData = GetProductDataForLocalization(this.localizationId); + + for (const product of this._products) { + const furnitureData = GetFurnitureData(product.productClassId, product.productType); + + products.push(new Product(product.productType, product.productClassId, product.extraParam, product.productCount, productData, furnitureData)); } - public activate(): void - { - - } + const offer = new Offer( + this.offerId, + this.localizationId, + this.isRentOffer, + this.priceInCredits, + this.priceInActivityPoints, + this.activityPointType, + this.giftable, + this.clubLevel, + products, + this.bundlePurchaseAllowed + ); - public get clubLevel(): number - { - return this._clubLevel; - } + offer.page = this.page; - public get page(): ICatalogPage - { - return this._page; - } - - public set page(k: ICatalogPage) - { - this._page = k; - } - - public get offerId(): number - { - return this._offerId; - } - - public get localizationId(): string - { - return this._localizationId; - } - - public get priceInCredits(): number - { - return this._priceInCredits; - } - - public get priceInActivityPoints(): number - { - return this._priceInActivityPoints; - } - - public get activityPointType(): number - { - return this._activityPointType; - } - - public get giftable(): boolean - { - return this._giftable; - } - - public get product(): IProduct - { - if(!this._products || !this._products.length) return null; - - if(this._products.length === 1) return this._products[0]; - - const products = Product.stripAddonProducts(this._products); - - if(products.length) return products[0]; - - return null; - } - - public get pricingModel(): string - { - return this._pricingModel; - } - - public get priceType(): string - { - return this._priceType; - } - - public get bundlePurchaseAllowed(): boolean - { - return this._bundlePurchaseAllowed; - } - - public get isRentOffer(): boolean - { - return this._isRentOffer; - } - - public get badgeCode(): string - { - return this._badgeCode; - } - - public get localizationName(): string - { - const productData = GetProductDataForLocalization(this._localizationId); - - if(productData) return productData.name; - - return LocalizeText(this._localizationId); - } - - public get localizationDescription(): string - { - const productData = GetProductDataForLocalization(this._localizationId); - - if(productData) return productData.description; - - return LocalizeText(this._localizationId); - } - - public get isLazy(): boolean - { - return false; - } - - public get products(): IProduct[] - { - return this._products; - } - - private setPricingModelForProducts(): void - { - const products = Product.stripAddonProducts(this._products); - - if(products.length === 1) - { - if(products[0].productCount === 1) - { - this._pricingModel = Offer.PRICING_MODEL_SINGLE; - } - else - { - this._pricingModel = Offer.PRICING_MODEL_MULTI; - } - } - - else if(products.length > 1) - { - this._pricingModel = Offer.PRICING_MODEL_BUNDLE; - } - - else - { - this._pricingModel = Offer.PRICING_MODEL_UNKNOWN; - } - } - - private setPricingType(): void - { - if((this._priceInCredits > 0) && (this._priceInActivityPoints > 0)) - { - this._priceType = Offer.PRICE_TYPE_CREDITS_ACTIVITYPOINTS; - } - - else if(this._priceInCredits > 0) - { - this._priceType = Offer.PRICE_TYPE_CREDITS; - } - - else if(this._priceInActivityPoints > 0) - { - this._priceType = Offer.PRICE_TYPE_ACTIVITYPOINTS; - } - - else - { - this._priceType = Offer.PRICE_TYPE_NONE; - } - } - - public clone(): IPurchasableOffer - { - const products: IProduct[] = []; - const productData = GetProductDataForLocalization(this.localizationId); - - for(const product of this._products) - { - const furnitureData = GetFurnitureData(product.productClassId, product.productType); - - products.push(new Product(product.productType, product.productClassId, product.extraParam, product.productCount, productData, furnitureData)); - } - - const offer = new Offer(this.offerId, this.localizationId, this.isRentOffer, this.priceInCredits, this.priceInActivityPoints, this.activityPointType, this.giftable, this.clubLevel, products, this.bundlePurchaseAllowed); - - offer.page = this.page; - - return offer; - } + return offer; + } } diff --git a/apps/frontend/src/api/catalog/PageLocalization.ts b/apps/frontend/src/api/catalog/PageLocalization.ts index 91e3ce6..e286fb1 100644 --- a/apps/frontend/src/api/catalog/PageLocalization.ts +++ b/apps/frontend/src/api/catalog/PageLocalization.ts @@ -1,36 +1,32 @@ -import { GetConfiguration } from '../nitro'; -import { IPageLocalization } from './IPageLocalization'; +import {GetConfiguration} from "../nitro"; +import {IPageLocalization} from "./IPageLocalization"; -export class PageLocalization implements IPageLocalization -{ - private _images: string[]; - private _texts: string[] +export class PageLocalization implements IPageLocalization { + private _images: string[]; + private _texts: string[]; - constructor(images: string[], texts: string[]) - { - this._images = images; - this._texts = texts; - } + constructor(images: string[], texts: string[]) { + this._images = images; + this._texts = texts; + } - public getText(index: number): string - { - let message = (this._texts[index] || ''); + public getText(index: number): string { + let message = this._texts[index] || ""; - if(message && message.length) message = message.replace(/\r\n|\r|\n/g, '
'); + if (message && message.length) message = message.replace(/\r\n|\r|\n/g, "
"); - return message; - } + return message; + } - public getImage(index: number): string - { - const imageName = (this._images[index] || ''); + public getImage(index: number): string { + const imageName = this._images[index] || ""; - if(!imageName || !imageName.length) return null; + if (!imageName || !imageName.length) return null; - let assetUrl = GetConfiguration('catalog.asset.image.url'); + let assetUrl = GetConfiguration("catalog.asset.image.url"); - assetUrl = assetUrl.replace('%name%', imageName); + assetUrl = assetUrl.replace("%name%", imageName); - return assetUrl; - } + return assetUrl; + } } diff --git a/apps/frontend/src/api/catalog/PlacedObjectPurchaseData.ts b/apps/frontend/src/api/catalog/PlacedObjectPurchaseData.ts index a1ca25b..73505e3 100644 --- a/apps/frontend/src/api/catalog/PlacedObjectPurchaseData.ts +++ b/apps/frontend/src/api/catalog/PlacedObjectPurchaseData.ts @@ -1,41 +1,36 @@ -import { IFurnitureData, IProductData } from '@nitro/renderer'; -import { IPurchasableOffer } from './IPurchasableOffer'; +import {IFurnitureData, IProductData} from "@nitro/renderer"; -export class PlacedObjectPurchaseData -{ - constructor( - public readonly roomId: number, - public readonly objectId: number, - public readonly category: number, - public readonly wallLocation: string, - public readonly x: number, - public readonly y: number, - public readonly direction: number, - public readonly offer: IPurchasableOffer) - {} +import {IPurchasableOffer} from "./IPurchasableOffer"; - public get offerId(): number - { - return this.offer.offerId; - } +export class PlacedObjectPurchaseData { + constructor( + public readonly roomId: number, + public readonly objectId: number, + public readonly category: number, + public readonly wallLocation: string, + public readonly x: number, + public readonly y: number, + public readonly direction: number, + public readonly offer: IPurchasableOffer + ) {} - public get productClassId(): number - { - return this.offer.product.productClassId; - } + public get offerId(): number { + return this.offer.offerId; + } - public get productData(): IProductData - { - return this.offer.product.productData; - } + public get productClassId(): number { + return this.offer.product.productClassId; + } - public get furniData(): IFurnitureData - { - return this.offer.product.furnitureData; - } + public get productData(): IProductData { + return this.offer.product.productData; + } - public get extraParam(): string - { - return this.offer.product.extraParam; - } + public get furniData(): IFurnitureData { + return this.offer.product.furnitureData; + } + + public get extraParam(): string { + return this.offer.product.extraParam; + } } diff --git a/apps/frontend/src/api/catalog/Product.ts b/apps/frontend/src/api/catalog/Product.ts index a198022..8fc2508 100644 --- a/apps/frontend/src/api/catalog/Product.ts +++ b/apps/frontend/src/api/catalog/Product.ts @@ -1,143 +1,140 @@ -import { IFurnitureData, IObjectData, IProductData } from '@nitro/renderer'; -import { GetConfiguration, GetRoomEngine, GetSessionDataManager } from '../nitro'; -import { GetPixelEffectIcon, GetSubscriptionProductIcon } from './CatalogUtilities'; -import { IProduct } from './IProduct'; -import { IPurchasableOffer } from './IPurchasableOffer'; -import { ProductTypeEnum } from './ProductTypeEnum'; +import {IFurnitureData, IObjectData, IProductData} from "@nitro/renderer"; -export class Product implements IProduct -{ - public static EFFECT_CLASSID_NINJA_DISAPPEAR: number = 108; +import {GetConfiguration, GetRoomEngine, GetSessionDataManager} from "../nitro"; +import {GetPixelEffectIcon, GetSubscriptionProductIcon} from "./CatalogUtilities"; +import {IProduct} from "./IProduct"; +import {IPurchasableOffer} from "./IPurchasableOffer"; +import {ProductTypeEnum} from "./ProductTypeEnum"; - private _productType: string; - private _productClassId: number; - private _extraParam: string; - private _productCount: number; - private _productData: IProductData; - private _furnitureData: IFurnitureData; - private _isUniqueLimitedItem: boolean; - private _uniqueLimitedItemSeriesSize: number; - private _uniqueLimitedItemsLeft: number; +export class Product implements IProduct { + public static EFFECT_CLASSID_NINJA_DISAPPEAR: number = 108; - constructor(productType: string, productClassId: number, extraParam: string, productCount: number, productData: IProductData, furnitureData: IFurnitureData, isUniqueLimitedItem: boolean = false, uniqueLimitedItemSeriesSize: number = 0, uniqueLimitedItemsLeft: number = 0) - { - this._productType = productType.toLowerCase(); - this._productClassId = productClassId; - this._extraParam = extraParam; - this._productCount = productCount; - this._productData = productData; - this._furnitureData = furnitureData; - this._isUniqueLimitedItem = isUniqueLimitedItem; - this._uniqueLimitedItemSeriesSize = uniqueLimitedItemSeriesSize; - this._uniqueLimitedItemsLeft = uniqueLimitedItemsLeft; - } + private _productType: string; + private _productClassId: number; + private _extraParam: string; + private _productCount: number; + private _productData: IProductData; + private _furnitureData: IFurnitureData; + private _isUniqueLimitedItem: boolean; + private _uniqueLimitedItemSeriesSize: number; + private _uniqueLimitedItemsLeft: number; - public static stripAddonProducts(products: IProduct[]): IProduct[] - { - if(products.length === 1) return products; + constructor( + productType: string, + productClassId: number, + extraParam: string, + productCount: number, + productData: IProductData, + furnitureData: IFurnitureData, + isUniqueLimitedItem: boolean = false, + uniqueLimitedItemSeriesSize: number = 0, + uniqueLimitedItemsLeft: number = 0 + ) { + this._productType = productType.toLowerCase(); + this._productClassId = productClassId; + this._extraParam = extraParam; + this._productCount = productCount; + this._productData = productData; + this._furnitureData = furnitureData; + this._isUniqueLimitedItem = isUniqueLimitedItem; + this._uniqueLimitedItemSeriesSize = uniqueLimitedItemSeriesSize; + this._uniqueLimitedItemsLeft = uniqueLimitedItemsLeft; + } - return products.filter(product => ((product.productType !== ProductTypeEnum.BADGE) && (product.productType !== ProductTypeEnum.EFFECT) && (product.productClassId !== Product.EFFECT_CLASSID_NINJA_DISAPPEAR))); - } + public static stripAddonProducts(products: IProduct[]): IProduct[] { + if (products.length === 1) return products; - public getIconUrl(offer: IPurchasableOffer = null, stuffData: IObjectData = null): string - { - switch(this._productType) - { - case ProductTypeEnum.FLOOR: - return GetRoomEngine().getFurnitureFloorIconUrl(this.productClassId); - case ProductTypeEnum.WALL: { - if(offer && this._furnitureData) - { - let iconName = ''; + return products.filter( + product => + product.productType !== ProductTypeEnum.BADGE && + product.productType !== ProductTypeEnum.EFFECT && + product.productClassId !== Product.EFFECT_CLASSID_NINJA_DISAPPEAR + ); + } - switch(this._furnitureData.className) - { - case 'floor': - iconName = [ 'th', this._furnitureData.className, offer.product.extraParam ].join('_'); - break; - case 'wallpaper': - iconName = [ 'th', 'wall', offer.product.extraParam ].join('_'); - break; - case 'landscape': - iconName = [ 'th', this._furnitureData.className, (offer.product.extraParam || '').replace('.', '_'), '001' ].join('_'); - break; - } + public getIconUrl(offer: IPurchasableOffer = null, stuffData: IObjectData = null): string { + switch (this._productType) { + case ProductTypeEnum.FLOOR: + return GetRoomEngine().getFurnitureFloorIconUrl(this.productClassId); + case ProductTypeEnum.WALL: { + if (offer && this._furnitureData) { + let iconName = ""; - if(iconName !== '') - { - const assetUrl = GetConfiguration('catalog.asset.url'); + switch (this._furnitureData.className) { + case "floor": + iconName = ["th", this._furnitureData.className, offer.product.extraParam].join("_"); + break; + case "wallpaper": + iconName = ["th", "wall", offer.product.extraParam].join("_"); + break; + case "landscape": + iconName = ["th", this._furnitureData.className, (offer.product.extraParam || "").replace(".", "_"), "001"].join("_"); + break; + } - return `${ assetUrl }/${ iconName }.png`; - } - } + if (iconName !== "") { + const assetUrl = GetConfiguration("catalog.asset.url"); - return GetRoomEngine().getFurnitureWallIconUrl(this.productClassId, this._extraParam); - } - case ProductTypeEnum.EFFECT: - return GetPixelEffectIcon(this.productClassId); - case ProductTypeEnum.HABBO_CLUB: - return GetSubscriptionProductIcon(this.productClassId); - case ProductTypeEnum.BADGE: - return GetSessionDataManager().getBadgeUrl(this._extraParam); - case ProductTypeEnum.ROBOT: - return null; + return `${assetUrl}/${iconName}.png`; + } } + return GetRoomEngine().getFurnitureWallIconUrl(this.productClassId, this._extraParam); + } + case ProductTypeEnum.EFFECT: + return GetPixelEffectIcon(this.productClassId); + case ProductTypeEnum.HABBO_CLUB: + return GetSubscriptionProductIcon(this.productClassId); + case ProductTypeEnum.BADGE: + return GetSessionDataManager().getBadgeUrl(this._extraParam); + case ProductTypeEnum.ROBOT: return null; } - public get productType(): string - { - return this._productType; - } + return null; + } - public get productClassId(): number - { - return this._productClassId; - } + public get productType(): string { + return this._productType; + } - public get extraParam(): string - { - return this._extraParam; - } + public get productClassId(): number { + return this._productClassId; + } - public set extraParam(extraParam: string) - { - this._extraParam = extraParam; - } + public get extraParam(): string { + return this._extraParam; + } - public get productCount(): number - { - return this._productCount; - } + public set extraParam(extraParam: string) { + this._extraParam = extraParam; + } - public get productData(): IProductData - { - return this._productData; - } + public get productCount(): number { + return this._productCount; + } - public get furnitureData(): IFurnitureData - { - return this._furnitureData; - } + public get productData(): IProductData { + return this._productData; + } - public get isUniqueLimitedItem(): boolean - { - return this._isUniqueLimitedItem; - } + public get furnitureData(): IFurnitureData { + return this._furnitureData; + } - public get uniqueLimitedItemSeriesSize(): number - { - return this._uniqueLimitedItemSeriesSize; - } + public get isUniqueLimitedItem(): boolean { + return this._isUniqueLimitedItem; + } - public get uniqueLimitedItemsLeft(): number - { - return this._uniqueLimitedItemsLeft; - } + public get uniqueLimitedItemSeriesSize(): number { + return this._uniqueLimitedItemSeriesSize; + } - public set uniqueLimitedItemsLeft(uniqueLimitedItemsLeft: number) - { - this._uniqueLimitedItemsLeft = uniqueLimitedItemsLeft; - } + public get uniqueLimitedItemsLeft(): number { + return this._uniqueLimitedItemsLeft; + } + + public set uniqueLimitedItemsLeft(uniqueLimitedItemsLeft: number) { + this._uniqueLimitedItemsLeft = uniqueLimitedItemsLeft; + } } diff --git a/apps/frontend/src/api/catalog/ProductTypeEnum.ts b/apps/frontend/src/api/catalog/ProductTypeEnum.ts index f249081..6e3b9d1 100644 --- a/apps/frontend/src/api/catalog/ProductTypeEnum.ts +++ b/apps/frontend/src/api/catalog/ProductTypeEnum.ts @@ -1,11 +1,10 @@ -export class ProductTypeEnum -{ - public static WALL: string = 'i'; - public static FLOOR: string = 's'; - public static EFFECT: string = 'e'; - public static HABBO_CLUB: string = 'h'; - public static BADGE: string = 'b'; - public static GAME_TOKEN: string = 'GAME_TOKEN'; - public static PET: string = 'p'; - public static ROBOT: string = 'r'; +export class ProductTypeEnum { + public static WALL: string = "i"; + public static FLOOR: string = "s"; + public static EFFECT: string = "e"; + public static HABBO_CLUB: string = "h"; + public static BADGE: string = "b"; + public static GAME_TOKEN: string = "GAME_TOKEN"; + public static PET: string = "p"; + public static ROBOT: string = "r"; } diff --git a/apps/frontend/src/api/catalog/RequestedPage.ts b/apps/frontend/src/api/catalog/RequestedPage.ts index 8c22730..d23ea02 100644 --- a/apps/frontend/src/api/catalog/RequestedPage.ts +++ b/apps/frontend/src/api/catalog/RequestedPage.ts @@ -1,63 +1,53 @@ -export class RequestedPage -{ - public static REQUEST_TYPE_NONE: number = 0; - public static REQUEST_TYPE_ID: number = 1; - public static REQUEST_TYPE_OFFER: number = 2; - public static REQUEST_TYPE_NAME: number = 3; +export class RequestedPage { + public static REQUEST_TYPE_NONE: number = 0; + public static REQUEST_TYPE_ID: number = 1; + public static REQUEST_TYPE_OFFER: number = 2; + public static REQUEST_TYPE_NAME: number = 3; - private _requestType: number; - private _requestById: number; - private _requestedByOfferId: number; - private _requestByName: string; + private _requestType: number; + private _requestById: number; + private _requestedByOfferId: number; + private _requestByName: string; - constructor() - { - this._requestType = RequestedPage.REQUEST_TYPE_NONE; - } + constructor() { + this._requestType = RequestedPage.REQUEST_TYPE_NONE; + } - public resetRequest():void - { - this._requestType = RequestedPage.REQUEST_TYPE_NONE; - this._requestById = -1; - this._requestedByOfferId = -1; - this._requestByName = null; - } + public resetRequest(): void { + this._requestType = RequestedPage.REQUEST_TYPE_NONE; + this._requestById = -1; + this._requestedByOfferId = -1; + this._requestByName = null; + } - public get requestType(): number - { - return this._requestType; - } + public get requestType(): number { + return this._requestType; + } - public get requestById(): number - { - return this._requestById; - } + public get requestById(): number { + return this._requestById; + } - public set requestById(id: number) - { - this._requestType = RequestedPage.REQUEST_TYPE_ID; - this._requestById = id; - } + public set requestById(id: number) { + this._requestType = RequestedPage.REQUEST_TYPE_ID; + this._requestById = id; + } - public get requestedByOfferId(): number - { - return this._requestedByOfferId; - } + public get requestedByOfferId(): number { + return this._requestedByOfferId; + } - public set requestedByOfferId(offerId: number) - { - this._requestType = RequestedPage.REQUEST_TYPE_OFFER; - this._requestedByOfferId = offerId; - } + public set requestedByOfferId(offerId: number) { + this._requestType = RequestedPage.REQUEST_TYPE_OFFER; + this._requestedByOfferId = offerId; + } - public get requestByName(): string - { - return this._requestByName; - } + public get requestByName(): string { + return this._requestByName; + } - public set requestByName(name: string) - { - this._requestType = RequestedPage.REQUEST_TYPE_NAME; - this._requestByName = name; - } + public set requestByName(name: string) { + this._requestType = RequestedPage.REQUEST_TYPE_NAME; + this._requestByName = name; + } } diff --git a/apps/frontend/src/api/catalog/SearchResult.ts b/apps/frontend/src/api/catalog/SearchResult.ts index 419f3cf..ba4de07 100644 --- a/apps/frontend/src/api/catalog/SearchResult.ts +++ b/apps/frontend/src/api/catalog/SearchResult.ts @@ -1,11 +1,6 @@ -import { ICatalogNode } from './ICatalogNode'; -import { IPurchasableOffer } from './IPurchasableOffer'; +import {ICatalogNode} from "./ICatalogNode"; +import {IPurchasableOffer} from "./IPurchasableOffer"; -export class SearchResult -{ - constructor( - public readonly searchValue: string, - public readonly offers: IPurchasableOffer[], - public readonly filteredNodes: ICatalogNode[]) - {} +export class SearchResult { + constructor(public readonly searchValue: string, public readonly offers: IPurchasableOffer[], public readonly filteredNodes: ICatalogNode[]) {} } diff --git a/apps/frontend/src/api/catalog/index.ts b/apps/frontend/src/api/catalog/index.ts index 6c5b9e2..70810a1 100644 --- a/apps/frontend/src/api/catalog/index.ts +++ b/apps/frontend/src/api/catalog/index.ts @@ -1,29 +1,29 @@ -export * from './BuilderFurniPlaceableStatus'; -export * from './CatalogNode'; -export * from './CatalogPage'; -export * from './CatalogPageName'; -export * from './CatalogPetPalette'; -export * from './CatalogPurchaseState'; -export * from './CatalogType'; -export * from './CatalogUtilities'; -export * from './FurnitureOffer'; -export * from './GetImageIconUrlForProduct'; -export * from './GiftWrappingConfiguration'; -export * from './ICatalogNode'; -export * from './ICatalogOptions'; -export * from './ICatalogPage'; -export * from './IMarketplaceSearchOptions'; -export * from './IPageLocalization'; -export * from './IProduct'; -export * from './IPurchasableOffer'; -export * from './IPurchaseOptions'; -export * from './MarketplaceOfferData'; -export * from './MarketplaceOfferState'; -export * from './MarketplaceSearchType'; -export * from './Offer'; -export * from './PageLocalization'; -export * from './PlacedObjectPurchaseData'; -export * from './Product'; -export * from './ProductTypeEnum'; -export * from './RequestedPage'; -export * from './SearchResult'; +export * from "./BuilderFurniPlaceableStatus"; +export * from "./CatalogNode"; +export * from "./CatalogPage"; +export * from "./CatalogPageName"; +export * from "./CatalogPetPalette"; +export * from "./CatalogPurchaseState"; +export * from "./CatalogType"; +export * from "./CatalogUtilities"; +export * from "./FurnitureOffer"; +export * from "./GetImageIconUrlForProduct"; +export * from "./GiftWrappingConfiguration"; +export * from "./ICatalogNode"; +export * from "./ICatalogOptions"; +export * from "./ICatalogPage"; +export * from "./IMarketplaceSearchOptions"; +export * from "./IPageLocalization"; +export * from "./IProduct"; +export * from "./IPurchasableOffer"; +export * from "./IPurchaseOptions"; +export * from "./MarketplaceOfferData"; +export * from "./MarketplaceOfferState"; +export * from "./MarketplaceSearchType"; +export * from "./Offer"; +export * from "./PageLocalization"; +export * from "./PlacedObjectPurchaseData"; +export * from "./Product"; +export * from "./ProductTypeEnum"; +export * from "./RequestedPage"; +export * from "./SearchResult"; diff --git a/apps/frontend/src/api/chat-history/ChatEntryType.ts b/apps/frontend/src/api/chat-history/ChatEntryType.ts index 045f00c..c9635ec 100644 --- a/apps/frontend/src/api/chat-history/ChatEntryType.ts +++ b/apps/frontend/src/api/chat-history/ChatEntryType.ts @@ -1,6 +1,5 @@ -export class ChatEntryType -{ - public static TYPE_CHAT = 1; - public static TYPE_ROOM_INFO = 2; - public static TYPE_IM = 3; +export class ChatEntryType { + public static TYPE_CHAT = 1; + public static TYPE_ROOM_INFO = 2; + public static TYPE_IM = 3; } diff --git a/apps/frontend/src/api/chat-history/ChatHistoryCurrentDate.ts b/apps/frontend/src/api/chat-history/ChatHistoryCurrentDate.ts index 6947bca..486f1e5 100644 --- a/apps/frontend/src/api/chat-history/ChatHistoryCurrentDate.ts +++ b/apps/frontend/src/api/chat-history/ChatHistoryCurrentDate.ts @@ -1,6 +1,5 @@ -export const ChatHistoryCurrentDate = () => -{ - const currentTime = new Date(); +export const ChatHistoryCurrentDate = () => { + const currentTime = new Date(); - return `${ currentTime.getHours().toString().padStart(2, '0') }:${ currentTime.getMinutes().toString().padStart(2, '0') }`; -} + return `${currentTime.getHours().toString().padStart(2, "0")}:${currentTime.getMinutes().toString().padStart(2, "0")}`; +}; diff --git a/apps/frontend/src/api/chat-history/IChatEntry.ts b/apps/frontend/src/api/chat-history/IChatEntry.ts index 1bf7a52..d46dc51 100644 --- a/apps/frontend/src/api/chat-history/IChatEntry.ts +++ b/apps/frontend/src/api/chat-history/IChatEntry.ts @@ -1,17 +1,16 @@ -export interface IChatEntry -{ - id: number; - webId: number; - entityId: number; - name: string; - look?: string; - message?: string; - entityType?: number; - style?: number; - chatType?: number; - imageUrl?: string; - color?: string; - roomId: number; - timestamp: string; - type: number; +export interface IChatEntry { + id: number; + webId: number; + entityId: number; + name: string; + look?: string; + message?: string; + entityType?: number; + style?: number; + chatType?: number; + imageUrl?: string; + color?: string; + roomId: number; + timestamp: string; + type: number; } diff --git a/apps/frontend/src/api/chat-history/IRoomHistoryEntry.ts b/apps/frontend/src/api/chat-history/IRoomHistoryEntry.ts index 4986154..4a6431a 100644 --- a/apps/frontend/src/api/chat-history/IRoomHistoryEntry.ts +++ b/apps/frontend/src/api/chat-history/IRoomHistoryEntry.ts @@ -1,5 +1,4 @@ -export interface IRoomHistoryEntry -{ - id: number; - name: string; +export interface IRoomHistoryEntry { + id: number; + name: string; } diff --git a/apps/frontend/src/api/chat-history/MessengerHistoryCurrentDate.ts b/apps/frontend/src/api/chat-history/MessengerHistoryCurrentDate.ts index 3aeebc5..adcad57 100644 --- a/apps/frontend/src/api/chat-history/MessengerHistoryCurrentDate.ts +++ b/apps/frontend/src/api/chat-history/MessengerHistoryCurrentDate.ts @@ -1,6 +1,5 @@ -export const MessengerHistoryCurrentDate = (secondsSinceNow: number = 0) => -{ - const currentTime = secondsSinceNow ? new Date(Date.now() - secondsSinceNow * 1000) : new Date(); - - return `${ currentTime.getHours().toString().padStart(2, '0') }:${ currentTime.getMinutes().toString().padStart(2, '0') }`; -} +export const MessengerHistoryCurrentDate = (secondsSinceNow: number = 0) => { + const currentTime = secondsSinceNow ? new Date(Date.now() - secondsSinceNow * 1000) : new Date(); + + return `${currentTime.getHours().toString().padStart(2, "0")}:${currentTime.getMinutes().toString().padStart(2, "0")}`; +}; diff --git a/apps/frontend/src/api/chat-history/index.ts b/apps/frontend/src/api/chat-history/index.ts index a989374..2ad21c4 100644 --- a/apps/frontend/src/api/chat-history/index.ts +++ b/apps/frontend/src/api/chat-history/index.ts @@ -1,5 +1,5 @@ -export * from './ChatEntryType'; -export * from './ChatHistoryCurrentDate'; -export * from './IChatEntry'; -export * from './IRoomHistoryEntry'; -export * from './MessengerHistoryCurrentDate'; +export * from "./ChatEntryType"; +export * from "./ChatHistoryCurrentDate"; +export * from "./IChatEntry"; +export * from "./IRoomHistoryEntry"; +export * from "./MessengerHistoryCurrentDate"; diff --git a/apps/frontend/src/api/events/DispatchEvent.ts b/apps/frontend/src/api/events/DispatchEvent.ts index 02e93ba..d5e6728 100644 --- a/apps/frontend/src/api/events/DispatchEvent.ts +++ b/apps/frontend/src/api/events/DispatchEvent.ts @@ -1,3 +1,3 @@ -import { IEventDispatcher, NitroEvent } from '@nitro/renderer'; +import {IEventDispatcher, NitroEvent} from "@nitro/renderer"; export const DispatchEvent = (eventDispatcher: IEventDispatcher, event: NitroEvent) => eventDispatcher.dispatchEvent(event); diff --git a/apps/frontend/src/api/events/DispatchMainEvent.ts b/apps/frontend/src/api/events/DispatchMainEvent.ts index e717e70..07c2d13 100644 --- a/apps/frontend/src/api/events/DispatchMainEvent.ts +++ b/apps/frontend/src/api/events/DispatchMainEvent.ts @@ -1,5 +1,6 @@ -import { NitroEvent } from '@nitro/renderer'; -import { GetNitroInstance } from '../nitro'; -import { DispatchEvent } from './DispatchEvent'; +import {NitroEvent} from "@nitro/renderer"; + +import {GetNitroInstance} from "../nitro"; +import {DispatchEvent} from "./DispatchEvent"; export const DispatchMainEvent = (event: NitroEvent) => DispatchEvent(GetNitroInstance().events, event); diff --git a/apps/frontend/src/api/events/DispatchUiEvent.ts b/apps/frontend/src/api/events/DispatchUiEvent.ts index fe90170..c99f9b5 100644 --- a/apps/frontend/src/api/events/DispatchUiEvent.ts +++ b/apps/frontend/src/api/events/DispatchUiEvent.ts @@ -1,5 +1,6 @@ -import { NitroEvent } from '@nitro/renderer'; -import { DispatchEvent } from './DispatchEvent'; -import { UI_EVENT_DISPATCHER } from './UI_EVENT_DISPATCHER'; +import {NitroEvent} from "@nitro/renderer"; + +import {DispatchEvent} from "./DispatchEvent"; +import {UI_EVENT_DISPATCHER} from "./UI_EVENT_DISPATCHER"; export const DispatchUiEvent = (event: NitroEvent) => DispatchEvent(UI_EVENT_DISPATCHER, event); diff --git a/apps/frontend/src/api/events/UI_EVENT_DISPATCHER.ts b/apps/frontend/src/api/events/UI_EVENT_DISPATCHER.ts index 7d30553..1af7c90 100644 --- a/apps/frontend/src/api/events/UI_EVENT_DISPATCHER.ts +++ b/apps/frontend/src/api/events/UI_EVENT_DISPATCHER.ts @@ -1,3 +1,3 @@ -import { EventDispatcher, IEventDispatcher } from '@nitro/renderer'; +import {EventDispatcher, IEventDispatcher} from "@nitro/renderer"; export const UI_EVENT_DISPATCHER: IEventDispatcher = new EventDispatcher(); diff --git a/apps/frontend/src/api/events/index.ts b/apps/frontend/src/api/events/index.ts index b7c22ee..e5854bc 100644 --- a/apps/frontend/src/api/events/index.ts +++ b/apps/frontend/src/api/events/index.ts @@ -1,4 +1,4 @@ -export * from './DispatchEvent'; -export * from './DispatchMainEvent'; -export * from './DispatchUiEvent'; -export * from './UI_EVENT_DISPATCHER'; +export * from "./DispatchEvent"; +export * from "./DispatchMainEvent"; +export * from "./DispatchUiEvent"; +export * from "./UI_EVENT_DISPATCHER"; diff --git a/apps/frontend/src/api/friends/GetGroupChatData.ts b/apps/frontend/src/api/friends/GetGroupChatData.ts index 75df962..a972f83 100644 --- a/apps/frontend/src/api/friends/GetGroupChatData.ts +++ b/apps/frontend/src/api/friends/GetGroupChatData.ts @@ -1,13 +1,12 @@ -import { IGroupChatData } from './IGroupChatData'; +import {IGroupChatData} from "./IGroupChatData"; -export const GetGroupChatData = (extraData: string) => -{ - if(!extraData || !extraData.length) return null; - - const splitData = extraData.split('/'); - const username = splitData[0]; - const figure = splitData[1]; - const userId = parseInt(splitData[2]); +export const GetGroupChatData = (extraData: string) => { + if (!extraData || !extraData.length) return null; - return ({ username: username, figure: figure, userId: userId } as IGroupChatData); -} + const splitData = extraData.split("/"); + const username = splitData[0]; + const figure = splitData[1]; + const userId = parseInt(splitData[2]); + + return {username: username, figure: figure, userId: userId} as IGroupChatData; +}; diff --git a/apps/frontend/src/api/friends/IGroupChatData.ts b/apps/frontend/src/api/friends/IGroupChatData.ts index 24a3f9c..fab5c42 100644 --- a/apps/frontend/src/api/friends/IGroupChatData.ts +++ b/apps/frontend/src/api/friends/IGroupChatData.ts @@ -1,6 +1,5 @@ -export interface IGroupChatData -{ - username: string; - figure: string; - userId: number; +export interface IGroupChatData { + username: string; + figure: string; + userId: number; } diff --git a/apps/frontend/src/api/friends/MessengerFriend.ts b/apps/frontend/src/api/friends/MessengerFriend.ts index 89a95fb..d794338 100644 --- a/apps/frontend/src/api/friends/MessengerFriend.ts +++ b/apps/frontend/src/api/friends/MessengerFriend.ts @@ -1,43 +1,41 @@ -import { FriendParser } from '@nitro/renderer'; +import {FriendParser} from "@nitro/renderer"; -export class MessengerFriend -{ - public static RELATIONSHIP_NONE: number = 0; - public static RELATIONSHIP_HEART: number = 1; - public static RELATIONSHIP_SMILE: number = 2; - public static RELATIONSHIP_BOBBA: number = 3; +export class MessengerFriend { + public static RELATIONSHIP_NONE: number = 0; + public static RELATIONSHIP_HEART: number = 1; + public static RELATIONSHIP_SMILE: number = 2; + public static RELATIONSHIP_BOBBA: number = 3; - public id: number = -1; - public name: string = null; - public gender: number = 0; - public online: boolean = false; - public followingAllowed: boolean = false; - public figure: string = null; - public categoryId: number = 0; - public motto: string = null; - public realName: string = null; - public lastAccess: string = null; - public persistedMessageUser: boolean = false; - public vipMember: boolean = false; - public pocketHabboUser: boolean = false; - public relationshipStatus: number = -1; - public unread: number = 0; + public id: number = -1; + public name: string = null; + public gender: number = 0; + public online: boolean = false; + public followingAllowed: boolean = false; + public figure: string = null; + public categoryId: number = 0; + public motto: string = null; + public realName: string = null; + public lastAccess: string = null; + public persistedMessageUser: boolean = false; + public vipMember: boolean = false; + public pocketHabboUser: boolean = false; + public relationshipStatus: number = -1; + public unread: number = 0; - public populate(parser: FriendParser): void - { - this.id = parser.id; - this.name = parser.name; - this.gender = parser.gender; - this.online = parser.online; - this.followingAllowed = parser.followingAllowed; - this.figure = parser.figure; - this.categoryId = parser.categoryId; - this.motto = parser.motto; - this.realName = parser.realName; - this.lastAccess = parser.lastAccess; - this.persistedMessageUser = parser.persistedMessageUser; - this.vipMember = parser.vipMember; - this.pocketHabboUser = parser.pocketHabboUser; - this.relationshipStatus = parser.relationshipStatus; - } + public populate(parser: FriendParser): void { + this.id = parser.id; + this.name = parser.name; + this.gender = parser.gender; + this.online = parser.online; + this.followingAllowed = parser.followingAllowed; + this.figure = parser.figure; + this.categoryId = parser.categoryId; + this.motto = parser.motto; + this.realName = parser.realName; + this.lastAccess = parser.lastAccess; + this.persistedMessageUser = parser.persistedMessageUser; + this.vipMember = parser.vipMember; + this.pocketHabboUser = parser.pocketHabboUser; + this.relationshipStatus = parser.relationshipStatus; + } } diff --git a/apps/frontend/src/api/friends/MessengerGroupType.ts b/apps/frontend/src/api/friends/MessengerGroupType.ts index d46a1b6..b631500 100644 --- a/apps/frontend/src/api/friends/MessengerGroupType.ts +++ b/apps/frontend/src/api/friends/MessengerGroupType.ts @@ -1,5 +1,4 @@ -export class MessengerGroupType -{ - public static readonly GROUP_CHAT = 0; - public static readonly PRIVATE_CHAT = 1; +export class MessengerGroupType { + public static readonly GROUP_CHAT = 0; + public static readonly PRIVATE_CHAT = 1; } diff --git a/apps/frontend/src/api/friends/MessengerIconState.ts b/apps/frontend/src/api/friends/MessengerIconState.ts index 63f8c13..3eb8d31 100644 --- a/apps/frontend/src/api/friends/MessengerIconState.ts +++ b/apps/frontend/src/api/friends/MessengerIconState.ts @@ -1,6 +1,5 @@ -export class MessengerIconState -{ - public static HIDDEN: number = 0; - public static SHOW: number = 1; - public static UNREAD: number = 2; +export class MessengerIconState { + public static HIDDEN: number = 0; + public static SHOW: number = 1; + public static UNREAD: number = 2; } diff --git a/apps/frontend/src/api/friends/MessengerRequest.ts b/apps/frontend/src/api/friends/MessengerRequest.ts index 0fbdcab..abd3111 100644 --- a/apps/frontend/src/api/friends/MessengerRequest.ts +++ b/apps/frontend/src/api/friends/MessengerRequest.ts @@ -1,41 +1,35 @@ -import { FriendRequestData } from '@nitro/renderer'; +import {FriendRequestData} from "@nitro/renderer"; -export class MessengerRequest -{ - private _id: number; - private _name: string; - private _requesterUserId: number; - private _figureString: string; +export class MessengerRequest { + private _id: number; + private _name: string; + private _requesterUserId: number; + private _figureString: string; - public populate(data: FriendRequestData): boolean - { - if(!data) return false; + public populate(data: FriendRequestData): boolean { + if (!data) return false; - this._id = data.requestId; - this._name = data.requesterName; - this._figureString = data.figureString; - this._requesterUserId = data.requesterUserId; + this._id = data.requestId; + this._name = data.requesterName; + this._figureString = data.figureString; + this._requesterUserId = data.requesterUserId; - return true; - } + return true; + } - public get id(): number - { - return this._id; - } + public get id(): number { + return this._id; + } - public get name(): string - { - return this._name; - } + public get name(): string { + return this._name; + } - public get requesterUserId(): number - { - return this._requesterUserId; - } + public get requesterUserId(): number { + return this._requesterUserId; + } - public get figureString(): string - { - return this._figureString; - } + public get figureString(): string { + return this._figureString; + } } diff --git a/apps/frontend/src/api/friends/MessengerSettings.ts b/apps/frontend/src/api/friends/MessengerSettings.ts index c951c3c..533c232 100644 --- a/apps/frontend/src/api/friends/MessengerSettings.ts +++ b/apps/frontend/src/api/friends/MessengerSettings.ts @@ -1,11 +1,10 @@ -import { FriendCategoryData } from '@nitro/renderer'; +import {FriendCategoryData} from "@nitro/renderer"; -export class MessengerSettings -{ - constructor( - public userFriendLimit: number = 0, - public normalFriendLimit: number = 0, - public extendedFriendLimit: number = 0, - public categories: FriendCategoryData[] = []) - {} +export class MessengerSettings { + constructor( + public userFriendLimit: number = 0, + public normalFriendLimit: number = 0, + public extendedFriendLimit: number = 0, + public categories: FriendCategoryData[] = [] + ) {} } diff --git a/apps/frontend/src/api/friends/MessengerThread.ts b/apps/frontend/src/api/friends/MessengerThread.ts index 405ea33..caccb46 100644 --- a/apps/frontend/src/api/friends/MessengerThread.ts +++ b/apps/frontend/src/api/friends/MessengerThread.ts @@ -1,96 +1,85 @@ -import { GetGroupChatData } from './GetGroupChatData'; -import { MessengerFriend } from './MessengerFriend'; -import { MessengerGroupType } from './MessengerGroupType'; -import { MessengerThreadChat } from './MessengerThreadChat'; -import { MessengerThreadChatGroup } from './MessengerThreadChatGroup'; +import {GetGroupChatData} from "./GetGroupChatData"; +import {MessengerFriend} from "./MessengerFriend"; +import {MessengerGroupType} from "./MessengerGroupType"; +import {MessengerThreadChat} from "./MessengerThreadChat"; +import {MessengerThreadChatGroup} from "./MessengerThreadChatGroup"; -export class MessengerThread -{ - public static MESSAGE_RECEIVED: string = 'MT_MESSAGE_RECEIVED'; - public static THREAD_ID: number = 0; +export class MessengerThread { + public static MESSAGE_RECEIVED: string = "MT_MESSAGE_RECEIVED"; + public static THREAD_ID: number = 0; - private _threadId: number; - private _participant: MessengerFriend; - private _groups: MessengerThreadChatGroup[]; - private _lastUpdated: Date; - private _unreadCount: number; + private _threadId: number; + private _participant: MessengerFriend; + private _groups: MessengerThreadChatGroup[]; + private _lastUpdated: Date; + private _unreadCount: number; - constructor(participant: MessengerFriend) - { - this._threadId = ++MessengerThread.THREAD_ID; - this._participant = participant; - this._groups = []; - this._lastUpdated = new Date(); - this._unreadCount = 0; - } + constructor(participant: MessengerFriend) { + this._threadId = ++MessengerThread.THREAD_ID; + this._participant = participant; + this._groups = []; + this._lastUpdated = new Date(); + this._unreadCount = 0; + } - public addMessage(senderId: number, message: string, secondsSinceSent: number = 0, extraData: string = null, type: number = 0): MessengerThreadChat - { - const isGroupChat = (senderId < 0 && extraData); - const userId = isGroupChat ? GetGroupChatData(extraData).userId : senderId; + public addMessage(senderId: number, message: string, secondsSinceSent: number = 0, extraData: string = null, type: number = 0): MessengerThreadChat { + const isGroupChat = senderId < 0 && extraData; + const userId = isGroupChat ? GetGroupChatData(extraData).userId : senderId; - const group = this.getLastGroup(userId); + const group = this.getLastGroup(userId); - if(!group) return; + if (!group) return; - if(isGroupChat) group.type = MessengerGroupType.GROUP_CHAT; + if (isGroupChat) group.type = MessengerGroupType.GROUP_CHAT; - const chat = new MessengerThreadChat(senderId, message, secondsSinceSent, extraData, type); + const chat = new MessengerThreadChat(senderId, message, secondsSinceSent, extraData, type); - group.addChat(chat); + group.addChat(chat); - this._lastUpdated = new Date(); - - this._unreadCount++; + this._lastUpdated = new Date(); - return chat; - } + this._unreadCount++; - private getLastGroup(userId: number): MessengerThreadChatGroup - { - let group = this._groups[(this._groups.length - 1)]; + return chat; + } - if(group && (group.userId === userId)) return group; + private getLastGroup(userId: number): MessengerThreadChatGroup { + let group = this._groups[this._groups.length - 1]; - group = new MessengerThreadChatGroup(userId); + if (group && group.userId === userId) return group; - this._groups.push(group); + group = new MessengerThreadChatGroup(userId); - return group; - } + this._groups.push(group); - public setRead(): void - { - this._unreadCount = 0; - } + return group; + } - public get threadId(): number - { - return this._threadId; - } + public setRead(): void { + this._unreadCount = 0; + } - public get participant(): MessengerFriend - { - return this._participant; - } + public get threadId(): number { + return this._threadId; + } - public get groups(): MessengerThreadChatGroup[] - { - return this._groups; - } + public get participant(): MessengerFriend { + return this._participant; + } - public get lastUpdated(): Date - { - return this._lastUpdated; - } + public get groups(): MessengerThreadChatGroup[] { + return this._groups; + } - public get unreadCount(): number - { - return this._unreadCount; - } + public get lastUpdated(): Date { + return this._lastUpdated; + } - public get unread(): boolean - { - return (this._unreadCount > 0); - } + public get unreadCount(): number { + return this._unreadCount; + } + + public get unread(): boolean { + return this._unreadCount > 0; + } } diff --git a/apps/frontend/src/api/friends/MessengerThreadChat.ts b/apps/frontend/src/api/friends/MessengerThreadChat.ts index 2927fec..86d715b 100644 --- a/apps/frontend/src/api/friends/MessengerThreadChat.ts +++ b/apps/frontend/src/api/friends/MessengerThreadChat.ts @@ -1,54 +1,46 @@ -export class MessengerThreadChat -{ - public static CHAT: number = 0; - public static ROOM_INVITE: number = 1; - public static STATUS_NOTIFICATION: number = 2; - public static SECURITY_NOTIFICATION: number = 3; +export class MessengerThreadChat { + public static CHAT: number = 0; + public static ROOM_INVITE: number = 1; + public static STATUS_NOTIFICATION: number = 2; + public static SECURITY_NOTIFICATION: number = 3; - private _type: number; - private _senderId: number; - private _message: string; - private _secondsSinceSent: number; - private _extraData: string; - private _date: Date; + private _type: number; + private _senderId: number; + private _message: string; + private _secondsSinceSent: number; + private _extraData: string; + private _date: Date; - constructor(senderId: number, message: string, secondsSinceSent: number = 0, extraData: string = null, type: number = 0) - { - this._type = type; - this._senderId = senderId; - this._message = message; - this._secondsSinceSent = secondsSinceSent; - this._extraData = extraData; - this._date = new Date(); - } + constructor(senderId: number, message: string, secondsSinceSent: number = 0, extraData: string = null, type: number = 0) { + this._type = type; + this._senderId = senderId; + this._message = message; + this._secondsSinceSent = secondsSinceSent; + this._extraData = extraData; + this._date = new Date(); + } - public get type(): number - { - return this._type; - } + public get type(): number { + return this._type; + } - public get senderId(): number - { - return this._senderId; - } + public get senderId(): number { + return this._senderId; + } - public get message(): string - { - return this._message; - } + public get message(): string { + return this._message; + } - public get secondsSinceSent(): number - { - return this._secondsSinceSent; - } + public get secondsSinceSent(): number { + return this._secondsSinceSent; + } - public get extraData(): string - { - return this._extraData; - } + public get extraData(): string { + return this._extraData; + } - public get date(): Date - { - return this._date; - } + public get date(): Date { + return this._date; + } } diff --git a/apps/frontend/src/api/friends/MessengerThreadChatGroup.ts b/apps/frontend/src/api/friends/MessengerThreadChatGroup.ts index 1668aed..f38e48d 100644 --- a/apps/frontend/src/api/friends/MessengerThreadChatGroup.ts +++ b/apps/frontend/src/api/friends/MessengerThreadChatGroup.ts @@ -1,41 +1,34 @@ -import { MessengerGroupType } from './MessengerGroupType'; -import { MessengerThreadChat } from './MessengerThreadChat'; +import {MessengerGroupType} from "./MessengerGroupType"; +import {MessengerThreadChat} from "./MessengerThreadChat"; -export class MessengerThreadChatGroup -{ - private _userId: number; - private _chats: MessengerThreadChat[]; - private _type: number; +export class MessengerThreadChatGroup { + private _userId: number; + private _chats: MessengerThreadChat[]; + private _type: number; - constructor(userId: number, type = MessengerGroupType.PRIVATE_CHAT) - { - this._userId = userId; - this._chats = []; - this._type = type; - } + constructor(userId: number, type = MessengerGroupType.PRIVATE_CHAT) { + this._userId = userId; + this._chats = []; + this._type = type; + } - public addChat(message: MessengerThreadChat): void - { - this._chats.push(message); - } + public addChat(message: MessengerThreadChat): void { + this._chats.push(message); + } - public get userId(): number - { - return this._userId; - } + public get userId(): number { + return this._userId; + } - public get chats(): MessengerThreadChat[] - { - return this._chats; - } + public get chats(): MessengerThreadChat[] { + return this._chats; + } - public get type(): number - { - return this._type; - } + public get type(): number { + return this._type; + } - public set type(type: number) - { - this._type = type; - } + public set type(type: number) { + this._type = type; + } } diff --git a/apps/frontend/src/api/friends/OpenMessengerChat.ts b/apps/frontend/src/api/friends/OpenMessengerChat.ts index 9270981..cccd970 100644 --- a/apps/frontend/src/api/friends/OpenMessengerChat.ts +++ b/apps/frontend/src/api/friends/OpenMessengerChat.ts @@ -1,7 +1,6 @@ -import { CreateLinkEvent } from '..'; +import {CreateLinkEvent} from ".."; -export function OpenMessengerChat(friendId: number = 0): void -{ - if(friendId === 0) CreateLinkEvent('friends-messenger/toggle'); - else CreateLinkEvent(`friends-messenger/${ friendId }`); +export function OpenMessengerChat(friendId: number = 0): void { + if (friendId === 0) CreateLinkEvent("friends-messenger/toggle"); + else CreateLinkEvent(`friends-messenger/${friendId}`); } diff --git a/apps/frontend/src/api/friends/index.ts b/apps/frontend/src/api/friends/index.ts index ce1ed60..5e93c53 100644 --- a/apps/frontend/src/api/friends/index.ts +++ b/apps/frontend/src/api/friends/index.ts @@ -1,11 +1,11 @@ -export * from './GetGroupChatData'; -export * from './IGroupChatData'; -export * from './MessengerFriend'; -export * from './MessengerGroupType'; -export * from './MessengerIconState'; -export * from './MessengerRequest'; -export * from './MessengerSettings'; -export * from './MessengerThread'; -export * from './MessengerThreadChat'; -export * from './MessengerThreadChatGroup'; -export * from './OpenMessengerChat'; +export * from "./GetGroupChatData"; +export * from "./IGroupChatData"; +export * from "./MessengerFriend"; +export * from "./MessengerGroupType"; +export * from "./MessengerIconState"; +export * from "./MessengerRequest"; +export * from "./MessengerSettings"; +export * from "./MessengerThread"; +export * from "./MessengerThreadChat"; +export * from "./MessengerThreadChatGroup"; +export * from "./OpenMessengerChat"; diff --git a/apps/frontend/src/api/groups/GetGroupInformation.ts b/apps/frontend/src/api/groups/GetGroupInformation.ts index 40f9c9a..7ed9e3c 100644 --- a/apps/frontend/src/api/groups/GetGroupInformation.ts +++ b/apps/frontend/src/api/groups/GetGroupInformation.ts @@ -1,7 +1,7 @@ -import { GroupInformationComposer } from '@nitro/renderer'; -import { SendMessageComposer } from '..'; +import {GroupInformationComposer} from "@nitro/renderer"; -export function GetGroupInformation(groupId: number): void -{ - SendMessageComposer(new GroupInformationComposer(groupId, true)); +import {SendMessageComposer} from ".."; + +export function GetGroupInformation(groupId: number): void { + SendMessageComposer(new GroupInformationComposer(groupId, true)); } diff --git a/apps/frontend/src/api/groups/GetGroupManager.ts b/apps/frontend/src/api/groups/GetGroupManager.ts index d372ace..48fcf93 100644 --- a/apps/frontend/src/api/groups/GetGroupManager.ts +++ b/apps/frontend/src/api/groups/GetGroupManager.ts @@ -1,6 +1,5 @@ -import { CreateLinkEvent } from '..'; +import {CreateLinkEvent} from ".."; -export function GetGroupManager(groupId: number): void -{ - CreateLinkEvent(`groups/manage/${ groupId }`); +export function GetGroupManager(groupId: number): void { + CreateLinkEvent(`groups/manage/${groupId}`); } diff --git a/apps/frontend/src/api/groups/GetGroupMembers.ts b/apps/frontend/src/api/groups/GetGroupMembers.ts index 27fb6d5..1165b82 100644 --- a/apps/frontend/src/api/groups/GetGroupMembers.ts +++ b/apps/frontend/src/api/groups/GetGroupMembers.ts @@ -1,7 +1,6 @@ -import { CreateLinkEvent } from '..'; +import {CreateLinkEvent} from ".."; -export function GetGroupMembers(groupId: number, levelId?: number): void -{ - if(!levelId) CreateLinkEvent(`group-members/${ groupId }`); - else CreateLinkEvent(`group-members/${ groupId }/${ levelId }`); +export function GetGroupMembers(groupId: number, levelId?: number): void { + if (!levelId) CreateLinkEvent(`group-members/${groupId}`); + else CreateLinkEvent(`group-members/${groupId}/${levelId}`); } diff --git a/apps/frontend/src/api/groups/GroupBadgePart.ts b/apps/frontend/src/api/groups/GroupBadgePart.ts index 3b74875..5cc634b 100644 --- a/apps/frontend/src/api/groups/GroupBadgePart.ts +++ b/apps/frontend/src/api/groups/GroupBadgePart.ts @@ -1,31 +1,26 @@ +export class GroupBadgePart { + public static BASE: string = "b"; + public static SYMBOL: string = "s"; -export class GroupBadgePart -{ - public static BASE: string = 'b'; - public static SYMBOL: string = 's'; + public type: string; + public key: number; + public color: number; + public position: number; - public type: string; - public key: number; - public color: number; - public position: number; + constructor(type: string, key?: number, color?: number, position?: number) { + this.type = type; + this.key = key ? key : 0; + this.color = color ? color : 0; + this.position = position ? position : 4; + } - constructor(type: string, key?: number, color?: number, position?: number) - { - this.type = type; - this.key = key ? key : 0; - this.color = color ? color : 0; - this.position = position ? position : 4; - } + public get code(): string { + if (this.key === 0 && this.type !== GroupBadgePart.BASE) return null; - public get code(): string - { - if((this.key === 0) && (this.type !== GroupBadgePart.BASE)) return null; - - return GroupBadgePart.getCode(this.type, this.key, this.color, this.position); - } + return GroupBadgePart.getCode(this.type, this.key, this.color, this.position); + } - public static getCode(type: string, key: number, color: number, position: number): string - { - return type + (key < 10 ? '0' : '') + key + (color < 10 ? '0' : '') + color + position; - } + public static getCode(type: string, key: number, color: number, position: number): string { + return type + (key < 10 ? "0" : "") + key + (color < 10 ? "0" : "") + color + position; + } } diff --git a/apps/frontend/src/api/groups/GroupMembershipType.ts b/apps/frontend/src/api/groups/GroupMembershipType.ts index 532c836..97e6b1f 100644 --- a/apps/frontend/src/api/groups/GroupMembershipType.ts +++ b/apps/frontend/src/api/groups/GroupMembershipType.ts @@ -1,6 +1,5 @@ -export class GroupMembershipType -{ - public static NOT_MEMBER: number = 0; - public static MEMBER: number = 1; - public static REQUEST_PENDING: number = 2; +export class GroupMembershipType { + public static NOT_MEMBER: number = 0; + public static MEMBER: number = 1; + public static REQUEST_PENDING: number = 2; } diff --git a/apps/frontend/src/api/groups/GroupType.ts b/apps/frontend/src/api/groups/GroupType.ts index 58ae72c..0ff5a75 100644 --- a/apps/frontend/src/api/groups/GroupType.ts +++ b/apps/frontend/src/api/groups/GroupType.ts @@ -1,6 +1,5 @@ -export class GroupType -{ - public static REGULAR: number = 0; - public static EXCLUSIVE: number = 1; - public static PRIVATE: number = 2; +export class GroupType { + public static REGULAR: number = 0; + public static EXCLUSIVE: number = 1; + public static PRIVATE: number = 2; } diff --git a/apps/frontend/src/api/groups/IGroupCustomize.ts b/apps/frontend/src/api/groups/IGroupCustomize.ts index 44fc4ff..8fc4b95 100644 --- a/apps/frontend/src/api/groups/IGroupCustomize.ts +++ b/apps/frontend/src/api/groups/IGroupCustomize.ts @@ -1,8 +1,7 @@ -export interface IGroupCustomize -{ - badgeBases: { id: number, images: string[] }[]; - badgeSymbols: { id: number, images: string[] }[]; - badgePartColors: { id: number, color: string }[]; - groupColorsA: { id: number, color: string }[]; - groupColorsB: { id: number, color: string }[]; +export interface IGroupCustomize { + badgeBases: {id: number; images: string[]}[]; + badgeSymbols: {id: number; images: string[]}[]; + badgePartColors: {id: number; color: string}[]; + groupColorsA: {id: number; color: string}[]; + groupColorsB: {id: number; color: string}[]; } diff --git a/apps/frontend/src/api/groups/IGroupData.ts b/apps/frontend/src/api/groups/IGroupData.ts index bb65b49..c570bf4 100644 --- a/apps/frontend/src/api/groups/IGroupData.ts +++ b/apps/frontend/src/api/groups/IGroupData.ts @@ -1,13 +1,12 @@ -import { GroupBadgePart } from './GroupBadgePart'; +import {GroupBadgePart} from "./GroupBadgePart"; -export interface IGroupData -{ - groupId: number; - groupName: string; - groupDescription: string; - groupHomeroomId: number; - groupState: number; - groupCanMembersDecorate: boolean; - groupColors: number[]; - groupBadgeParts: GroupBadgePart[]; +export interface IGroupData { + groupId: number; + groupName: string; + groupDescription: string; + groupHomeroomId: number; + groupState: number; + groupCanMembersDecorate: boolean; + groupColors: number[]; + groupBadgeParts: GroupBadgePart[]; } diff --git a/apps/frontend/src/api/groups/ToggleFavoriteGroup.ts b/apps/frontend/src/api/groups/ToggleFavoriteGroup.ts index 1093fcd..0504638 100644 --- a/apps/frontend/src/api/groups/ToggleFavoriteGroup.ts +++ b/apps/frontend/src/api/groups/ToggleFavoriteGroup.ts @@ -1,7 +1,7 @@ -import { GroupFavoriteComposer, GroupUnfavoriteComposer, HabboGroupEntryData } from '@nitro/renderer'; -import { SendMessageComposer } from '..'; +import {GroupFavoriteComposer, GroupUnfavoriteComposer, HabboGroupEntryData} from "@nitro/renderer"; -export const ToggleFavoriteGroup = (group: HabboGroupEntryData) => -{ - SendMessageComposer(group.favourite ? new GroupUnfavoriteComposer(group.groupId) : new GroupFavoriteComposer(group.groupId)); -} +import {SendMessageComposer} from ".."; + +export const ToggleFavoriteGroup = (group: HabboGroupEntryData) => { + SendMessageComposer(group.favourite ? new GroupUnfavoriteComposer(group.groupId) : new GroupFavoriteComposer(group.groupId)); +}; diff --git a/apps/frontend/src/api/groups/TryJoinGroup.ts b/apps/frontend/src/api/groups/TryJoinGroup.ts index 8684635..82e5d38 100644 --- a/apps/frontend/src/api/groups/TryJoinGroup.ts +++ b/apps/frontend/src/api/groups/TryJoinGroup.ts @@ -1,4 +1,5 @@ -import { GroupJoinComposer } from '@nitro/renderer'; -import { SendMessageComposer } from '..'; +import {GroupJoinComposer} from "@nitro/renderer"; + +import {SendMessageComposer} from ".."; export const TryJoinGroup = (groupId: number) => SendMessageComposer(new GroupJoinComposer(groupId)); diff --git a/apps/frontend/src/api/groups/index.ts b/apps/frontend/src/api/groups/index.ts index 4842948..f411681 100644 --- a/apps/frontend/src/api/groups/index.ts +++ b/apps/frontend/src/api/groups/index.ts @@ -1,10 +1,10 @@ -export * from './GetGroupInformation'; -export * from './GetGroupManager'; -export * from './GetGroupMembers'; -export * from './GroupBadgePart'; -export * from './GroupMembershipType'; -export * from './GroupType'; -export * from './IGroupCustomize'; -export * from './IGroupData'; -export * from './ToggleFavoriteGroup'; -export * from './TryJoinGroup'; +export * from "./GetGroupInformation"; +export * from "./GetGroupManager"; +export * from "./GetGroupMembers"; +export * from "./GroupBadgePart"; +export * from "./GroupMembershipType"; +export * from "./GroupType"; +export * from "./IGroupCustomize"; +export * from "./IGroupData"; +export * from "./ToggleFavoriteGroup"; +export * from "./TryJoinGroup"; diff --git a/apps/frontend/src/api/guide-tool/GuideSessionState.ts b/apps/frontend/src/api/guide-tool/GuideSessionState.ts index c5e24f3..a9e484b 100644 --- a/apps/frontend/src/api/guide-tool/GuideSessionState.ts +++ b/apps/frontend/src/api/guide-tool/GuideSessionState.ts @@ -1,23 +1,22 @@ -export class GuideSessionState -{ - public static readonly NONE: string = 'NONE'; - public static readonly ERROR: string = 'ERROR'; - public static readonly REJECTED: string = 'REJECTED'; - public static readonly USER_CREATE: string = 'USER_CREATE'; - public static readonly USER_PENDING: string = 'USER_PENDING'; - public static readonly USER_ONGOING: string = 'USER_ONGOING'; - public static readonly USER_FEEDBACK: string = 'USER_FEEDBACK'; - public static readonly USER_NO_HELPERS: string = 'USER_NO_HELPERS'; - public static readonly USER_SOMETHING_WRONG: string = 'USER_SOMETHING_WRONG'; - public static readonly USER_THANKS: string = 'USER_THANKS'; - public static readonly USER_GUIDE_DISCONNECTED: string = 'USER_GUIDE_DISCONNECTED'; - public static readonly GUIDE_TOOL_MENU: string = 'GUIDE_TOOL_MENU'; - public static readonly GUIDE_ACCEPT: string = 'GUIDE_ACCEPT'; - public static readonly GUIDE_ONGOING: string = 'GUIDE_ONGOING'; - public static readonly GUIDE_CLOSED: string = 'GUIDE_CLOSED'; - public static readonly GUARDIAN_CHAT_REVIEW_ACCEPT: string = 'GUARDIAN_CHAT_REVIEW_ACCEPT'; - public static readonly GUARDIAN_CHAT_REVIEW_WAIT_FOR_VOTERS: string = 'GUARDIAN_CHAT_REVIEW_WAIT_FOR_VOTERS'; - public static readonly GUARDIAN_CHAT_REVIEW_VOTE: string = 'GUARDIAN_CHAT_REVIEW_VOTE'; - public static readonly GUARDIAN_CHAT_REVIEW_WAIT_FOR_RESULTS: string = 'GUARDIAN_CHAT_REVIEW_WAIT_FOR_RESULTS'; - public static readonly GUARDIAN_CHAT_REVIEW_RESULTS: string = 'GUARDIAN_CHAT_REVIEW_RESULTS'; +export class GuideSessionState { + public static readonly NONE: string = "NONE"; + public static readonly ERROR: string = "ERROR"; + public static readonly REJECTED: string = "REJECTED"; + public static readonly USER_CREATE: string = "USER_CREATE"; + public static readonly USER_PENDING: string = "USER_PENDING"; + public static readonly USER_ONGOING: string = "USER_ONGOING"; + public static readonly USER_FEEDBACK: string = "USER_FEEDBACK"; + public static readonly USER_NO_HELPERS: string = "USER_NO_HELPERS"; + public static readonly USER_SOMETHING_WRONG: string = "USER_SOMETHING_WRONG"; + public static readonly USER_THANKS: string = "USER_THANKS"; + public static readonly USER_GUIDE_DISCONNECTED: string = "USER_GUIDE_DISCONNECTED"; + public static readonly GUIDE_TOOL_MENU: string = "GUIDE_TOOL_MENU"; + public static readonly GUIDE_ACCEPT: string = "GUIDE_ACCEPT"; + public static readonly GUIDE_ONGOING: string = "GUIDE_ONGOING"; + public static readonly GUIDE_CLOSED: string = "GUIDE_CLOSED"; + public static readonly GUARDIAN_CHAT_REVIEW_ACCEPT: string = "GUARDIAN_CHAT_REVIEW_ACCEPT"; + public static readonly GUARDIAN_CHAT_REVIEW_WAIT_FOR_VOTERS: string = "GUARDIAN_CHAT_REVIEW_WAIT_FOR_VOTERS"; + public static readonly GUARDIAN_CHAT_REVIEW_VOTE: string = "GUARDIAN_CHAT_REVIEW_VOTE"; + public static readonly GUARDIAN_CHAT_REVIEW_WAIT_FOR_RESULTS: string = "GUARDIAN_CHAT_REVIEW_WAIT_FOR_RESULTS"; + public static readonly GUARDIAN_CHAT_REVIEW_RESULTS: string = "GUARDIAN_CHAT_REVIEW_RESULTS"; } diff --git a/apps/frontend/src/api/guide-tool/GuideToolMessage.ts b/apps/frontend/src/api/guide-tool/GuideToolMessage.ts index 3810726..eee9318 100644 --- a/apps/frontend/src/api/guide-tool/GuideToolMessage.ts +++ b/apps/frontend/src/api/guide-tool/GuideToolMessage.ts @@ -1,21 +1,17 @@ -export class GuideToolMessage -{ - private _message: string; - private _roomId: number; - - constructor(message: string, roomId?: number) - { - this._message = message; - this._roomId = roomId; - } +export class GuideToolMessage { + private _message: string; + private _roomId: number; - public get message(): string - { - return this._message; - } + constructor(message: string, roomId?: number) { + this._message = message; + this._roomId = roomId; + } - public get roomId(): number - { - return this._roomId; - } + public get message(): string { + return this._message; + } + + public get roomId(): number { + return this._roomId; + } } diff --git a/apps/frontend/src/api/guide-tool/GuideToolMessageGroup.ts b/apps/frontend/src/api/guide-tool/GuideToolMessageGroup.ts index bf03c9b..d4a4350 100644 --- a/apps/frontend/src/api/guide-tool/GuideToolMessageGroup.ts +++ b/apps/frontend/src/api/guide-tool/GuideToolMessageGroup.ts @@ -1,28 +1,23 @@ -import { GuideToolMessage } from './GuideToolMessage'; +import {GuideToolMessage} from "./GuideToolMessage"; -export class GuideToolMessageGroup -{ - private _userId: number; - private _messages: GuideToolMessage[]; +export class GuideToolMessageGroup { + private _userId: number; + private _messages: GuideToolMessage[]; - constructor(userId: number) - { - this._userId = userId; - this._messages = []; - } + constructor(userId: number) { + this._userId = userId; + this._messages = []; + } - public addChat(message: GuideToolMessage): void - { - this._messages.push(message); - } + public addChat(message: GuideToolMessage): void { + this._messages.push(message); + } - public get userId(): number - { - return this._userId; - } + public get userId(): number { + return this._userId; + } - public get messages(): GuideToolMessage[] - { - return this._messages; - } + public get messages(): GuideToolMessage[] { + return this._messages; + } } diff --git a/apps/frontend/src/api/guide-tool/index.ts b/apps/frontend/src/api/guide-tool/index.ts index 1400adc..0ad92c9 100644 --- a/apps/frontend/src/api/guide-tool/index.ts +++ b/apps/frontend/src/api/guide-tool/index.ts @@ -1,3 +1,3 @@ -export * from './GuideSessionState'; -export * from './GuideToolMessage'; -export * from './GuideToolMessageGroup'; +export * from "./GuideSessionState"; +export * from "./GuideToolMessage"; +export * from "./GuideToolMessageGroup"; diff --git a/apps/frontend/src/api/hc-center/ClubStatus.ts b/apps/frontend/src/api/hc-center/ClubStatus.ts index 8200b14..a1dbb10 100644 --- a/apps/frontend/src/api/hc-center/ClubStatus.ts +++ b/apps/frontend/src/api/hc-center/ClubStatus.ts @@ -1,6 +1,5 @@ -export class ClubStatus -{ - public static ACTIVE: string = 'active'; - public static NONE: string = 'none'; - public static EXPIRED: string = 'expired'; +export class ClubStatus { + public static ACTIVE: string = "active"; + public static NONE: string = "none"; + public static EXPIRED: string = "expired"; } diff --git a/apps/frontend/src/api/hc-center/GetClubBadge.ts b/apps/frontend/src/api/hc-center/GetClubBadge.ts index 6b779e0..9d9ddaf 100644 --- a/apps/frontend/src/api/hc-center/GetClubBadge.ts +++ b/apps/frontend/src/api/hc-center/GetClubBadge.ts @@ -1,11 +1,10 @@ -const DEFAULT_BADGE: string = 'HC1'; -const BADGES: string[] = [ 'ACH_VipHC1', 'ACH_VipHC2', 'ACH_VipHC3', 'ACH_VipHC4', 'ACH_VipHC5', 'HC1', 'HC2', 'HC3', 'HC4', 'HC5' ]; +const DEFAULT_BADGE: string = "HC1"; +const BADGES: string[] = ["ACH_VipHC1", "ACH_VipHC2", "ACH_VipHC3", "ACH_VipHC4", "ACH_VipHC5", "HC1", "HC2", "HC3", "HC4", "HC5"]; -export const GetClubBadge = (badgeCodes: string[]) => -{ - let badgeCode: string = null; +export const GetClubBadge = (badgeCodes: string[]) => { + let badgeCode: string = null; - BADGES.forEach(badge => ((badgeCodes.indexOf(badge) > -1) && (badgeCode = badge))); + BADGES.forEach(badge => badgeCodes.indexOf(badge) > -1 && (badgeCode = badge)); - return (badgeCode || DEFAULT_BADGE); -} + return badgeCode || DEFAULT_BADGE; +}; diff --git a/apps/frontend/src/api/hc-center/index.ts b/apps/frontend/src/api/hc-center/index.ts index cee8f69..2702a7f 100644 --- a/apps/frontend/src/api/hc-center/index.ts +++ b/apps/frontend/src/api/hc-center/index.ts @@ -1,2 +1,2 @@ -export * from './ClubStatus'; -export * from './GetClubBadge'; +export * from "./ClubStatus"; +export * from "./GetClubBadge"; diff --git a/apps/frontend/src/api/help/CallForHelpResult.ts b/apps/frontend/src/api/help/CallForHelpResult.ts index 37e7ea1..27e2de2 100644 --- a/apps/frontend/src/api/help/CallForHelpResult.ts +++ b/apps/frontend/src/api/help/CallForHelpResult.ts @@ -1,5 +1,4 @@ -export class CallForHelpResult -{ - public static readonly TOO_MANY_PENDING_CALLS_CODE = 1; - public static readonly HAS_ABUSIVE_CALL_CODE = 2; +export class CallForHelpResult { + public static readonly TOO_MANY_PENDING_CALLS_CODE = 1; + public static readonly HAS_ABUSIVE_CALL_CODE = 2; } diff --git a/apps/frontend/src/api/help/GetCloseReasonKey.ts b/apps/frontend/src/api/help/GetCloseReasonKey.ts index 520d14f..0284de7 100644 --- a/apps/frontend/src/api/help/GetCloseReasonKey.ts +++ b/apps/frontend/src/api/help/GetCloseReasonKey.ts @@ -1,8 +1,7 @@ -export const GetCloseReasonKey = (code: number) => -{ - if(code === 1) return 'useless'; +export const GetCloseReasonKey = (code: number) => { + if (code === 1) return "useless"; - if(code === 2) return 'abusive'; + if (code === 2) return "abusive"; - return 'resolved'; -} + return "resolved"; +}; diff --git a/apps/frontend/src/api/help/IHelpReport.ts b/apps/frontend/src/api/help/IHelpReport.ts index 8611707..e03e056 100644 --- a/apps/frontend/src/api/help/IHelpReport.ts +++ b/apps/frontend/src/api/help/IHelpReport.ts @@ -1,19 +1,18 @@ -import { IChatEntry } from '../chat-history'; +import {IChatEntry} from "../chat-history"; -export interface IHelpReport -{ - reportType: number; - reportedUserId: number; - reportedChats: IChatEntry[]; - cfhCategory: number; - cfhTopic: number; - roomId: number; - roomName: string; - groupId: number; - threadId: number; - messageId: number; - extraData: string; - roomObjectId: number; - message: string; - currentStep: number; +export interface IHelpReport { + reportType: number; + reportedUserId: number; + reportedChats: IChatEntry[]; + cfhCategory: number; + cfhTopic: number; + roomId: number; + roomName: string; + groupId: number; + threadId: number; + messageId: number; + extraData: string; + roomObjectId: number; + message: string; + currentStep: number; } diff --git a/apps/frontend/src/api/help/IReportedUser.ts b/apps/frontend/src/api/help/IReportedUser.ts index 90a3887..4ad7cad 100644 --- a/apps/frontend/src/api/help/IReportedUser.ts +++ b/apps/frontend/src/api/help/IReportedUser.ts @@ -1,5 +1,4 @@ -export interface IReportedUser -{ - id: number; - username: string; +export interface IReportedUser { + id: number; + username: string; } diff --git a/apps/frontend/src/api/help/ReportState.ts b/apps/frontend/src/api/help/ReportState.ts index ae3a3bd..071e833 100644 --- a/apps/frontend/src/api/help/ReportState.ts +++ b/apps/frontend/src/api/help/ReportState.ts @@ -1,8 +1,7 @@ -export class ReportState -{ - public static readonly SELECT_USER = 0; - public static readonly SELECT_CHATS = 1; - public static readonly SELECT_TOPICS = 2; - public static readonly INPUT_REPORT_MESSAGE = 3; - public static readonly REPORT_SUMMARY = 4; +export class ReportState { + public static readonly SELECT_USER = 0; + public static readonly SELECT_CHATS = 1; + public static readonly SELECT_TOPICS = 2; + public static readonly INPUT_REPORT_MESSAGE = 3; + public static readonly REPORT_SUMMARY = 4; } diff --git a/apps/frontend/src/api/help/ReportType.ts b/apps/frontend/src/api/help/ReportType.ts index 24eb7ae..d59fc50 100644 --- a/apps/frontend/src/api/help/ReportType.ts +++ b/apps/frontend/src/api/help/ReportType.ts @@ -1,11 +1,10 @@ -export class ReportType -{ - public static readonly EMERGENCY = 1; - public static readonly GUIDE = 2; - public static readonly IM = 3; - public static readonly ROOM = 4; - public static readonly BULLY = 6; - public static readonly THREAD = 7; - public static readonly MESSAGE = 8; - public static readonly PHOTO = 9; +export class ReportType { + public static readonly EMERGENCY = 1; + public static readonly GUIDE = 2; + public static readonly IM = 3; + public static readonly ROOM = 4; + public static readonly BULLY = 6; + public static readonly THREAD = 7; + public static readonly MESSAGE = 8; + public static readonly PHOTO = 9; } diff --git a/apps/frontend/src/api/help/index.ts b/apps/frontend/src/api/help/index.ts index 6fa2045..6fa7516 100644 --- a/apps/frontend/src/api/help/index.ts +++ b/apps/frontend/src/api/help/index.ts @@ -1,6 +1,6 @@ -export * from './CallForHelpResult'; -export * from './GetCloseReasonKey'; -export * from './IHelpReport'; -export * from './IReportedUser'; -export * from './ReportState'; -export * from './ReportType'; +export * from "./CallForHelpResult"; +export * from "./GetCloseReasonKey"; +export * from "./IHelpReport"; +export * from "./IReportedUser"; +export * from "./ReportState"; +export * from "./ReportType"; diff --git a/apps/frontend/src/api/index.ts b/apps/frontend/src/api/index.ts index af96444..8471719 100644 --- a/apps/frontend/src/api/index.ts +++ b/apps/frontend/src/api/index.ts @@ -1,29 +1,29 @@ -export * from './achievements'; -export * from './avatar'; -export * from './camera'; -export * from './campaign'; -export * from './catalog'; -export * from './chat-history'; -export * from './events'; -export * from './friends'; -export * from './GetRendererVersion'; -export * from './GetUIVersion'; -export * from './groups'; -export * from './guide-tool'; -export * from './hc-center'; -export * from './help'; -export * from './inventory'; -export * from './mod-tools'; -export * from './navigator'; -export * from './nitro'; -export * from './nitro/avatar'; -export * from './nitro/camera'; -export * from './nitro/core'; -export * from './nitro/room'; -export * from './nitro/session'; -export * from './notification'; -export * from './purse'; -export * from './room'; -export * from './user'; -export * from './utils'; -export * from './wired'; +export * from "./achievements"; +export * from "./avatar"; +export * from "./camera"; +export * from "./campaign"; +export * from "./catalog"; +export * from "./chat-history"; +export * from "./events"; +export * from "./friends"; +export * from "./GetRendererVersion"; +export * from "./GetUIVersion"; +export * from "./groups"; +export * from "./guide-tool"; +export * from "./hc-center"; +export * from "./help"; +export * from "./inventory"; +export * from "./mod-tools"; +export * from "./navigator"; +export * from "./nitro"; +export * from "./nitro/avatar"; +export * from "./nitro/camera"; +export * from "./nitro/core"; +export * from "./nitro/room"; +export * from "./nitro/session"; +export * from "./notification"; +export * from "./purse"; +export * from "./room"; +export * from "./user"; +export * from "./utils"; +export * from "./wired"; diff --git a/apps/frontend/src/api/inventory/FurniCategory.ts b/apps/frontend/src/api/inventory/FurniCategory.ts index 6528947..a35c3b1 100644 --- a/apps/frontend/src/api/inventory/FurniCategory.ts +++ b/apps/frontend/src/api/inventory/FurniCategory.ts @@ -1,26 +1,25 @@ -export class FurniCategory -{ - public static DEFAULT: number = 1; - public static WALL_PAPER: number = 2; - public static FLOOR: number = 3; - public static LANDSCAPE: number = 4; - public static POST_IT: number = 5; - public static POSTER: number = 6; - public static SOUND_SET: number = 7; - public static TRAX_SONG: number = 8; - public static PRESENT: number = 9; - public static ECOTRON_BOX: number = 10; - public static TROPHY: number = 11; - public static CREDIT_FURNI: number = 12; - public static PET_SHAMPOO: number = 13; - public static PET_CUSTOM_PART: number = 14; - public static PET_CUSTOM_PART_SHAMPOO: number = 15; - public static PET_SADDLE: number = 16; - public static GUILD_FURNI: number = 17; - public static GAME_FURNI: number = 18; - public static MONSTERPLANT_SEED: number = 19; - public static MONSTERPLANT_REVIVAL: number = 20; - public static MONSTERPLANT_REBREED: number = 21; - public static MONSTERPLANT_FERTILIZE: number = 22; - public static FIGURE_PURCHASABLE_SET: number = 23; +export class FurniCategory { + public static DEFAULT: number = 1; + public static WALL_PAPER: number = 2; + public static FLOOR: number = 3; + public static LANDSCAPE: number = 4; + public static POST_IT: number = 5; + public static POSTER: number = 6; + public static SOUND_SET: number = 7; + public static TRAX_SONG: number = 8; + public static PRESENT: number = 9; + public static ECOTRON_BOX: number = 10; + public static TROPHY: number = 11; + public static CREDIT_FURNI: number = 12; + public static PET_SHAMPOO: number = 13; + public static PET_CUSTOM_PART: number = 14; + public static PET_CUSTOM_PART_SHAMPOO: number = 15; + public static PET_SADDLE: number = 16; + public static GUILD_FURNI: number = 17; + public static GAME_FURNI: number = 18; + public static MONSTERPLANT_SEED: number = 19; + public static MONSTERPLANT_REVIVAL: number = 20; + public static MONSTERPLANT_REBREED: number = 21; + public static MONSTERPLANT_FERTILIZE: number = 22; + public static FIGURE_PURCHASABLE_SET: number = 23; } diff --git a/apps/frontend/src/api/inventory/FurnitureItem.ts b/apps/frontend/src/api/inventory/FurnitureItem.ts index 5ce2a44..e8936a9 100644 --- a/apps/frontend/src/api/inventory/FurnitureItem.ts +++ b/apps/frontend/src/api/inventory/FurnitureItem.ts @@ -1,245 +1,215 @@ -import { GetTickerTime, IFurnitureItemData, IObjectData } from '@nitro/renderer'; -import { IFurnitureItem } from './IFurnitureItem'; +import {GetTickerTime, IFurnitureItemData, IObjectData} from "@nitro/renderer"; -export class FurnitureItem implements IFurnitureItem -{ - private _expirationTimeStamp: number; - private _isWallItem: boolean; - private _songId: number; - private _locked: boolean; - private _id: number; - private _ref: number; - private _category: number; - private _type: number; - private _stuffData: IObjectData; - private _extra: number; - private _recyclable: boolean; - private _tradeable: boolean; - private _groupable: boolean; - private _sellable: boolean; - private _secondsToExpiration: number; - private _hasRentPeriodStarted: boolean; - private _creationDay: number; - private _creationMonth: number; - private _creationYear: number; - private _slotId: string; - private _isRented: boolean; - private _flatId: number; +import {IFurnitureItem} from "./IFurnitureItem"; - constructor(parser: IFurnitureItemData) - { - if(!parser) return; - - this._locked = false; - this._id = parser.itemId; - this._type = parser.spriteId; - this._ref = parser.ref; - this._category = parser.category; - this._groupable = ((parser.isGroupable) && (!(parser.rentable))); - this._tradeable = parser.tradable; - this._recyclable = parser.isRecycleable; - this._sellable = parser.sellable; - this._stuffData = parser.stuffData; - this._extra = parser.extra; - this._secondsToExpiration = parser.secondsToExpiration; - this._expirationTimeStamp = parser.expirationTimeStamp; - this._hasRentPeriodStarted = parser.hasRentPeriodStarted; - this._creationDay = parser.creationDay; - this._creationMonth = parser.creationMonth; - this._creationYear = parser.creationYear; - this._slotId = parser.slotId; - this._songId = parser.songId; - this._flatId = parser.flatId; - this._isRented = parser.rentable; - this._isWallItem = parser.isWallItem; +export class FurnitureItem implements IFurnitureItem { + private _expirationTimeStamp: number; + private _isWallItem: boolean; + private _songId: number; + private _locked: boolean; + private _id: number; + private _ref: number; + private _category: number; + private _type: number; + private _stuffData: IObjectData; + private _extra: number; + private _recyclable: boolean; + private _tradeable: boolean; + private _groupable: boolean; + private _sellable: boolean; + private _secondsToExpiration: number; + private _hasRentPeriodStarted: boolean; + private _creationDay: number; + private _creationMonth: number; + private _creationYear: number; + private _slotId: string; + private _isRented: boolean; + private _flatId: number; + + constructor(parser: IFurnitureItemData) { + if (!parser) return; + + this._locked = false; + this._id = parser.itemId; + this._type = parser.spriteId; + this._ref = parser.ref; + this._category = parser.category; + this._groupable = parser.isGroupable && !parser.rentable; + this._tradeable = parser.tradable; + this._recyclable = parser.isRecycleable; + this._sellable = parser.sellable; + this._stuffData = parser.stuffData; + this._extra = parser.extra; + this._secondsToExpiration = parser.secondsToExpiration; + this._expirationTimeStamp = parser.expirationTimeStamp; + this._hasRentPeriodStarted = parser.hasRentPeriodStarted; + this._creationDay = parser.creationDay; + this._creationMonth = parser.creationMonth; + this._creationYear = parser.creationYear; + this._slotId = parser.slotId; + this._songId = parser.songId; + this._flatId = parser.flatId; + this._isRented = parser.rentable; + this._isWallItem = parser.isWallItem; + } + + public get rentable(): boolean { + return this._isRented; + } + + public get id(): number { + return this._id; + } + + public get ref(): number { + return this._ref; + } + + public get category(): number { + return this._category; + } + + public get type(): number { + return this._type; + } + + public get stuffData(): IObjectData { + return this._stuffData; + } + + public set stuffData(k: IObjectData) { + this._stuffData = k; + } + + public get extra(): number { + return this._extra; + } + + public get recyclable(): boolean { + return this._recyclable; + } + + public get isTradable(): boolean { + return this._tradeable; + } + + public get isGroupable(): boolean { + return this._groupable; + } + + public get sellable(): boolean { + return this._sellable; + } + + public get secondsToExpiration(): number { + if (this._secondsToExpiration === -1) return -1; + + let time = -1; + + if (this._hasRentPeriodStarted) { + time = this._secondsToExpiration - (GetTickerTime() - this._expirationTimeStamp) / 1000; + + if (time < 0) time = 0; + } else { + time = this._secondsToExpiration; } - public get rentable(): boolean - { - return this._isRented; - } + return time; + } - public get id(): number - { - return this._id; - } + public get creationDay(): number { + return this._creationDay; + } - public get ref(): number - { - return this._ref; - } + public get creationMonth(): number { + return this._creationMonth; + } - public get category(): number - { - return this._category; - } + public get creationYear(): number { + return this._creationYear; + } - public get type(): number - { - return this._type; - } + public get slotId(): string { + return this._slotId; + } - public get stuffData(): IObjectData - { - return this._stuffData; - } + public get songId(): number { + return this._songId; + } - public set stuffData(k: IObjectData) - { - this._stuffData = k; - } + public get locked(): boolean { + return this._locked; + } - public get extra(): number - { - return this._extra; - } + public set locked(k: boolean) { + this._locked = k; + } - public get recyclable(): boolean - { - return this._recyclable; - } + public get flatId(): number { + return this._flatId; + } - public get isTradable(): boolean - { - return this._tradeable; - } + public get isWallItem(): boolean { + return this._isWallItem; + } - public get isGroupable(): boolean - { - return this._groupable; - } + public get hasRentPeriodStarted(): boolean { + return this._hasRentPeriodStarted; + } - public get sellable(): boolean - { - return this._sellable; - } + public get expirationTimeStamp(): number { + return this._expirationTimeStamp; + } - public get secondsToExpiration(): number - { - if(this._secondsToExpiration === -1) return -1; + public update(parser: IFurnitureItemData): void { + this._type = parser.spriteId; + this._ref = parser.ref; + this._category = parser.category; + this._groupable = parser.isGroupable && !parser.rentable; + this._tradeable = parser.tradable; + this._recyclable = parser.isRecycleable; + this._sellable = parser.sellable; + this._stuffData = parser.stuffData; + this._extra = parser.extra; + this._secondsToExpiration = parser.secondsToExpiration; + this._expirationTimeStamp = parser.expirationTimeStamp; + this._hasRentPeriodStarted = parser.hasRentPeriodStarted; + this._creationDay = parser.creationDay; + this._creationMonth = parser.creationMonth; + this._creationYear = parser.creationYear; + this._slotId = parser.slotId; + this._songId = parser.songId; + this._flatId = parser.flatId; + this._isRented = parser.rentable; + this._isWallItem = parser.isWallItem; + } - let time = -1; + public clone(): FurnitureItem { + const item = new FurnitureItem(null); - if(this._hasRentPeriodStarted) - { - time = (this._secondsToExpiration - ((GetTickerTime() - this._expirationTimeStamp) / 1000)); + item._expirationTimeStamp = this._expirationTimeStamp; + item._isWallItem = this._isWallItem; + item._songId = this._songId; + item._locked = this._locked; + item._id = this._id; + item._ref = this._ref; + item._category = this._category; + item._type = this._type; + item._stuffData = this._stuffData; + item._extra = this._extra; + item._recyclable = this._recyclable; + item._tradeable = this._tradeable; + item._groupable = this._groupable; + item._sellable = this._sellable; + item._secondsToExpiration = this._secondsToExpiration; + item._hasRentPeriodStarted = this._hasRentPeriodStarted; + item._creationDay = this._creationDay; + item._creationMonth = this._creationMonth; + item._creationYear = this._creationYear; + item._slotId = this._slotId; + item._isRented = this._isRented; + item._flatId = this._flatId; - if(time < 0) time = 0; - } - else - { - time = this._secondsToExpiration; - } - - return time; - } - - public get creationDay(): number - { - return this._creationDay; - } - - public get creationMonth(): number - { - return this._creationMonth; - } - - public get creationYear(): number - { - return this._creationYear; - } - - public get slotId(): string - { - return this._slotId; - } - - public get songId(): number - { - return this._songId; - } - - public get locked(): boolean - { - return this._locked; - } - - public set locked(k: boolean) - { - this._locked = k; - } - - public get flatId(): number - { - return this._flatId; - } - - public get isWallItem(): boolean - { - return this._isWallItem; - } - - public get hasRentPeriodStarted(): boolean - { - return this._hasRentPeriodStarted; - } - - public get expirationTimeStamp(): number - { - return this._expirationTimeStamp; - } - - public update(parser: IFurnitureItemData): void - { - this._type = parser.spriteId; - this._ref = parser.ref; - this._category = parser.category; - this._groupable = (parser.isGroupable && !parser.rentable); - this._tradeable = parser.tradable; - this._recyclable = parser.isRecycleable; - this._sellable = parser.sellable; - this._stuffData = parser.stuffData; - this._extra = parser.extra; - this._secondsToExpiration = parser.secondsToExpiration; - this._expirationTimeStamp = parser.expirationTimeStamp; - this._hasRentPeriodStarted = parser.hasRentPeriodStarted; - this._creationDay = parser.creationDay; - this._creationMonth = parser.creationMonth; - this._creationYear = parser.creationYear; - this._slotId = parser.slotId; - this._songId = parser.songId; - this._flatId = parser.flatId; - this._isRented = parser.rentable; - this._isWallItem = parser.isWallItem; - } - - public clone(): FurnitureItem - { - const item = new FurnitureItem(null); - - item._expirationTimeStamp = this._expirationTimeStamp; - item._isWallItem = this._isWallItem; - item._songId = this._songId; - item._locked = this._locked; - item._id = this._id; - item._ref = this._ref; - item._category = this._category; - item._type = this._type; - item._stuffData = this._stuffData; - item._extra = this._extra; - item._recyclable = this._recyclable; - item._tradeable = this._tradeable; - item._groupable = this._groupable; - item._sellable = this._sellable; - item._secondsToExpiration = this._secondsToExpiration; - item._hasRentPeriodStarted = this._hasRentPeriodStarted; - item._creationDay = this._creationDay; - item._creationMonth = this._creationMonth; - item._creationYear = this._creationYear; - item._slotId = this._slotId; - item._isRented = this._isRented; - item._flatId = this._flatId; - - return item; - } + return item; + } } diff --git a/apps/frontend/src/api/inventory/FurnitureUtilities.ts b/apps/frontend/src/api/inventory/FurnitureUtilities.ts index 9702022..f4c7c99 100644 --- a/apps/frontend/src/api/inventory/FurnitureUtilities.ts +++ b/apps/frontend/src/api/inventory/FurnitureUtilities.ts @@ -1,172 +1,146 @@ -import { FurnitureListItemParser, IObjectData } from '@nitro/renderer'; -import { GetRoomEngine } from '../nitro'; -import { FurniCategory } from './FurniCategory'; -import { FurnitureItem } from './FurnitureItem'; -import { GroupItem } from './GroupItem'; +import {FurnitureListItemParser, IObjectData} from "@nitro/renderer"; -export const createGroupItem = (type: number, category: number, stuffData: IObjectData, extra: number = NaN) => new GroupItem(type, category, GetRoomEngine(), stuffData, extra); +import {GetRoomEngine} from "../nitro"; +import {FurniCategory} from "./FurniCategory"; +import {FurnitureItem} from "./FurnitureItem"; +import {GroupItem} from "./GroupItem"; -const addSingleFurnitureItem = (set: GroupItem[], item: FurnitureItem, unseen: boolean) => -{ - const groupItems: GroupItem[] = []; +export const createGroupItem = (type: number, category: number, stuffData: IObjectData, extra: number = NaN) => + new GroupItem(type, category, GetRoomEngine(), stuffData, extra); - for(const groupItem of set) - { - if(groupItem.type === item.type) groupItems.push(groupItem); - } +const addSingleFurnitureItem = (set: GroupItem[], item: FurnitureItem, unseen: boolean) => { + const groupItems: GroupItem[] = []; - for(const groupItem of groupItems) - { - if(groupItem.getItemById(item.id)) return groupItem; - } + for (const groupItem of set) { + if (groupItem.type === item.type) groupItems.push(groupItem); + } - const groupItem = createGroupItem(item.type, item.category, item.stuffData, item.extra); + for (const groupItem of groupItems) { + if (groupItem.getItemById(item.id)) return groupItem; + } - groupItem.push(item); + const groupItem = createGroupItem(item.type, item.category, item.stuffData, item.extra); - if(unseen) - { - groupItem.hasUnseenItems = true; + groupItem.push(item); - set.unshift(groupItem); - } - else - { - set.push(groupItem); - } + if (unseen) { + groupItem.hasUnseenItems = true; - return groupItem; -} + set.unshift(groupItem); + } else { + set.push(groupItem); + } -const addGroupableFurnitureItem = (set: GroupItem[], item: FurnitureItem, unseen: boolean) => -{ - let existingGroup: GroupItem = null; + return groupItem; +}; - for(const groupItem of set) - { - if((groupItem.type === item.type) && (groupItem.isWallItem === item.isWallItem) && groupItem.isGroupable) - { - if(item.category === FurniCategory.POSTER) - { - if(groupItem.stuffData.getLegacyString() === item.stuffData.getLegacyString()) - { - existingGroup = groupItem; +const addGroupableFurnitureItem = (set: GroupItem[], item: FurnitureItem, unseen: boolean) => { + let existingGroup: GroupItem = null; - break; - } - } + for (const groupItem of set) { + if (groupItem.type === item.type && groupItem.isWallItem === item.isWallItem && groupItem.isGroupable) { + if (item.category === FurniCategory.POSTER) { + if (groupItem.stuffData.getLegacyString() === item.stuffData.getLegacyString()) { + existingGroup = groupItem; - else if(item.category === FurniCategory.GUILD_FURNI) - { - if(item.stuffData.compare(groupItem.stuffData)) - { - existingGroup = groupItem; - - break; - } - } - - else - { - existingGroup = groupItem; - - break; - } + break; } - } + } else if (item.category === FurniCategory.GUILD_FURNI) { + if (item.stuffData.compare(groupItem.stuffData)) { + existingGroup = groupItem; - if(existingGroup) - { - existingGroup.push(item); - - if(unseen) - { - existingGroup.hasUnseenItems = true; - - const index = set.indexOf(existingGroup); - - if(index >= 0) set.splice(index, 1); - - set.unshift(existingGroup); + break; } + } else { + existingGroup = groupItem; - return existingGroup; + break; + } } + } - existingGroup = createGroupItem(item.type, item.category, item.stuffData, item.extra); - + if (existingGroup) { existingGroup.push(item); - if(unseen) - { - existingGroup.hasUnseenItems = true; + if (unseen) { + existingGroup.hasUnseenItems = true; - set.unshift(existingGroup); - } - else - { - set.push(existingGroup); + const index = set.indexOf(existingGroup); + + if (index >= 0) set.splice(index, 1); + + set.unshift(existingGroup); } return existingGroup; -} + } -export const addFurnitureItem = (set: GroupItem[], item: FurnitureItem, unseen: boolean) => -{ - if(!item.isGroupable) - { - addSingleFurnitureItem(set, item, unseen); + existingGroup = createGroupItem(item.type, item.category, item.stuffData, item.extra); + + existingGroup.push(item); + + if (unseen) { + existingGroup.hasUnseenItems = true; + + set.unshift(existingGroup); + } else { + set.push(existingGroup); + } + + return existingGroup; +}; + +export const addFurnitureItem = (set: GroupItem[], item: FurnitureItem, unseen: boolean) => { + if (!item.isGroupable) { + addSingleFurnitureItem(set, item, unseen); + } else { + addGroupableFurnitureItem(set, item, unseen); + } +}; + +export const mergeFurniFragments = ( + fragment: Map, + totalFragments: number, + fragmentNumber: number, + fragments: Map[] +) => { + if (totalFragments === 1) return fragment; + + fragments[fragmentNumber] = fragment; + + for (const frag of fragments) { + if (!frag) return null; + } + + const merged: Map = new Map(); + + for (const frag of fragments) { + for (const [key, value] of frag) merged.set(key, value); + + frag.clear(); + } + + fragments = null; + + return merged; +}; + +export const getAllItemIds = (groupItems: GroupItem[]) => { + const itemIds: number[] = []; + + for (const groupItem of groupItems) { + let totalCount = groupItem.getTotalCount(); + + if (groupItem.category === FurniCategory.POST_IT) totalCount = 1; + + let i = 0; + + while (i < totalCount) { + itemIds.push(groupItem.getItemByIndex(i).id); + + i++; } - else - { - addGroupableFurnitureItem(set, item, unseen); - } -} + } -export const mergeFurniFragments = (fragment: Map, totalFragments: number, fragmentNumber: number, fragments: Map[]) => -{ - if(totalFragments === 1) return fragment; - - fragments[fragmentNumber] = fragment; - - for(const frag of fragments) - { - if(!frag) return null; - } - - const merged: Map = new Map(); - - for(const frag of fragments) - { - for(const [ key, value ] of frag) merged.set(key, value); - - frag.clear(); - } - - fragments = null; - - return merged; -} - -export const getAllItemIds = (groupItems: GroupItem[]) => -{ - const itemIds: number[] = []; - - for(const groupItem of groupItems) - { - let totalCount = groupItem.getTotalCount(); - - if(groupItem.category === FurniCategory.POST_IT) totalCount = 1; - - let i = 0; - - while(i < totalCount) - { - itemIds.push(groupItem.getItemByIndex(i).id); - - i++; - } - } - - return itemIds; -} + return itemIds; +}; diff --git a/apps/frontend/src/api/inventory/GroupItem.ts b/apps/frontend/src/api/inventory/GroupItem.ts index a6d7a3c..3e8764d 100644 --- a/apps/frontend/src/api/inventory/GroupItem.ts +++ b/apps/frontend/src/api/inventory/GroupItem.ts @@ -1,461 +1,400 @@ -import { IObjectData, IRoomEngine } from '@nitro/renderer'; -import { LocalizeText } from '../utils'; -import { FurniCategory } from './FurniCategory'; -import { FurnitureItem } from './FurnitureItem'; -import { IFurnitureItem } from './IFurnitureItem'; +import {IObjectData, IRoomEngine} from "@nitro/renderer"; -export class GroupItem -{ - private _type: number; - private _category: number; - private _roomEngine: IRoomEngine; - private _stuffData: IObjectData; - private _extra: number; - private _isWallItem: boolean; - private _iconUrl: string; - private _name: string; - private _description: string; - private _locked: boolean; - private _selected: boolean; - private _hasUnseenItems: boolean; - private _items: FurnitureItem[]; +import {LocalizeText} from "../utils"; +import {FurniCategory} from "./FurniCategory"; +import {FurnitureItem} from "./FurnitureItem"; +import {IFurnitureItem} from "./IFurnitureItem"; - constructor(type: number = -1, category: number = -1, roomEngine: IRoomEngine = null, stuffData: IObjectData = null, extra: number = -1) - { - this._type = type; - this._category = category; - this._roomEngine = roomEngine; - this._stuffData = stuffData; - this._extra = extra; - this._isWallItem = false; - this._iconUrl = null; - this._name = null; - this._description = null; - this._locked = false; - this._selected = false; - this._hasUnseenItems = false; - this._items = []; +export class GroupItem { + private _type: number; + private _category: number; + private _roomEngine: IRoomEngine; + private _stuffData: IObjectData; + private _extra: number; + private _isWallItem: boolean; + private _iconUrl: string; + private _name: string; + private _description: string; + private _locked: boolean; + private _selected: boolean; + private _hasUnseenItems: boolean; + private _items: FurnitureItem[]; + + constructor(type: number = -1, category: number = -1, roomEngine: IRoomEngine = null, stuffData: IObjectData = null, extra: number = -1) { + this._type = type; + this._category = category; + this._roomEngine = roomEngine; + this._stuffData = stuffData; + this._extra = extra; + this._isWallItem = false; + this._iconUrl = null; + this._name = null; + this._description = null; + this._locked = false; + this._selected = false; + this._hasUnseenItems = false; + this._items = []; + } + + public clone(): GroupItem { + const groupItem = new GroupItem(); + + groupItem._type = this._type; + groupItem._category = this._category; + groupItem._roomEngine = this._roomEngine; + groupItem._stuffData = this._stuffData; + groupItem._extra = this._extra; + groupItem._isWallItem = this._isWallItem; + groupItem._iconUrl = this._iconUrl; + groupItem._name = this._name; + groupItem._description = this._description; + groupItem._locked = this._locked; + groupItem._selected = this._selected; + groupItem._hasUnseenItems = this._hasUnseenItems; + groupItem._items = this._items; + + return groupItem; + } + + public prepareGroup(): void { + this.setIcon(); + this.setName(); + this.setDescription(); + } + + public dispose(): void {} + + public getItemByIndex(index: number): FurnitureItem { + return this._items[index]; + } + + public getItemById(id: number): FurnitureItem { + for (const item of this._items) { + if (item.id !== id) continue; + + return item; } - public clone(): GroupItem - { - const groupItem = new GroupItem(); + return null; + } - groupItem._type = this._type; - groupItem._category = this._category; - groupItem._roomEngine = this._roomEngine; - groupItem._stuffData = this._stuffData; - groupItem._extra = this._extra; - groupItem._isWallItem = this._isWallItem; - groupItem._iconUrl = this._iconUrl; - groupItem._name = this._name; - groupItem._description = this._description; - groupItem._locked = this._locked; - groupItem._selected = this._selected; - groupItem._hasUnseenItems = this._hasUnseenItems; - groupItem._items = this._items; + public getTradeItems(count: number): IFurnitureItem[] { + const items: IFurnitureItem[] = []; - return groupItem; - } + const furnitureItem = this.getLastItem(); - public prepareGroup(): void - { - this.setIcon(); - this.setName(); - this.setDescription(); - } + if (!furnitureItem) return items; - public dispose(): void - { + let found = 0; + let i = 0; - } + while (i < this._items.length) { + if (found >= count) break; - public getItemByIndex(index: number): FurnitureItem - { - return this._items[index]; - } - - public getItemById(id: number): FurnitureItem - { - for(const item of this._items) - { - if(item.id !== id) continue; - - return item; - } - - return null; - } - - public getTradeItems(count: number): IFurnitureItem[] - { - const items: IFurnitureItem[] = []; - - const furnitureItem = this.getLastItem(); - - if(!furnitureItem) return items; - - let found = 0; - let i = 0; - - while(i < this._items.length) - { - if(found >= count) break; - - const item = this.getItemByIndex(i); - - if(!item.locked && item.isTradable && (item.type === furnitureItem.type)) - { - items.push(item); - - found++; - } - - i++; - } - - return items; - } - - public push(item: FurnitureItem): void - { - const items = [ ...this._items ]; - - let index = 0; - - while(index < items.length) - { - let existingItem = items[index]; - - if(existingItem.id === item.id) - { - existingItem = existingItem.clone(); - - existingItem.locked = false; - - items.splice(index, 1); - - items.push(existingItem); - - this._items = items; - - return; - } - - index++; - } + const item = this.getItemByIndex(i); + if (!item.locked && item.isTradable && item.type === furnitureItem.type) { items.push(item); - this._items = items; + found++; + } - if(this._items.length === 1) this.prepareGroup(); + i++; } - public pop(): FurnitureItem - { - const items = [ ...this._items ]; + return items; + } - let item: FurnitureItem = null; + public push(item: FurnitureItem): void { + const items = [...this._items]; - if(items.length > 0) - { - const index = (items.length - 1); + let index = 0; - item = items[index]; + while (index < items.length) { + let existingItem = items[index]; - items.splice(index, 1); - } + if (existingItem.id === item.id) { + existingItem = existingItem.clone(); + + existingItem.locked = false; + + items.splice(index, 1); + + items.push(existingItem); this._items = items; - return item; + return; + } + + index++; } - public remove(k: number): FurnitureItem - { - const items = [ ...this._items ]; + items.push(item); - let index = 0; + this._items = items; - while(index < items.length) - { - let existingItem = items[index]; + if (this._items.length === 1) this.prepareGroup(); + } - if(existingItem.id === k) - { - items.splice(index, 1); + public pop(): FurnitureItem { + const items = [...this._items]; - this._items = items; + let item: FurnitureItem = null; - return existingItem; - } + if (items.length > 0) { + const index = items.length - 1; - index++; - } + item = items[index]; - return null; + items.splice(index, 1); } - public getTotalCount(): number - { - if(this._category === FurniCategory.POST_IT) - { - let count = 0; - let index = 0; + this._items = items; - while(index < this._items.length) - { - const item = this.getItemByIndex(index); + return item; + } - count = (count + parseInt(item.stuffData.getLegacyString())); + public remove(k: number): FurnitureItem { + const items = [...this._items]; - index++; - } + let index = 0; - return count; - } + while (index < items.length) { + let existingItem = items[index]; - return this._items.length; - } - - public getUnlockedCount(): number - { - if(this.category === FurniCategory.POST_IT) return this.getTotalCount(); - - let count = 0; - let index = 0; - - while(index < this._items.length) - { - const item = this.getItemByIndex(index); - - if(!item.locked) count++; - - index++; - } - - return count; - } - - public getLastItem(): FurnitureItem - { - if(!this._items.length) return null; - - const item = this.getItemByIndex((this._items.length - 1)); - - return item; - } - - public unlockAllItems(): void - { - const items = [ ...this._items ]; - - let index = 0; - - while(index < items.length) - { - const item = items[index]; - - if(item.locked) - { - const newItem = item.clone(); - - newItem.locked = false; - - items[index] = newItem; - } - - index++; - } - - this._items = items; - } - - public lockItemIds(itemIds: number[]): boolean - { - const items = [ ...this._items ]; - - let index = 0; - let updated = false; - - while(index < items.length) - { - const item = items[index]; - const locked = (itemIds.indexOf(item.ref) >= 0); - - if(item.locked !== locked) - { - updated = true; - - const newItem = item.clone(); - - newItem.locked = locked; - - items[index] = newItem; - } - - index++; - } + if (existingItem.id === k) { + items.splice(index, 1); this._items = items; - return updated; + return existingItem; + } + + index++; } - private setName(): void - { - const k = this.getLastItem(); + return null; + } - if(!k) - { - this._name = ''; + public getTotalCount(): number { + if (this._category === FurniCategory.POST_IT) { + let count = 0; + let index = 0; - return; + while (index < this._items.length) { + const item = this.getItemByIndex(index); + + count = count + parseInt(item.stuffData.getLegacyString()); + + index++; + } + + return count; + } + + return this._items.length; + } + + public getUnlockedCount(): number { + if (this.category === FurniCategory.POST_IT) return this.getTotalCount(); + + let count = 0; + let index = 0; + + while (index < this._items.length) { + const item = this.getItemByIndex(index); + + if (!item.locked) count++; + + index++; + } + + return count; + } + + public getLastItem(): FurnitureItem { + if (!this._items.length) return null; + + const item = this.getItemByIndex(this._items.length - 1); + + return item; + } + + public unlockAllItems(): void { + const items = [...this._items]; + + let index = 0; + + while (index < items.length) { + const item = items[index]; + + if (item.locked) { + const newItem = item.clone(); + + newItem.locked = false; + + items[index] = newItem; + } + + index++; + } + + this._items = items; + } + + public lockItemIds(itemIds: number[]): boolean { + const items = [...this._items]; + + let index = 0; + let updated = false; + + while (index < items.length) { + const item = items[index]; + const locked = itemIds.indexOf(item.ref) >= 0; + + if (item.locked !== locked) { + updated = true; + + const newItem = item.clone(); + + newItem.locked = locked; + + items[index] = newItem; + } + + index++; + } + + this._items = items; + + return updated; + } + + private setName(): void { + const k = this.getLastItem(); + + if (!k) { + this._name = ""; + + return; + } + + let key = ""; + + switch (this._category) { + case FurniCategory.POSTER: + key = "poster_" + k.stuffData.getLegacyString() + "_name"; + break; + case FurniCategory.TRAX_SONG: + this._name = "SONG_NAME"; + return; + default: + if (this.isWallItem) { + key = "wallItem.name." + k.type; + } else { + key = "roomItem.name." + k.type; } - - let key = ''; - - switch(this._category) - { - case FurniCategory.POSTER: - key = (('poster_' + k.stuffData.getLegacyString()) + '_name'); - break; - case FurniCategory.TRAX_SONG: - this._name = 'SONG_NAME'; - return; - default: - if(this.isWallItem) - { - key = ('wallItem.name.' + k.type); - } - else - { - key = ('roomItem.name.' + k.type); - } - } - - this._name = LocalizeText(key); } - private setDescription(): void - { - this._description = ''; + this._name = LocalizeText(key); + } + + private setDescription(): void { + this._description = ""; + } + + private setIcon(): void { + if (this._iconUrl) return; + + let url = null; + + if (this.isWallItem) { + url = this._roomEngine.getFurnitureWallIconUrl(this._type, this._stuffData.getLegacyString()); + } else { + url = this._roomEngine.getFurnitureFloorIconUrl(this._type); } - private setIcon(): void - { - if(this._iconUrl) return; + if (!url) return; - let url = null; + this._iconUrl = url; + } - if(this.isWallItem) - { - url = this._roomEngine.getFurnitureWallIconUrl(this._type, this._stuffData.getLegacyString()); - } - else - { - url = this._roomEngine.getFurnitureFloorIconUrl(this._type); - } + public get type(): number { + return this._type; + } - if(!url) return; + public get category(): number { + return this._category; + } - this._iconUrl = url; - } + public get stuffData(): IObjectData { + return this._stuffData; + } - public get type(): number - { - return this._type; - } + public get extra(): number { + return this._extra; + } - public get category(): number - { - return this._category; - } + public get iconUrl(): string { + return this._iconUrl; + } - public get stuffData(): IObjectData - { - return this._stuffData; - } + public get name(): string { + return this._name; + } - public get extra(): number - { - return this._extra; - } + public get description(): string { + return this._description; + } - public get iconUrl(): string - { - return this._iconUrl; - } + public get hasUnseenItems(): boolean { + return this._hasUnseenItems; + } - public get name(): string - { - return this._name; - } + public set hasUnseenItems(flag: boolean) { + this._hasUnseenItems = flag; + } - public get description(): string - { - return this._description; - } + public get locked(): boolean { + return this._locked; + } - public get hasUnseenItems(): boolean - { - return this._hasUnseenItems; - } + public set locked(flag: boolean) { + this._locked = flag; + } - public set hasUnseenItems(flag: boolean) - { - this._hasUnseenItems = flag; - } + public get selected(): boolean { + return this._selected; + } - public get locked(): boolean - { - return this._locked; - } + public set selected(flag: boolean) { + this._selected = flag; + } - public set locked(flag: boolean) - { - this._locked = flag; - } + public get isWallItem(): boolean { + const item = this.getItemByIndex(0); - public get selected(): boolean - { - return this._selected; - } + return item ? item.isWallItem : false; + } - public set selected(flag: boolean) - { - this._selected = flag; - } + public get isGroupable(): boolean { + const item = this.getItemByIndex(0); - public get isWallItem(): boolean - { - const item = this.getItemByIndex(0); + return item ? item.isGroupable : false; + } - return (item ? item.isWallItem : false); - } + public get isSellable(): boolean { + const item = this.getItemByIndex(0); - public get isGroupable(): boolean - { - const item = this.getItemByIndex(0); + return item ? item.sellable : false; + } - return (item ? item.isGroupable : false); - } + public get items(): FurnitureItem[] { + return this._items; + } - public get isSellable(): boolean - { - const item = this.getItemByIndex(0); - - return (item ? item.sellable : false); - } - - public get items(): FurnitureItem[] - { - return this._items; - } - - public set items(items: FurnitureItem[]) - { - this._items = items; - } + public set items(items: FurnitureItem[]) { + this._items = items; + } } diff --git a/apps/frontend/src/api/inventory/IBotItem.ts b/apps/frontend/src/api/inventory/IBotItem.ts index 7765630..85fa23a 100644 --- a/apps/frontend/src/api/inventory/IBotItem.ts +++ b/apps/frontend/src/api/inventory/IBotItem.ts @@ -1,6 +1,5 @@ -import { BotData } from '@nitro/renderer'; +import {BotData} from "@nitro/renderer"; -export interface IBotItem -{ - botData: BotData; +export interface IBotItem { + botData: BotData; } diff --git a/apps/frontend/src/api/inventory/IFurnitureItem.ts b/apps/frontend/src/api/inventory/IFurnitureItem.ts index f99a753..c78ba6b 100644 --- a/apps/frontend/src/api/inventory/IFurnitureItem.ts +++ b/apps/frontend/src/api/inventory/IFurnitureItem.ts @@ -1,17 +1,16 @@ -import { IObjectData } from '@nitro/renderer'; +import {IObjectData} from "@nitro/renderer"; -export interface IFurnitureItem -{ - id: number; - ref: number; - type: number; - stuffData: IObjectData; - extra: number; - category: number; - recyclable: boolean; - isTradable: boolean; - isGroupable: boolean; - sellable: boolean; - locked: boolean; - isWallItem: boolean; +export interface IFurnitureItem { + id: number; + ref: number; + type: number; + stuffData: IObjectData; + extra: number; + category: number; + recyclable: boolean; + isTradable: boolean; + isGroupable: boolean; + sellable: boolean; + locked: boolean; + isWallItem: boolean; } diff --git a/apps/frontend/src/api/inventory/IPetItem.ts b/apps/frontend/src/api/inventory/IPetItem.ts index 08a6ccf..9a92035 100644 --- a/apps/frontend/src/api/inventory/IPetItem.ts +++ b/apps/frontend/src/api/inventory/IPetItem.ts @@ -1,6 +1,5 @@ -import { PetData } from '@nitro/renderer'; +import {PetData} from "@nitro/renderer"; -export interface IPetItem -{ - petData: PetData; +export interface IPetItem { + petData: PetData; } diff --git a/apps/frontend/src/api/inventory/IUnseenItemTracker.ts b/apps/frontend/src/api/inventory/IUnseenItemTracker.ts index 8a70a16..dfd5b0b 100644 --- a/apps/frontend/src/api/inventory/IUnseenItemTracker.ts +++ b/apps/frontend/src/api/inventory/IUnseenItemTracker.ts @@ -1,12 +1,11 @@ -export interface IUnseenItemTracker -{ - dispose(): void; - resetCategory(category: number): boolean; - resetItems(category: number, itemIds: number[]): boolean; - isUnseen(category: number, itemId: number): boolean; - removeUnseen(category: number, itemId: number): boolean; - getIds(category: number): number[]; - getCount(category: number): number; - getFullCount(): number; - addItems(category: number, itemIds: number[]): void; +export interface IUnseenItemTracker { + dispose(): void; + resetCategory(category: number): boolean; + resetItems(category: number, itemIds: number[]): boolean; + isUnseen(category: number, itemId: number): boolean; + removeUnseen(category: number, itemId: number): boolean; + getIds(category: number): number[]; + getCount(category: number): number; + getFullCount(): number; + addItems(category: number, itemIds: number[]): void; } diff --git a/apps/frontend/src/api/inventory/InventoryUtilities.ts b/apps/frontend/src/api/inventory/InventoryUtilities.ts index a2e1da4..cfe2dd4 100644 --- a/apps/frontend/src/api/inventory/InventoryUtilities.ts +++ b/apps/frontend/src/api/inventory/InventoryUtilities.ts @@ -1,117 +1,134 @@ -import { FurniturePlacePaintComposer, RoomObjectCategory, RoomObjectPlacementSource, RoomObjectType } from '@nitro/renderer'; -import { CreateLinkEvent, GetRoomEngine, GetRoomSessionManager, SendMessageComposer } from '../nitro'; -import { FurniCategory } from './FurniCategory'; -import { GroupItem } from './GroupItem'; -import { IBotItem } from './IBotItem'; -import { IPetItem } from './IPetItem'; +import {FurniturePlacePaintComposer, RoomObjectCategory, RoomObjectPlacementSource, RoomObjectType} from "@nitro/renderer"; + +import {CreateLinkEvent, GetRoomEngine, GetRoomSessionManager, SendMessageComposer} from "../nitro"; +import {FurniCategory} from "./FurniCategory"; +import {GroupItem} from "./GroupItem"; +import {IBotItem} from "./IBotItem"; +import {IPetItem} from "./IPetItem"; let objectMoverRequested = false; let itemIdInPlacing = -1; export const isObjectMoverRequested = () => objectMoverRequested; -export const setObjectMoverRequested = (flag: boolean) => objectMoverRequested = flag; +export const setObjectMoverRequested = (flag: boolean) => (objectMoverRequested = flag); export const getPlacingItemId = () => itemIdInPlacing; export const setPlacingItemId = (id: number) => (itemIdInPlacing = id); -export const cancelRoomObjectPlacement = () => -{ - if(getPlacingItemId() === -1) return; - - GetRoomEngine().cancelRoomObjectPlacement(); +export const cancelRoomObjectPlacement = () => { + if (getPlacingItemId() === -1) return; - setPlacingItemId(-1); - setObjectMoverRequested(false); -} + GetRoomEngine().cancelRoomObjectPlacement(); -export const attemptPetPlacement = (petItem: IPetItem, flag: boolean = false) => -{ - const petData = petItem.petData; + setPlacingItemId(-1); + setObjectMoverRequested(false); +}; - if(!petData) return false; +export const attemptPetPlacement = (petItem: IPetItem, flag: boolean = false) => { + const petData = petItem.petData; - const session = GetRoomSessionManager().getSession(1); + if (!petData) return false; - if(!session) return false; + const session = GetRoomSessionManager().getSession(1); - if(!session.isRoomOwner && !session.allowPets) return false; + if (!session) return false; - CreateLinkEvent('inventory/hide'); + if (!session.isRoomOwner && !session.allowPets) return false; - if(GetRoomEngine().processRoomObjectPlacement(RoomObjectPlacementSource.INVENTORY, -(petData.id), RoomObjectCategory.UNIT, RoomObjectType.PET, petData.figureData.figuredata)) - { - setPlacingItemId(petData.id); - setObjectMoverRequested(true); + CreateLinkEvent("inventory/hide"); + + if ( + GetRoomEngine().processRoomObjectPlacement( + RoomObjectPlacementSource.INVENTORY, + -petData.id, + RoomObjectCategory.UNIT, + RoomObjectType.PET, + petData.figureData.figuredata + ) + ) { + setPlacingItemId(petData.id); + setObjectMoverRequested(true); + } + + return true; +}; + +export const attemptItemPlacement = (groupItem: GroupItem, flag: boolean = false) => { + if (!groupItem || !groupItem.getUnlockedCount()) return false; + + const item = groupItem.getLastItem(); + + if (!item) return false; + + if (item.category === FurniCategory.FLOOR || item.category === FurniCategory.WALL_PAPER || item.category === FurniCategory.LANDSCAPE) { + if (flag) return false; + + SendMessageComposer(new FurniturePlacePaintComposer(item.id)); + + return false; + } else { + CreateLinkEvent("inventory/hide"); + + let category = 0; + let isMoving = false; + + if (item.isWallItem) category = RoomObjectCategory.WALL; + else category = RoomObjectCategory.FLOOR; + + if (item.category === FurniCategory.POSTER) { + // or external image from furnidata + isMoving = GetRoomEngine().processRoomObjectPlacement( + RoomObjectPlacementSource.INVENTORY, + item.id, + category, + item.type, + item.stuffData.getLegacyString() + ); + } else { + isMoving = GetRoomEngine().processRoomObjectPlacement( + RoomObjectPlacementSource.INVENTORY, + item.id, + category, + item.type, + item.extra.toString(), + item.stuffData + ); } - return true; -} - -export const attemptItemPlacement = (groupItem: GroupItem, flag: boolean = false) => -{ - if(!groupItem || !groupItem.getUnlockedCount()) return false; - - const item = groupItem.getLastItem(); - - if(!item) return false; - - if((item.category === FurniCategory.FLOOR) || (item.category === FurniCategory.WALL_PAPER) || (item.category === FurniCategory.LANDSCAPE)) - { - if(flag) return false; - - SendMessageComposer(new FurniturePlacePaintComposer(item.id)); - - return false; + if (isMoving) { + setPlacingItemId(item.ref); + setObjectMoverRequested(true); } - else - { - CreateLinkEvent('inventory/hide'); + } - let category = 0; - let isMoving = false; + return true; +}; - if(item.isWallItem) category = RoomObjectCategory.WALL; - else category = RoomObjectCategory.FLOOR; +export const attemptBotPlacement = (botItem: IBotItem, flag: boolean = false) => { + const botData = botItem.botData; - if((item.category === FurniCategory.POSTER)) // or external image from furnidata - { - isMoving = GetRoomEngine().processRoomObjectPlacement(RoomObjectPlacementSource.INVENTORY, item.id, category, item.type, item.stuffData.getLegacyString()); - } - else - { - isMoving = GetRoomEngine().processRoomObjectPlacement(RoomObjectPlacementSource.INVENTORY, item.id, category, item.type, item.extra.toString(), item.stuffData); - } + if (!botData) return false; - if(isMoving) - { - setPlacingItemId(item.ref); - setObjectMoverRequested(true); - } - } + const session = GetRoomSessionManager().getSession(1); - return true; -} + if (!session || !session.isRoomOwner) return false; + CreateLinkEvent("inventory/hide"); -export const attemptBotPlacement = (botItem: IBotItem, flag: boolean = false) => -{ - const botData = botItem.botData; + if ( + GetRoomEngine().processRoomObjectPlacement( + RoomObjectPlacementSource.INVENTORY, + -botData.id, + RoomObjectCategory.UNIT, + RoomObjectType.RENTABLE_BOT, + botData.figure + ) + ) { + setPlacingItemId(botData.id); + setObjectMoverRequested(true); + } - if(!botData) return false; - - const session = GetRoomSessionManager().getSession(1); - - if(!session || !session.isRoomOwner) return false; - - CreateLinkEvent('inventory/hide'); - - if(GetRoomEngine().processRoomObjectPlacement(RoomObjectPlacementSource.INVENTORY, -(botData.id), RoomObjectCategory.UNIT, RoomObjectType.RENTABLE_BOT, botData.figure)) - { - setPlacingItemId(botData.id); - setObjectMoverRequested(true); - } - - return true; -} + return true; +}; diff --git a/apps/frontend/src/api/inventory/PetUtilities.ts b/apps/frontend/src/api/inventory/PetUtilities.ts index 5576a7a..37b9245 100644 --- a/apps/frontend/src/api/inventory/PetUtilities.ts +++ b/apps/frontend/src/api/inventory/PetUtilities.ts @@ -1,104 +1,92 @@ -import { PetData } from '@nitro/renderer'; -import { CreateLinkEvent } from '../nitro'; -import { cancelRoomObjectPlacement, getPlacingItemId } from './InventoryUtilities'; -import { IPetItem } from './IPetItem'; -import { UnseenItemCategory } from './UnseenItemCategory'; +import {PetData} from "@nitro/renderer"; + +import {CreateLinkEvent} from "../nitro"; +import {IPetItem} from "./IPetItem"; +import {cancelRoomObjectPlacement, getPlacingItemId} from "./InventoryUtilities"; +import {UnseenItemCategory} from "./UnseenItemCategory"; export const getAllPetIds = (petItems: IPetItem[]) => petItems.map(item => item.petData.id); -export const addSinglePetItem = (petData: PetData, set: IPetItem[], unseen: boolean = true) => -{ - const petItem = { petData }; +export const addSinglePetItem = (petData: PetData, set: IPetItem[], unseen: boolean = true) => { + const petItem = {petData}; - if(unseen) - { - //petItem.isUnseen = true; - - set.unshift(petItem); - } - else - { - set.push(petItem); + if (unseen) { + //petItem.isUnseen = true; + + set.unshift(petItem); + } else { + set.push(petItem); + } + + return petItem; +}; + +export const removePetItemById = (id: number, set: IPetItem[]) => { + let index = 0; + + while (index < set.length) { + const petItem = set[index]; + + if (petItem && petItem.petData.id === id) { + if (getPlacingItemId() === petItem.petData.id) { + cancelRoomObjectPlacement(); + + CreateLinkEvent("inventory/open"); + } + + set.splice(index, 1); + + return petItem; } - return petItem; -} + index++; + } -export const removePetItemById = (id: number, set: IPetItem[]) => -{ - let index = 0; + return null; +}; - while(index < set.length) - { - const petItem = set[index]; +export const processPetFragment = (set: IPetItem[], fragment: Map, isUnseen: (category: number, itemId: number) => boolean) => { + const existingIds = getAllPetIds(set); + const addedIds: number[] = []; + const removedIds: number[] = []; - if(petItem && (petItem.petData.id === id)) - { - if(getPlacingItemId() === petItem.petData.id) - { - cancelRoomObjectPlacement(); + for (const key of fragment.keys()) existingIds.indexOf(key) === -1 && addedIds.push(key); - CreateLinkEvent('inventory/open'); - } - - set.splice(index, 1); + for (const itemId of existingIds) !fragment.get(itemId) && removedIds.push(itemId); - return petItem; - } + const emptyExistingSet = existingIds.length === 0; - index++; - } + for (const id of removedIds) removePetItemById(id, set); - return null; -} + for (const id of addedIds) { + const parser = fragment.get(id); -export const processPetFragment = (set: IPetItem[], fragment: Map, isUnseen: (category: number, itemId: number) => boolean) => -{ - const existingIds = getAllPetIds(set); - const addedIds: number[] = []; - const removedIds: number[] = []; + if (!parser) continue; - for(const key of fragment.keys()) (existingIds.indexOf(key) === -1) && addedIds.push(key); + addSinglePetItem(parser, set, isUnseen(UnseenItemCategory.PET, parser.id)); + } - for(const itemId of existingIds) (!fragment.get(itemId)) && removedIds.push(itemId); + return set; +}; - const emptyExistingSet = (existingIds.length === 0); +export const mergePetFragments = (fragment: Map, totalFragments: number, fragmentNumber: number, fragments: Map[]) => { + if (totalFragments === 1) return fragment; - for(const id of removedIds) removePetItemById(id, set); + fragments[fragmentNumber] = fragment; - for(const id of addedIds) - { - const parser = fragment.get(id); + for (const frag of fragments) { + if (!frag) return null; + } - if(!parser) continue; + const merged: Map = new Map(); - addSinglePetItem(parser, set, isUnseen(UnseenItemCategory.PET, parser.id)); - } + for (const frag of fragments) { + for (const [key, value] of frag) merged.set(key, value); - return set; -} + frag.clear(); + } -export const mergePetFragments = (fragment: Map, totalFragments: number, fragmentNumber: number, fragments: Map[]) => -{ - if(totalFragments === 1) return fragment; + fragments = null; - fragments[fragmentNumber] = fragment; - - for(const frag of fragments) - { - if(!frag) return null; - } - - const merged: Map = new Map(); - - for(const frag of fragments) - { - for(const [ key, value ] of frag) merged.set(key, value); - - frag.clear(); - } - - fragments = null; - - return merged; -} + return merged; +}; diff --git a/apps/frontend/src/api/inventory/TradeState.ts b/apps/frontend/src/api/inventory/TradeState.ts index 3df418b..1f05081 100644 --- a/apps/frontend/src/api/inventory/TradeState.ts +++ b/apps/frontend/src/api/inventory/TradeState.ts @@ -1,10 +1,9 @@ -export class TradeState -{ - public static TRADING_STATE_READY: number = 0; - public static TRADING_STATE_RUNNING: number = 1; - public static TRADING_STATE_COUNTDOWN: number = 2; - public static TRADING_STATE_CONFIRMING: number = 3; - public static TRADING_STATE_CONFIRMED: number = 4; - public static TRADING_STATE_COMPLETED: number = 5; - public static TRADING_STATE_CANCELLED: number = 6; +export class TradeState { + public static TRADING_STATE_READY: number = 0; + public static TRADING_STATE_RUNNING: number = 1; + public static TRADING_STATE_COUNTDOWN: number = 2; + public static TRADING_STATE_CONFIRMING: number = 3; + public static TRADING_STATE_CONFIRMED: number = 4; + public static TRADING_STATE_COMPLETED: number = 5; + public static TRADING_STATE_CANCELLED: number = 6; } diff --git a/apps/frontend/src/api/inventory/TradeUserData.ts b/apps/frontend/src/api/inventory/TradeUserData.ts index a3f4cde..76e7d23 100644 --- a/apps/frontend/src/api/inventory/TradeUserData.ts +++ b/apps/frontend/src/api/inventory/TradeUserData.ts @@ -1,15 +1,15 @@ -import { AdvancedMap } from '@nitro/renderer'; -import { GroupItem } from './GroupItem'; +import {AdvancedMap} from "@nitro/renderer"; -export class TradeUserData -{ - constructor( - public userId: number = -1, - public userName: string = '', - public userItems: AdvancedMap = new AdvancedMap(), - public itemCount: number = 0, - public creditsCount: number = 0, - public accepts: boolean = false, - public canTrade: boolean = false) - {} +import {GroupItem} from "./GroupItem"; + +export class TradeUserData { + constructor( + public userId: number = -1, + public userName: string = "", + public userItems: AdvancedMap = new AdvancedMap(), + public itemCount: number = 0, + public creditsCount: number = 0, + public accepts: boolean = false, + public canTrade: boolean = false + ) {} } diff --git a/apps/frontend/src/api/inventory/TradingNotificationType.ts b/apps/frontend/src/api/inventory/TradingNotificationType.ts index 4aed490..ccd290a 100644 --- a/apps/frontend/src/api/inventory/TradingNotificationType.ts +++ b/apps/frontend/src/api/inventory/TradingNotificationType.ts @@ -1,12 +1,11 @@ -export class TradingNotificationType -{ - public static ALERT_SCAM: number = 0; - public static HOTEL_TRADING_DISABLED = 1; - public static YOU_NOT_ALLOWED: number = 2; - public static THEY_NOT_ALLOWED: number = 4; - public static ROOM_DISABLED: number = 6; - public static YOU_OPEN: number = 7; - public static THEY_OPEN: number = 8; - public static ERROR_WHILE_COMMIT: number = 9; - public static THEY_CANCELLED: number = 10; +export class TradingNotificationType { + public static ALERT_SCAM: number = 0; + public static HOTEL_TRADING_DISABLED = 1; + public static YOU_NOT_ALLOWED: number = 2; + public static THEY_NOT_ALLOWED: number = 4; + public static ROOM_DISABLED: number = 6; + public static YOU_OPEN: number = 7; + public static THEY_OPEN: number = 8; + public static ERROR_WHILE_COMMIT: number = 9; + public static THEY_CANCELLED: number = 10; } diff --git a/apps/frontend/src/api/inventory/TradingUtilities.ts b/apps/frontend/src/api/inventory/TradingUtilities.ts index 69c24e7..76cebb9 100644 --- a/apps/frontend/src/api/inventory/TradingUtilities.ts +++ b/apps/frontend/src/api/inventory/TradingUtilities.ts @@ -1,71 +1,61 @@ -import { AdvancedMap, IObjectData, ItemDataStructure, StringDataType } from '@nitro/renderer'; -import { GetSessionDataManager } from '../nitro'; -import { FurniCategory } from './FurniCategory'; -import { FurnitureItem } from './FurnitureItem'; -import { createGroupItem } from './FurnitureUtilities'; -import { GroupItem } from './GroupItem'; +import {AdvancedMap, IObjectData, ItemDataStructure, StringDataType} from "@nitro/renderer"; + +import {GetSessionDataManager} from "../nitro"; +import {FurniCategory} from "./FurniCategory"; +import {FurnitureItem} from "./FurnitureItem"; +import {createGroupItem} from "./FurnitureUtilities"; +import {GroupItem} from "./GroupItem"; const isExternalImage = (spriteId: number) => GetSessionDataManager().getWallItemData(spriteId)?.isExternalImage || false; -export const parseTradeItems = (items: ItemDataStructure[]) => -{ - const existingItems = new AdvancedMap(); - const totalItems = items.length; +export const parseTradeItems = (items: ItemDataStructure[]) => { + const existingItems = new AdvancedMap(); + const totalItems = items.length; - if(totalItems) - { - for(const item of items) - { - const spriteId = item.spriteId; - const category = item.category; - - let name = (item.furniType + spriteId); - - if(!item.isGroupable || isExternalImage(spriteId)) - { - name = ('itemid' + item.itemId); - } - - if(item.category === FurniCategory.POSTER) - { - name = (item.itemId + 'poster' + item.stuffData.getLegacyString()); - } - - else if(item.category === FurniCategory.GUILD_FURNI) - { - name = ''; - } - - let groupItem = ((item.isGroupable && !isExternalImage(item.spriteId)) ? existingItems.getValue(name) : null); - - if(!groupItem) - { - groupItem = createGroupItem(spriteId, category, item.stuffData); - - existingItems.add(name, groupItem); - } - - groupItem.push(new FurnitureItem(item)); - } + if (totalItems) { + for (const item of items) { + const spriteId = item.spriteId; + const category = item.category; + + let name = item.furniType + spriteId; + + if (!item.isGroupable || isExternalImage(spriteId)) { + name = "itemid" + item.itemId; + } + + if (item.category === FurniCategory.POSTER) { + name = item.itemId + "poster" + item.stuffData.getLegacyString(); + } else if (item.category === FurniCategory.GUILD_FURNI) { + name = ""; + } + + let groupItem = item.isGroupable && !isExternalImage(item.spriteId) ? existingItems.getValue(name) : null; + + if (!groupItem) { + groupItem = createGroupItem(spriteId, category, item.stuffData); + + existingItems.add(name, groupItem); + } + + groupItem.push(new FurnitureItem(item)); } + } - return existingItems; -} + return existingItems; +}; -export const getGuildFurniType = (spriteId: number, stuffData: IObjectData) => -{ - let type = spriteId.toString(); +export const getGuildFurniType = (spriteId: number, stuffData: IObjectData) => { + let type = spriteId.toString(); - if(!(stuffData instanceof StringDataType)) return type; + if (!(stuffData instanceof StringDataType)) return type; - let i = 1; + let i = 1; - while(i < 5) - { - type = (type + (',' + stuffData.getValue(i))); + while (i < 5) { + type = type + ("," + stuffData.getValue(i)); - i++; - } + i++; + } - return type; -} + return type; +}; diff --git a/apps/frontend/src/api/inventory/UnseenItemCategory.ts b/apps/frontend/src/api/inventory/UnseenItemCategory.ts index cbd7e9b..76d78ca 100644 --- a/apps/frontend/src/api/inventory/UnseenItemCategory.ts +++ b/apps/frontend/src/api/inventory/UnseenItemCategory.ts @@ -1,9 +1,8 @@ -export class UnseenItemCategory -{ - public static FURNI: number = 1; - public static RENTABLE: number = 2; - public static PET: number = 3; - public static BADGE: number = 4; - public static BOT: number = 5; - public static GAMES: number = 6; +export class UnseenItemCategory { + public static FURNI: number = 1; + public static RENTABLE: number = 2; + public static PET: number = 3; + public static BADGE: number = 4; + public static BOT: number = 5; + public static GAMES: number = 6; } diff --git a/apps/frontend/src/api/inventory/index.ts b/apps/frontend/src/api/inventory/index.ts index 76962cf..0851673 100644 --- a/apps/frontend/src/api/inventory/index.ts +++ b/apps/frontend/src/api/inventory/index.ts @@ -1,15 +1,15 @@ -export * from './FurniCategory'; -export * from './FurnitureItem'; -export * from './FurnitureUtilities'; -export * from './GroupItem'; -export * from './IBotItem'; -export * from './IFurnitureItem'; -export * from './InventoryUtilities'; -export * from './IPetItem'; -export * from './IUnseenItemTracker'; -export * from './PetUtilities'; -export * from './TradeState'; -export * from './TradeUserData'; -export * from './TradingNotificationType'; -export * from './TradingUtilities'; -export * from './UnseenItemCategory'; +export * from "./FurniCategory"; +export * from "./FurnitureItem"; +export * from "./FurnitureUtilities"; +export * from "./GroupItem"; +export * from "./IBotItem"; +export * from "./IFurnitureItem"; +export * from "./InventoryUtilities"; +export * from "./IPetItem"; +export * from "./IUnseenItemTracker"; +export * from "./PetUtilities"; +export * from "./TradeState"; +export * from "./TradeUserData"; +export * from "./TradingNotificationType"; +export * from "./TradingUtilities"; +export * from "./UnseenItemCategory"; diff --git a/apps/frontend/src/api/mod-tools/GetIssueCategoryName.ts b/apps/frontend/src/api/mod-tools/GetIssueCategoryName.ts index 81a3f86..1e1b46e 100644 --- a/apps/frontend/src/api/mod-tools/GetIssueCategoryName.ts +++ b/apps/frontend/src/api/mod-tools/GetIssueCategoryName.ts @@ -1,35 +1,33 @@ -export const GetIssueCategoryName = (categoryId: number) => -{ - switch(categoryId) - { - case 1: - case 2: - return 'Normal'; - case 3: - return 'Automatic'; - case 4: - return 'Automatic IM'; - case 5: - return 'Guide System'; - case 6: - return 'IM'; - case 7: - return 'Room'; - case 8: - return 'Panic'; - case 9: - return 'Guardian'; - case 10: - return 'Automatic Helper'; - case 11: - return 'Discussion'; - case 12: - return 'Selfie'; - case 14: - return 'Photo'; - case 15: - return 'Ambassador'; - } +export const GetIssueCategoryName = (categoryId: number) => { + switch (categoryId) { + case 1: + case 2: + return "Normal"; + case 3: + return "Automatic"; + case 4: + return "Automatic IM"; + case 5: + return "Guide System"; + case 6: + return "IM"; + case 7: + return "Room"; + case 8: + return "Panic"; + case 9: + return "Guardian"; + case 10: + return "Automatic Helper"; + case 11: + return "Discussion"; + case 12: + return "Selfie"; + case 14: + return "Photo"; + case 15: + return "Ambassador"; + } - return 'Unknown'; -} + return "Unknown"; +}; diff --git a/apps/frontend/src/api/mod-tools/ISelectedUser.ts b/apps/frontend/src/api/mod-tools/ISelectedUser.ts index 4f6e76b..a97c0ed 100644 --- a/apps/frontend/src/api/mod-tools/ISelectedUser.ts +++ b/apps/frontend/src/api/mod-tools/ISelectedUser.ts @@ -1,5 +1,4 @@ -export interface ISelectedUser -{ - userId: number; - username: string; +export interface ISelectedUser { + userId: number; + username: string; } diff --git a/apps/frontend/src/api/mod-tools/IUserInfo.ts b/apps/frontend/src/api/mod-tools/IUserInfo.ts index 8d49aa7..be2fa97 100644 --- a/apps/frontend/src/api/mod-tools/IUserInfo.ts +++ b/apps/frontend/src/api/mod-tools/IUserInfo.ts @@ -1,6 +1,5 @@ -export interface IUserInfo -{ - nameKey: string; - nameKeyFallback: string; - value: string; +export interface IUserInfo { + nameKey: string; + nameKeyFallback: string; + value: string; } diff --git a/apps/frontend/src/api/mod-tools/ModActionDefinition.ts b/apps/frontend/src/api/mod-tools/ModActionDefinition.ts index b28aa9c..698985a 100644 --- a/apps/frontend/src/api/mod-tools/ModActionDefinition.ts +++ b/apps/frontend/src/api/mod-tools/ModActionDefinition.ts @@ -1,49 +1,42 @@ -export class ModActionDefinition -{ - public static ALERT: number = 1; - public static MUTE: number = 2; - public static BAN: number = 3; - public static KICK: number = 4; - public static TRADE_LOCK: number = 5; - public static MESSAGE: number = 6; +export class ModActionDefinition { + public static ALERT: number = 1; + public static MUTE: number = 2; + public static BAN: number = 3; + public static KICK: number = 4; + public static TRADE_LOCK: number = 5; + public static MESSAGE: number = 6; - private readonly _actionId: number; - private readonly _name: string; - private readonly _actionType: number; - private readonly _sanctionTypeId: number; - private readonly _actionLengthHours: number; + private readonly _actionId: number; + private readonly _name: string; + private readonly _actionType: number; + private readonly _sanctionTypeId: number; + private readonly _actionLengthHours: number; - constructor(actionId: number, actionName: string, actionType: number, sanctionTypeId: number, actionLengthHours:number) - { - this._actionId = actionId; - this._name = actionName; - this._actionType = actionType; - this._sanctionTypeId = sanctionTypeId; - this._actionLengthHours = actionLengthHours; - } + constructor(actionId: number, actionName: string, actionType: number, sanctionTypeId: number, actionLengthHours: number) { + this._actionId = actionId; + this._name = actionName; + this._actionType = actionType; + this._sanctionTypeId = sanctionTypeId; + this._actionLengthHours = actionLengthHours; + } - public get actionId(): number - { - return this._actionId; - } + public get actionId(): number { + return this._actionId; + } - public get name(): string - { - return this._name; - } + public get name(): string { + return this._name; + } - public get actionType(): number - { - return this._actionType; - } + public get actionType(): number { + return this._actionType; + } - public get sanctionTypeId(): number - { - return this._sanctionTypeId; - } + public get sanctionTypeId(): number { + return this._sanctionTypeId; + } - public get actionLengthHours(): number - { - return this._actionLengthHours; - } + public get actionLengthHours(): number { + return this._actionLengthHours; + } } diff --git a/apps/frontend/src/api/mod-tools/index.ts b/apps/frontend/src/api/mod-tools/index.ts index 004bbaa..955adef 100644 --- a/apps/frontend/src/api/mod-tools/index.ts +++ b/apps/frontend/src/api/mod-tools/index.ts @@ -1,4 +1,4 @@ -export * from './GetIssueCategoryName'; -export * from './ISelectedUser'; -export * from './IUserInfo'; -export * from './ModActionDefinition'; +export * from "./GetIssueCategoryName"; +export * from "./ISelectedUser"; +export * from "./IUserInfo"; +export * from "./ModActionDefinition"; diff --git a/apps/frontend/src/api/navigator/DoorStateType.ts b/apps/frontend/src/api/navigator/DoorStateType.ts index 1f8a8ef..4754032 100644 --- a/apps/frontend/src/api/navigator/DoorStateType.ts +++ b/apps/frontend/src/api/navigator/DoorStateType.ts @@ -1,12 +1,11 @@ -export class DoorStateType -{ - public static NONE: number = 0; - public static START_DOORBELL: number = 1; - public static START_PASSWORD: number = 2; - public static STATE_PENDING_SERVER: number = 3; - public static UPDATE_STATE: number = 4; - public static STATE_WAITING: number = 5; - public static STATE_NO_ANSWER: number = 6; - public static STATE_WRONG_PASSWORD: number = 7; - public static STATE_ACCEPTED: number = 8; +export class DoorStateType { + public static NONE: number = 0; + public static START_DOORBELL: number = 1; + public static START_PASSWORD: number = 2; + public static STATE_PENDING_SERVER: number = 3; + public static UPDATE_STATE: number = 4; + public static STATE_WAITING: number = 5; + public static STATE_NO_ANSWER: number = 6; + public static STATE_WRONG_PASSWORD: number = 7; + public static STATE_ACCEPTED: number = 8; } diff --git a/apps/frontend/src/api/navigator/INavigatorData.ts b/apps/frontend/src/api/navigator/INavigatorData.ts index 942b326..1ce5644 100644 --- a/apps/frontend/src/api/navigator/INavigatorData.ts +++ b/apps/frontend/src/api/navigator/INavigatorData.ts @@ -1,17 +1,16 @@ -import { RoomDataParser } from '@nitro/renderer'; +import {RoomDataParser} from "@nitro/renderer"; -export interface INavigatorData -{ - homeRoomId: number; - settingsReceived: boolean; - enteredGuestRoom: RoomDataParser; - currentRoomOwner: boolean; - currentRoomId: number; - currentRoomIsStaffPick: boolean; - createdFlatId: number; - avatarId: number; - roomPicker: boolean; - eventMod: boolean; - currentRoomRating: number; - canRate: boolean; +export interface INavigatorData { + homeRoomId: number; + settingsReceived: boolean; + enteredGuestRoom: RoomDataParser; + currentRoomOwner: boolean; + currentRoomId: number; + currentRoomIsStaffPick: boolean; + createdFlatId: number; + avatarId: number; + roomPicker: boolean; + eventMod: boolean; + currentRoomRating: number; + canRate: boolean; } diff --git a/apps/frontend/src/api/navigator/INavigatorSearchFilter.ts b/apps/frontend/src/api/navigator/INavigatorSearchFilter.ts index 179d5d5..978d155 100644 --- a/apps/frontend/src/api/navigator/INavigatorSearchFilter.ts +++ b/apps/frontend/src/api/navigator/INavigatorSearchFilter.ts @@ -1,5 +1,4 @@ -export interface INavigatorSearchFilter -{ - name: string; - query: string; +export interface INavigatorSearchFilter { + name: string; + query: string; } diff --git a/apps/frontend/src/api/navigator/IRoomChatSettings.ts b/apps/frontend/src/api/navigator/IRoomChatSettings.ts index aee426c..d4a9c52 100644 --- a/apps/frontend/src/api/navigator/IRoomChatSettings.ts +++ b/apps/frontend/src/api/navigator/IRoomChatSettings.ts @@ -1,8 +1,7 @@ -export interface IRoomChatSettings -{ - mode: number; - weight: number; - speed: number; - distance: number; - protection: number; +export interface IRoomChatSettings { + mode: number; + weight: number; + speed: number; + distance: number; + protection: number; } diff --git a/apps/frontend/src/api/navigator/IRoomData.ts b/apps/frontend/src/api/navigator/IRoomData.ts index 9146314..cf2e3a2 100644 --- a/apps/frontend/src/api/navigator/IRoomData.ts +++ b/apps/frontend/src/api/navigator/IRoomData.ts @@ -1,23 +1,22 @@ -import { IRoomChatSettings } from './IRoomChatSettings'; -import { IRoomModerationSettings } from './IRoomModerationSettings'; +import {IRoomChatSettings} from "./IRoomChatSettings"; +import {IRoomModerationSettings} from "./IRoomModerationSettings"; -export interface IRoomData -{ - roomId: number; - roomName: string; - roomDescription: string; - categoryId: number; - userCount: number; - tags: string[]; - tradeState: number; - allowWalkthrough: boolean; - lockState: number; - password: string; - allowPets: boolean; - allowPetsEat: boolean; - hideWalls: boolean; - wallThickness: number; - floorThickness: number; - chatSettings: IRoomChatSettings; - moderationSettings: IRoomModerationSettings; +export interface IRoomData { + roomId: number; + roomName: string; + roomDescription: string; + categoryId: number; + userCount: number; + tags: string[]; + tradeState: number; + allowWalkthrough: boolean; + lockState: number; + password: string; + allowPets: boolean; + allowPetsEat: boolean; + hideWalls: boolean; + wallThickness: number; + floorThickness: number; + chatSettings: IRoomChatSettings; + moderationSettings: IRoomModerationSettings; } diff --git a/apps/frontend/src/api/navigator/IRoomModel.ts b/apps/frontend/src/api/navigator/IRoomModel.ts index 73dfe27..0e81d5f 100644 --- a/apps/frontend/src/api/navigator/IRoomModel.ts +++ b/apps/frontend/src/api/navigator/IRoomModel.ts @@ -1,6 +1,5 @@ -export interface IRoomModel -{ - clubLevel: number; - tileSize: number; - name: string; +export interface IRoomModel { + clubLevel: number; + tileSize: number; + name: string; } diff --git a/apps/frontend/src/api/navigator/IRoomModerationSettings.ts b/apps/frontend/src/api/navigator/IRoomModerationSettings.ts index 266fe47..928d154 100644 --- a/apps/frontend/src/api/navigator/IRoomModerationSettings.ts +++ b/apps/frontend/src/api/navigator/IRoomModerationSettings.ts @@ -1,6 +1,5 @@ -export interface IRoomModerationSettings -{ - allowMute: number; - allowKick: number; - allowBan: number; +export interface IRoomModerationSettings { + allowMute: number; + allowKick: number; + allowBan: number; } diff --git a/apps/frontend/src/api/navigator/NavigatorSearchResultViewDisplayMode.ts b/apps/frontend/src/api/navigator/NavigatorSearchResultViewDisplayMode.ts index b532d1a..c566d32 100644 --- a/apps/frontend/src/api/navigator/NavigatorSearchResultViewDisplayMode.ts +++ b/apps/frontend/src/api/navigator/NavigatorSearchResultViewDisplayMode.ts @@ -1,6 +1,5 @@ -export class NavigatorSearchResultViewDisplayMode -{ - public static readonly LIST: number = 0; - public static readonly THUMBNAILS: number = 1; - public static readonly FORCED_THUMBNAILS: number = 2; +export class NavigatorSearchResultViewDisplayMode { + public static readonly LIST: number = 0; + public static readonly THUMBNAILS: number = 1; + public static readonly FORCED_THUMBNAILS: number = 2; } diff --git a/apps/frontend/src/api/navigator/RoomInfoData.ts b/apps/frontend/src/api/navigator/RoomInfoData.ts index 958e813..6954c20 100644 --- a/apps/frontend/src/api/navigator/RoomInfoData.ts +++ b/apps/frontend/src/api/navigator/RoomInfoData.ts @@ -1,60 +1,49 @@ -import { RoomDataParser } from '@nitro/renderer'; +import {RoomDataParser} from "@nitro/renderer"; -export class RoomInfoData -{ - private _enteredGuestRoom: RoomDataParser = null; - private _createdRoomId: number = 0; - private _currentRoomId: number = 0; - private _currentRoomOwner: boolean = false; - private _canRate: boolean = false; +export class RoomInfoData { + private _enteredGuestRoom: RoomDataParser = null; + private _createdRoomId: number = 0; + private _currentRoomId: number = 0; + private _currentRoomOwner: boolean = false; + private _canRate: boolean = false; - public get enteredGuestRoom(): RoomDataParser - { - return this._enteredGuestRoom; - } + public get enteredGuestRoom(): RoomDataParser { + return this._enteredGuestRoom; + } - public set enteredGuestRoom(data: RoomDataParser) - { - this._enteredGuestRoom = data; - } + public set enteredGuestRoom(data: RoomDataParser) { + this._enteredGuestRoom = data; + } - public get createdRoomId(): number - { - return this._createdRoomId; - } + public get createdRoomId(): number { + return this._createdRoomId; + } - public set createdRoomId(id: number) - { - this._createdRoomId = id; - } + public set createdRoomId(id: number) { + this._createdRoomId = id; + } - public get currentRoomId(): number - { - return this._currentRoomId; - } + public get currentRoomId(): number { + return this._currentRoomId; + } - public set currentRoomId(id: number) - { - this._currentRoomId = id; - } + public set currentRoomId(id: number) { + this._currentRoomId = id; + } - public get currentRoomOwner(): boolean - { - return this._currentRoomOwner; - } + public get currentRoomOwner(): boolean { + return this._currentRoomOwner; + } - public set currentRoomOwner(flag: boolean) - { - this._currentRoomOwner = flag; - } + public set currentRoomOwner(flag: boolean) { + this._currentRoomOwner = flag; + } - public get canRate(): boolean - { - return this._canRate; - } + public get canRate(): boolean { + return this._canRate; + } - public set canRate(flag: boolean) - { - this._canRate = flag; - } + public set canRate(flag: boolean) { + this._canRate = flag; + } } diff --git a/apps/frontend/src/api/navigator/RoomSettingsUtils.ts b/apps/frontend/src/api/navigator/RoomSettingsUtils.ts index bc611da..7888ed4 100644 --- a/apps/frontend/src/api/navigator/RoomSettingsUtils.ts +++ b/apps/frontend/src/api/navigator/RoomSettingsUtils.ts @@ -1,10 +1,9 @@ -const BuildMaxVisitorsList = () => -{ - const list: number[] = []; +const BuildMaxVisitorsList = () => { + const list: number[] = []; - for(let i = 10; i <= 100; i = i + 10) list.push(i); + for (let i = 10; i <= 100; i = i + 10) list.push(i); - return list; -} + return list; +}; export const GetMaxVisitorsList = BuildMaxVisitorsList(); diff --git a/apps/frontend/src/api/navigator/SearchFilterOptions.ts b/apps/frontend/src/api/navigator/SearchFilterOptions.ts index aaf1290..1c6ab2c 100644 --- a/apps/frontend/src/api/navigator/SearchFilterOptions.ts +++ b/apps/frontend/src/api/navigator/SearchFilterOptions.ts @@ -1,24 +1,24 @@ -import { INavigatorSearchFilter } from './INavigatorSearchFilter'; +import {INavigatorSearchFilter} from "./INavigatorSearchFilter"; export const SearchFilterOptions: INavigatorSearchFilter[] = [ - { - name: 'anything', - query: null - }, - { - name: 'room.name', - query: 'roomname' - }, - { - name: 'owner', - query: 'owner' - }, - { - name: 'tag', - query: 'tag' - }, - { - name: 'group', - query: 'group' - } + { + name: "anything", + query: null, + }, + { + name: "room.name", + query: "roomname", + }, + { + name: "owner", + query: "owner", + }, + { + name: "tag", + query: "tag", + }, + { + name: "group", + query: "group", + }, ]; diff --git a/apps/frontend/src/api/navigator/TryVisitRoom.ts b/apps/frontend/src/api/navigator/TryVisitRoom.ts index 0411e22..96bbc10 100644 --- a/apps/frontend/src/api/navigator/TryVisitRoom.ts +++ b/apps/frontend/src/api/navigator/TryVisitRoom.ts @@ -1,7 +1,7 @@ -import { GetGuestRoomMessageComposer } from '@nitro/renderer'; -import { SendMessageComposer } from '../nitro'; +import {GetGuestRoomMessageComposer} from "@nitro/renderer"; -export function TryVisitRoom(roomId: number): void -{ - SendMessageComposer(new GetGuestRoomMessageComposer(roomId, false, true)); +import {SendMessageComposer} from "../nitro"; + +export function TryVisitRoom(roomId: number): void { + SendMessageComposer(new GetGuestRoomMessageComposer(roomId, false, true)); } diff --git a/apps/frontend/src/api/navigator/index.ts b/apps/frontend/src/api/navigator/index.ts index bceb33e..f2612f3 100644 --- a/apps/frontend/src/api/navigator/index.ts +++ b/apps/frontend/src/api/navigator/index.ts @@ -1,12 +1,12 @@ -export * from './DoorStateType'; -export * from './INavigatorData'; -export * from './INavigatorSearchFilter'; -export * from './IRoomChatSettings'; -export * from './IRoomData'; -export * from './IRoomModel'; -export * from './IRoomModerationSettings'; -export * from './NavigatorSearchResultViewDisplayMode'; -export * from './RoomInfoData'; -export * from './RoomSettingsUtils'; -export * from './SearchFilterOptions'; -export * from './TryVisitRoom'; +export * from "./DoorStateType"; +export * from "./INavigatorData"; +export * from "./INavigatorSearchFilter"; +export * from "./IRoomChatSettings"; +export * from "./IRoomData"; +export * from "./IRoomModel"; +export * from "./IRoomModerationSettings"; +export * from "./NavigatorSearchResultViewDisplayMode"; +export * from "./RoomInfoData"; +export * from "./RoomSettingsUtils"; +export * from "./SearchFilterOptions"; +export * from "./TryVisitRoom"; diff --git a/apps/frontend/src/api/nitro/AddLinkEventTracker.ts b/apps/frontend/src/api/nitro/AddLinkEventTracker.ts index 88d0879..d11baf8 100644 --- a/apps/frontend/src/api/nitro/AddLinkEventTracker.ts +++ b/apps/frontend/src/api/nitro/AddLinkEventTracker.ts @@ -1,7 +1,7 @@ -import { ILinkEventTracker } from '@nitro/renderer'; -import { GetNitroInstance } from './GetNitroInstance'; +import {ILinkEventTracker} from "@nitro/renderer"; -export function AddEventLinkTracker(tracker: ILinkEventTracker): void -{ - GetNitroInstance().addLinkEventTracker(tracker); +import {GetNitroInstance} from "./GetNitroInstance"; + +export function AddEventLinkTracker(tracker: ILinkEventTracker): void { + GetNitroInstance().addLinkEventTracker(tracker); } diff --git a/apps/frontend/src/api/nitro/CreateLinkEvent.ts b/apps/frontend/src/api/nitro/CreateLinkEvent.ts index 2acfa86..ec0526b 100644 --- a/apps/frontend/src/api/nitro/CreateLinkEvent.ts +++ b/apps/frontend/src/api/nitro/CreateLinkEvent.ts @@ -1,8 +1,7 @@ -import { GetNitroInstance } from './GetNitroInstance'; +import {GetNitroInstance} from "./GetNitroInstance"; -export function CreateLinkEvent(link: string): void -{ - link = (link.startsWith('event:') ? link.substring(6) : link); - - GetNitroInstance().createLinkEvent(link); +export function CreateLinkEvent(link: string): void { + link = link.startsWith("event:") ? link.substring(6) : link; + + GetNitroInstance().createLinkEvent(link); } diff --git a/apps/frontend/src/api/nitro/GetCommunication.ts b/apps/frontend/src/api/nitro/GetCommunication.ts index 6ea5a21..30a82f0 100644 --- a/apps/frontend/src/api/nitro/GetCommunication.ts +++ b/apps/frontend/src/api/nitro/GetCommunication.ts @@ -1,7 +1,7 @@ -import { INitroCommunicationManager } from '@nitro/renderer'; -import { GetNitroInstance } from './GetNitroInstance'; +import {INitroCommunicationManager} from "@nitro/renderer"; -export function GetCommunication(): INitroCommunicationManager -{ - return GetNitroInstance()?.communication; +import {GetNitroInstance} from "./GetNitroInstance"; + +export function GetCommunication(): INitroCommunicationManager { + return GetNitroInstance()?.communication; } diff --git a/apps/frontend/src/api/nitro/GetConfiguration.ts b/apps/frontend/src/api/nitro/GetConfiguration.ts index 3fa23d0..e59589e 100644 --- a/apps/frontend/src/api/nitro/GetConfiguration.ts +++ b/apps/frontend/src/api/nitro/GetConfiguration.ts @@ -1,6 +1,5 @@ -import { NitroConfiguration } from '@nitro/renderer'; +import {NitroConfiguration} from "@nitro/renderer"; -export function GetConfiguration(key: string, value: T = null): T -{ - return NitroConfiguration.getValue(key, value); +export function GetConfiguration(key: string, value: T = null): T { + return NitroConfiguration.getValue(key, value); } diff --git a/apps/frontend/src/api/nitro/GetConnection.ts b/apps/frontend/src/api/nitro/GetConnection.ts index 301c71c..7772a75 100644 --- a/apps/frontend/src/api/nitro/GetConnection.ts +++ b/apps/frontend/src/api/nitro/GetConnection.ts @@ -1,7 +1,7 @@ -import { IConnection } from '@nitro/renderer'; -import { GetCommunication } from './GetCommunication'; +import {IConnection} from "@nitro/renderer"; -export function GetConnection(): IConnection -{ - return GetCommunication()?.connection; +import {GetCommunication} from "./GetCommunication"; + +export function GetConnection(): IConnection { + return GetCommunication()?.connection; } diff --git a/apps/frontend/src/api/nitro/GetLocalization.ts b/apps/frontend/src/api/nitro/GetLocalization.ts index afcb1df..b3dbd6d 100644 --- a/apps/frontend/src/api/nitro/GetLocalization.ts +++ b/apps/frontend/src/api/nitro/GetLocalization.ts @@ -1,7 +1,7 @@ -import { INitroLocalizationManager } from '@nitro/renderer'; -import { GetNitroInstance } from './GetNitroInstance'; +import {INitroLocalizationManager} from "@nitro/renderer"; -export function GetLocalization(): INitroLocalizationManager -{ - return GetNitroInstance().localization; +import {GetNitroInstance} from "./GetNitroInstance"; + +export function GetLocalization(): INitroLocalizationManager { + return GetNitroInstance().localization; } diff --git a/apps/frontend/src/api/nitro/GetNitroInstance.ts b/apps/frontend/src/api/nitro/GetNitroInstance.ts index 0425bb3..0c8f78c 100644 --- a/apps/frontend/src/api/nitro/GetNitroInstance.ts +++ b/apps/frontend/src/api/nitro/GetNitroInstance.ts @@ -1,6 +1,5 @@ -import { INitro, Nitro } from '@nitro/renderer'; +import {INitro, Nitro} from "@nitro/renderer"; -export function GetNitroInstance(): INitro -{ - return Nitro.instance; +export function GetNitroInstance(): INitro { + return Nitro.instance; } diff --git a/apps/frontend/src/api/nitro/OpenUrl.ts b/apps/frontend/src/api/nitro/OpenUrl.ts index 92fdf54..07ef6a1 100644 --- a/apps/frontend/src/api/nitro/OpenUrl.ts +++ b/apps/frontend/src/api/nitro/OpenUrl.ts @@ -1,16 +1,13 @@ -import { HabboWebTools } from '@nitro/renderer'; -import { CreateLinkEvent } from './CreateLinkEvent'; +import {HabboWebTools} from "@nitro/renderer"; -export const OpenUrl = (url: string) => -{ - if(!url || !url.length) return; - - if(url.startsWith('http')) - { - HabboWebTools.openWebPage(url); - } - else - { - CreateLinkEvent(url); - } -} +import {CreateLinkEvent} from "./CreateLinkEvent"; + +export const OpenUrl = (url: string) => { + if (!url || !url.length) return; + + if (url.startsWith("http")) { + HabboWebTools.openWebPage(url); + } else { + CreateLinkEvent(url); + } +}; diff --git a/apps/frontend/src/api/nitro/RemoveLinkEventTracker.ts b/apps/frontend/src/api/nitro/RemoveLinkEventTracker.ts index cdb5cef..992b615 100644 --- a/apps/frontend/src/api/nitro/RemoveLinkEventTracker.ts +++ b/apps/frontend/src/api/nitro/RemoveLinkEventTracker.ts @@ -1,7 +1,7 @@ -import { ILinkEventTracker } from '@nitro/renderer'; -import { GetNitroInstance } from './GetNitroInstance'; +import {ILinkEventTracker} from "@nitro/renderer"; -export function RemoveLinkEventTracker(tracker: ILinkEventTracker): void -{ - GetNitroInstance().removeLinkEventTracker(tracker); +import {GetNitroInstance} from "./GetNitroInstance"; + +export function RemoveLinkEventTracker(tracker: ILinkEventTracker): void { + GetNitroInstance().removeLinkEventTracker(tracker); } diff --git a/apps/frontend/src/api/nitro/SendMessageComposer.ts b/apps/frontend/src/api/nitro/SendMessageComposer.ts index 2721556..01ab98c 100644 --- a/apps/frontend/src/api/nitro/SendMessageComposer.ts +++ b/apps/frontend/src/api/nitro/SendMessageComposer.ts @@ -1,4 +1,5 @@ -import { IMessageComposer } from '@nitro/renderer'; -import { GetConnection } from './GetConnection'; +import {IMessageComposer} from "@nitro/renderer"; + +import {GetConnection} from "./GetConnection"; export const SendMessageComposer = (event: IMessageComposer) => GetConnection().send(event); diff --git a/apps/frontend/src/api/nitro/avatar/GetAvatarPalette.ts b/apps/frontend/src/api/nitro/avatar/GetAvatarPalette.ts index 4a9b2ef..b3b9582 100644 --- a/apps/frontend/src/api/nitro/avatar/GetAvatarPalette.ts +++ b/apps/frontend/src/api/nitro/avatar/GetAvatarPalette.ts @@ -1,7 +1,7 @@ -import { IPalette } from '@nitro/renderer'; -import { GetAvatarRenderManager } from './GetAvatarRenderManager'; +import {IPalette} from "@nitro/renderer"; -export function GetAvatarPalette(paletteId: number): IPalette -{ - return GetAvatarRenderManager().structureData.getPalette(paletteId); +import {GetAvatarRenderManager} from "./GetAvatarRenderManager"; + +export function GetAvatarPalette(paletteId: number): IPalette { + return GetAvatarRenderManager().structureData.getPalette(paletteId); } diff --git a/apps/frontend/src/api/nitro/avatar/GetAvatarRenderManager.ts b/apps/frontend/src/api/nitro/avatar/GetAvatarRenderManager.ts index aa8fee3..23ad2a0 100644 --- a/apps/frontend/src/api/nitro/avatar/GetAvatarRenderManager.ts +++ b/apps/frontend/src/api/nitro/avatar/GetAvatarRenderManager.ts @@ -1,7 +1,7 @@ -import { IAvatarRenderManager } from '@nitro/renderer'; -import { GetNitroInstance } from '../GetNitroInstance'; +import {IAvatarRenderManager} from "@nitro/renderer"; -export function GetAvatarRenderManager(): IAvatarRenderManager -{ - return GetNitroInstance().avatar; +import {GetNitroInstance} from "../GetNitroInstance"; + +export function GetAvatarRenderManager(): IAvatarRenderManager { + return GetNitroInstance().avatar; } diff --git a/apps/frontend/src/api/nitro/avatar/GetAvatarSetType.ts b/apps/frontend/src/api/nitro/avatar/GetAvatarSetType.ts index e82bb00..98cf04c 100644 --- a/apps/frontend/src/api/nitro/avatar/GetAvatarSetType.ts +++ b/apps/frontend/src/api/nitro/avatar/GetAvatarSetType.ts @@ -1,7 +1,7 @@ -import { ISetType } from '@nitro/renderer'; -import { GetAvatarRenderManager } from './GetAvatarRenderManager'; +import {ISetType} from "@nitro/renderer"; -export function GetAvatarSetType(setType: string): ISetType -{ - return GetAvatarRenderManager().structureData.getSetType(setType); +import {GetAvatarRenderManager} from "./GetAvatarRenderManager"; + +export function GetAvatarSetType(setType: string): ISetType { + return GetAvatarRenderManager().structureData.getSetType(setType); } diff --git a/apps/frontend/src/api/nitro/avatar/index.ts b/apps/frontend/src/api/nitro/avatar/index.ts index 258a1ce..1bb7c3f 100644 --- a/apps/frontend/src/api/nitro/avatar/index.ts +++ b/apps/frontend/src/api/nitro/avatar/index.ts @@ -1,3 +1,3 @@ -export * from './GetAvatarPalette'; -export * from './GetAvatarRenderManager'; -export * from './GetAvatarSetType'; +export * from "./GetAvatarPalette"; +export * from "./GetAvatarRenderManager"; +export * from "./GetAvatarSetType"; diff --git a/apps/frontend/src/api/nitro/camera/GetRoomCameraWidgetManager.ts b/apps/frontend/src/api/nitro/camera/GetRoomCameraWidgetManager.ts index 500a7a0..b1da5cc 100644 --- a/apps/frontend/src/api/nitro/camera/GetRoomCameraWidgetManager.ts +++ b/apps/frontend/src/api/nitro/camera/GetRoomCameraWidgetManager.ts @@ -1,7 +1,7 @@ -import { IRoomCameraWidgetManager } from '@nitro/renderer'; -import { GetNitroInstance } from '../GetNitroInstance'; +import {IRoomCameraWidgetManager} from "@nitro/renderer"; -export function GetRoomCameraWidgetManager(): IRoomCameraWidgetManager -{ - return GetNitroInstance().cameraManager; +import {GetNitroInstance} from "../GetNitroInstance"; + +export function GetRoomCameraWidgetManager(): IRoomCameraWidgetManager { + return GetNitroInstance().cameraManager; } diff --git a/apps/frontend/src/api/nitro/camera/index.ts b/apps/frontend/src/api/nitro/camera/index.ts index 3c2707c..269ae08 100644 --- a/apps/frontend/src/api/nitro/camera/index.ts +++ b/apps/frontend/src/api/nitro/camera/index.ts @@ -1 +1 @@ -export * from './GetRoomCameraWidgetManager'; +export * from "./GetRoomCameraWidgetManager"; diff --git a/apps/frontend/src/api/nitro/core/GetConfigurationManager.ts b/apps/frontend/src/api/nitro/core/GetConfigurationManager.ts index a5ed984..ea31e2d 100644 --- a/apps/frontend/src/api/nitro/core/GetConfigurationManager.ts +++ b/apps/frontend/src/api/nitro/core/GetConfigurationManager.ts @@ -1,7 +1,7 @@ -import { IConfigurationManager } from '@nitro/renderer'; -import { GetNitroCore } from './GetNitroCore'; +import {IConfigurationManager} from "@nitro/renderer"; -export function GetConfigurationManager(): IConfigurationManager -{ - return GetNitroCore().configuration; +import {GetNitroCore} from "./GetNitroCore"; + +export function GetConfigurationManager(): IConfigurationManager { + return GetNitroCore().configuration; } diff --git a/apps/frontend/src/api/nitro/core/GetNitroCore.ts b/apps/frontend/src/api/nitro/core/GetNitroCore.ts index a0357f3..3bfd72c 100644 --- a/apps/frontend/src/api/nitro/core/GetNitroCore.ts +++ b/apps/frontend/src/api/nitro/core/GetNitroCore.ts @@ -1,7 +1,7 @@ -import { INitroCore } from '@nitro/renderer'; -import { GetNitroInstance } from '..'; +import {INitroCore} from "@nitro/renderer"; -export function GetNitroCore(): INitroCore -{ - return GetNitroInstance().core; +import {GetNitroInstance} from ".."; + +export function GetNitroCore(): INitroCore { + return GetNitroInstance().core; } diff --git a/apps/frontend/src/api/nitro/core/index.ts b/apps/frontend/src/api/nitro/core/index.ts index 3322c9c..2ea2923 100644 --- a/apps/frontend/src/api/nitro/core/index.ts +++ b/apps/frontend/src/api/nitro/core/index.ts @@ -1,2 +1,2 @@ -export * from './GetConfigurationManager'; -export * from './GetNitroCore'; +export * from "./GetConfigurationManager"; +export * from "./GetNitroCore"; diff --git a/apps/frontend/src/api/nitro/index.ts b/apps/frontend/src/api/nitro/index.ts index c43e958..5f650c0 100644 --- a/apps/frontend/src/api/nitro/index.ts +++ b/apps/frontend/src/api/nitro/index.ts @@ -1,15 +1,15 @@ -export * from './AddLinkEventTracker'; -export * from './avatar'; -export * from './camera'; -export * from './core'; -export * from './CreateLinkEvent'; -export * from './GetCommunication'; -export * from './GetConfiguration'; -export * from './GetConnection'; -export * from './GetLocalization'; -export * from './GetNitroInstance'; -export * from './OpenUrl'; -export * from './RemoveLinkEventTracker'; -export * from './room'; -export * from './SendMessageComposer'; -export * from './session'; +export * from "./AddLinkEventTracker"; +export * from "./avatar"; +export * from "./camera"; +export * from "./core"; +export * from "./CreateLinkEvent"; +export * from "./GetCommunication"; +export * from "./GetConfiguration"; +export * from "./GetConnection"; +export * from "./GetLocalization"; +export * from "./GetNitroInstance"; +export * from "./OpenUrl"; +export * from "./RemoveLinkEventTracker"; +export * from "./room"; +export * from "./SendMessageComposer"; +export * from "./session"; diff --git a/apps/frontend/src/api/nitro/room/DispatchMouseEvent.ts b/apps/frontend/src/api/nitro/room/DispatchMouseEvent.ts index a807268..883b941 100644 --- a/apps/frontend/src/api/nitro/room/DispatchMouseEvent.ts +++ b/apps/frontend/src/api/nitro/room/DispatchMouseEvent.ts @@ -1,55 +1,52 @@ -import { MouseEventType } from '@nitro/renderer'; -import { GetRoomEngine } from './GetRoomEngine'; +import {MouseEventType} from "@nitro/renderer"; + +import {GetRoomEngine} from "./GetRoomEngine"; let didMouseMove = false; let lastClick = 0; let clickCount = 0; -export const DispatchMouseEvent = (event: MouseEvent, canvasId: number = 1) => -{ - const x = event.clientX; - const y = event.clientY; +export const DispatchMouseEvent = (event: MouseEvent, canvasId: number = 1) => { + const x = event.clientX; + const y = event.clientY; - let eventType = event.type; + let eventType = event.type; - if(eventType === MouseEventType.MOUSE_CLICK) - { - if(lastClick) - { - clickCount = 1; + if (eventType === MouseEventType.MOUSE_CLICK) { + if (lastClick) { + clickCount = 1; - if(lastClick >= Date.now() - 300) clickCount++; - } - - lastClick = Date.now(); - - if(clickCount === 2) - { - if(!didMouseMove) eventType = MouseEventType.DOUBLE_CLICK; - - clickCount = 0; - lastClick = null; - } + if (lastClick >= Date.now() - 300) clickCount++; } - switch(eventType) - { - case MouseEventType.MOUSE_CLICK: - break; - case MouseEventType.DOUBLE_CLICK: - break; - case MouseEventType.MOUSE_MOVE: - didMouseMove = true; - break; - case MouseEventType.MOUSE_DOWN: - didMouseMove = false; - break; - case MouseEventType.MOUSE_UP: - break; - case MouseEventType.RIGHT_CLICK: - break; - default: return; + lastClick = Date.now(); + + if (clickCount === 2) { + if (!didMouseMove) eventType = MouseEventType.DOUBLE_CLICK; + + clickCount = 0; + lastClick = null; } - - GetRoomEngine().dispatchMouseEvent(canvasId, x, y, eventType, event.altKey, (event.ctrlKey || event.metaKey), event.shiftKey, false); -} + } + + switch (eventType) { + case MouseEventType.MOUSE_CLICK: + break; + case MouseEventType.DOUBLE_CLICK: + break; + case MouseEventType.MOUSE_MOVE: + didMouseMove = true; + break; + case MouseEventType.MOUSE_DOWN: + didMouseMove = false; + break; + case MouseEventType.MOUSE_UP: + break; + case MouseEventType.RIGHT_CLICK: + break; + default: + return; + } + + GetRoomEngine().dispatchMouseEvent(canvasId, x, y, eventType, event.altKey, event.ctrlKey || event.metaKey, event.shiftKey, false); +}; diff --git a/apps/frontend/src/api/nitro/room/DispatchTouchEvent.ts b/apps/frontend/src/api/nitro/room/DispatchTouchEvent.ts index a83c679..080fa8b 100644 --- a/apps/frontend/src/api/nitro/room/DispatchTouchEvent.ts +++ b/apps/frontend/src/api/nitro/room/DispatchTouchEvent.ts @@ -1,82 +1,81 @@ -import { MouseEventType, TouchEventType } from '@nitro/renderer'; -import { GetRoomEngine } from './GetRoomEngine'; +import {MouseEventType, TouchEventType} from "@nitro/renderer"; + +import {GetRoomEngine} from "./GetRoomEngine"; let didMouseMove = false; let lastClick = 0; let clickCount = 0; -export const DispatchTouchEvent = (event: TouchEvent, canvasId: number = 1, longTouch: boolean = false, altKey: boolean = false, ctrlKey: boolean = false, shiftKey: boolean = false) => -{ - let x = 0; - let y = 0; +export const DispatchTouchEvent = ( + event: TouchEvent, + canvasId: number = 1, + longTouch: boolean = false, + altKey: boolean = false, + ctrlKey: boolean = false, + shiftKey: boolean = false +) => { + let x = 0; + let y = 0; - if(event.touches[0]) - { - x = event.touches[0].clientX; - y = event.touches[0].clientY; + if (event.touches[0]) { + x = event.touches[0].clientX; + y = event.touches[0].clientY; + } else if (event.changedTouches[0]) { + x = event.changedTouches[0].clientX; + y = event.changedTouches[0].clientY; + } + + let eventType = event.type; + + if (longTouch) eventType = TouchEventType.TOUCH_LONG; + + if (eventType === MouseEventType.MOUSE_CLICK || eventType === TouchEventType.TOUCH_END) { + eventType = MouseEventType.MOUSE_CLICK; + + if (lastClick) { + clickCount = 1; + + if (lastClick >= Date.now() - 300) clickCount++; } - else if(event.changedTouches[0]) - { - x = event.changedTouches[0].clientX; - y = event.changedTouches[0].clientY; + lastClick = Date.now(); + + if (clickCount === 2) { + if (!didMouseMove) eventType = MouseEventType.DOUBLE_CLICK; + + clickCount = 0; + lastClick = null; } - - let eventType = event.type; + } - if(longTouch) eventType = TouchEventType.TOUCH_LONG; + switch (eventType) { + case MouseEventType.MOUSE_CLICK: + break; + case MouseEventType.DOUBLE_CLICK: + break; + case TouchEventType.TOUCH_START: + eventType = MouseEventType.MOUSE_DOWN; - if(eventType === MouseEventType.MOUSE_CLICK || eventType === TouchEventType.TOUCH_END) - { - eventType = MouseEventType.MOUSE_CLICK; + didMouseMove = false; + break; + case TouchEventType.TOUCH_MOVE: + eventType = MouseEventType.MOUSE_MOVE; - if(lastClick) - { - clickCount = 1; - - if(lastClick >= (Date.now() - 300)) clickCount++; - } - - lastClick = Date.now(); - - if(clickCount === 2) - { - if(!didMouseMove) eventType = MouseEventType.DOUBLE_CLICK; - - clickCount = 0; - lastClick = null; - } - } - - switch(eventType) - { - case MouseEventType.MOUSE_CLICK: - break; - case MouseEventType.DOUBLE_CLICK: - break; - case TouchEventType.TOUCH_START: - eventType = MouseEventType.MOUSE_DOWN; - - didMouseMove = false; - break; - case TouchEventType.TOUCH_MOVE: - eventType = MouseEventType.MOUSE_MOVE; - - didMouseMove = true; - break; - case TouchEventType.TOUCH_END: - eventType = MouseEventType.MOUSE_UP; - break; - case TouchEventType.TOUCH_LONG: - eventType = MouseEventType.MOUSE_DOWN_LONG; - break; - default: return; - } - - if (eventType === TouchEventType.TOUCH_START) - { - GetRoomEngine().dispatchMouseEvent(canvasId, x, y, eventType, altKey, ctrlKey, shiftKey, false); - } + didMouseMove = true; + break; + case TouchEventType.TOUCH_END: + eventType = MouseEventType.MOUSE_UP; + break; + case TouchEventType.TOUCH_LONG: + eventType = MouseEventType.MOUSE_DOWN_LONG; + break; + default: + return; + } + if (eventType === TouchEventType.TOUCH_START) { GetRoomEngine().dispatchMouseEvent(canvasId, x, y, eventType, altKey, ctrlKey, shiftKey, false); -} + } + + GetRoomEngine().dispatchMouseEvent(canvasId, x, y, eventType, altKey, ctrlKey, shiftKey, false); +}; diff --git a/apps/frontend/src/api/nitro/room/GetOwnRoomObject.ts b/apps/frontend/src/api/nitro/room/GetOwnRoomObject.ts index 25393c0..1cd6c40 100644 --- a/apps/frontend/src/api/nitro/room/GetOwnRoomObject.ts +++ b/apps/frontend/src/api/nitro/room/GetOwnRoomObject.ts @@ -1,32 +1,29 @@ -import { IRoomObjectController, RoomObjectCategory } from '@nitro/renderer'; -import { GetRoomSession, GetSessionDataManager } from '../session'; -import { GetRoomEngine } from './GetRoomEngine'; +import {IRoomObjectController, RoomObjectCategory} from "@nitro/renderer"; -export function GetOwnRoomObject(): IRoomObjectController -{ - const userId = GetSessionDataManager().userId; - const roomId = GetRoomEngine().activeRoomId; - const category = RoomObjectCategory.UNIT; - const totalObjects = GetRoomEngine().getTotalObjectsForManager(roomId, category); +import {GetRoomSession, GetSessionDataManager} from "../session"; +import {GetRoomEngine} from "./GetRoomEngine"; - let i = 0; +export function GetOwnRoomObject(): IRoomObjectController { + const userId = GetSessionDataManager().userId; + const roomId = GetRoomEngine().activeRoomId; + const category = RoomObjectCategory.UNIT; + const totalObjects = GetRoomEngine().getTotalObjectsForManager(roomId, category); - while(i < totalObjects) - { - const roomObject = GetRoomEngine().getRoomObjectByIndex(roomId, i, category); + let i = 0; - if(roomObject) - { - const userData = GetRoomSession().userDataManager.getUserDataByIndex(roomObject.id); + while (i < totalObjects) { + const roomObject = GetRoomEngine().getRoomObjectByIndex(roomId, i, category); - if(userData) - { - if(userData.webID === userId) return roomObject; - } - } + if (roomObject) { + const userData = GetRoomSession().userDataManager.getUserDataByIndex(roomObject.id); - i++; + if (userData) { + if (userData.webID === userId) return roomObject; + } } - return null; + i++; + } + + return null; } diff --git a/apps/frontend/src/api/nitro/room/GetRoomEngine.ts b/apps/frontend/src/api/nitro/room/GetRoomEngine.ts index e5c6354..7c1b56e 100644 --- a/apps/frontend/src/api/nitro/room/GetRoomEngine.ts +++ b/apps/frontend/src/api/nitro/room/GetRoomEngine.ts @@ -1,7 +1,7 @@ -import { IRoomEngine } from '@nitro/renderer'; -import { GetNitroInstance } from '../GetNitroInstance'; +import {IRoomEngine} from "@nitro/renderer"; -export function GetRoomEngine(): IRoomEngine -{ - return GetNitroInstance().roomEngine; +import {GetNitroInstance} from "../GetNitroInstance"; + +export function GetRoomEngine(): IRoomEngine { + return GetNitroInstance().roomEngine; } diff --git a/apps/frontend/src/api/nitro/room/GetRoomObjectBounds.ts b/apps/frontend/src/api/nitro/room/GetRoomObjectBounds.ts index 0a42ad6..c6256e5 100644 --- a/apps/frontend/src/api/nitro/room/GetRoomObjectBounds.ts +++ b/apps/frontend/src/api/nitro/room/GetRoomObjectBounds.ts @@ -1,13 +1,12 @@ -import { GetRoomEngine } from './GetRoomEngine'; +import {GetRoomEngine} from "./GetRoomEngine"; -export const GetRoomObjectBounds = (roomId: number, objectId: number, category: number, canvasId = 1) => -{ - const rectangle = GetRoomEngine().getRoomObjectBoundingRectangle(roomId, objectId, category, canvasId); +export const GetRoomObjectBounds = (roomId: number, objectId: number, category: number, canvasId = 1) => { + const rectangle = GetRoomEngine().getRoomObjectBoundingRectangle(roomId, objectId, category, canvasId); - if(!rectangle) return null; + if (!rectangle) return null; - rectangle.x = Math.round(rectangle.x); - rectangle.y = Math.round(rectangle.y); + rectangle.x = Math.round(rectangle.x); + rectangle.y = Math.round(rectangle.y); - return rectangle; -} + return rectangle; +}; diff --git a/apps/frontend/src/api/nitro/room/GetRoomObjectScreenLocation.ts b/apps/frontend/src/api/nitro/room/GetRoomObjectScreenLocation.ts index 1a8d973..cf69fe8 100644 --- a/apps/frontend/src/api/nitro/room/GetRoomObjectScreenLocation.ts +++ b/apps/frontend/src/api/nitro/room/GetRoomObjectScreenLocation.ts @@ -1,13 +1,12 @@ -import { GetRoomEngine } from './GetRoomEngine'; +import {GetRoomEngine} from "./GetRoomEngine"; -export const GetRoomObjectScreenLocation = (roomId: number, objectId: number, category: number, canvasId = 1) => -{ - const point = GetRoomEngine().getRoomObjectScreenLocation(roomId, objectId, category, canvasId); +export const GetRoomObjectScreenLocation = (roomId: number, objectId: number, category: number, canvasId = 1) => { + const point = GetRoomEngine().getRoomObjectScreenLocation(roomId, objectId, category, canvasId); - if(!point) return null; + if (!point) return null; - point.x = Math.round(point.x); - point.y = Math.round(point.y); + point.x = Math.round(point.x); + point.y = Math.round(point.y); - return point; -} + return point; +}; diff --git a/apps/frontend/src/api/nitro/room/InitializeRoomInstanceRenderingCanvas.ts b/apps/frontend/src/api/nitro/room/InitializeRoomInstanceRenderingCanvas.ts index d85d739..dcd496e 100644 --- a/apps/frontend/src/api/nitro/room/InitializeRoomInstanceRenderingCanvas.ts +++ b/apps/frontend/src/api/nitro/room/InitializeRoomInstanceRenderingCanvas.ts @@ -1,9 +1,8 @@ -import { GetRoomEngine } from './GetRoomEngine'; +import {GetRoomEngine} from "./GetRoomEngine"; -export const InitializeRoomInstanceRenderingCanvas = (width: number, height: number, canvasId: number = 1) => -{ - const roomEngine = GetRoomEngine(); - const roomId = roomEngine.activeRoomId; +export const InitializeRoomInstanceRenderingCanvas = (width: number, height: number, canvasId: number = 1) => { + const roomEngine = GetRoomEngine(); + const roomId = roomEngine.activeRoomId; - roomEngine.initializeRoomInstanceRenderingCanvas(roomId, canvasId, width, height); -} + roomEngine.initializeRoomInstanceRenderingCanvas(roomId, canvasId, width, height); +}; diff --git a/apps/frontend/src/api/nitro/room/IsFurnitureSelectionDisabled.ts b/apps/frontend/src/api/nitro/room/IsFurnitureSelectionDisabled.ts index eef92dc..78112c9 100644 --- a/apps/frontend/src/api/nitro/room/IsFurnitureSelectionDisabled.ts +++ b/apps/frontend/src/api/nitro/room/IsFurnitureSelectionDisabled.ts @@ -1,24 +1,22 @@ -import { RoomEngineObjectEvent, RoomObjectVariable } from '@nitro/renderer'; -import { GetSessionDataManager } from '../..'; -import { GetRoomEngine } from './GetRoomEngine'; +import {RoomEngineObjectEvent, RoomObjectVariable} from "@nitro/renderer"; -export function IsFurnitureSelectionDisabled(event: RoomEngineObjectEvent): boolean -{ - let result = false; +import {GetSessionDataManager} from "../.."; +import {GetRoomEngine} from "./GetRoomEngine"; - const roomObject = GetRoomEngine().getRoomObject(event.roomId, event.objectId, event.category); +export function IsFurnitureSelectionDisabled(event: RoomEngineObjectEvent): boolean { + let result = false; - if(roomObject) - { - const selectionDisabled = (roomObject.model.getValue(RoomObjectVariable.FURNITURE_SELECTION_DISABLED) === 1); + const roomObject = GetRoomEngine().getRoomObject(event.roomId, event.objectId, event.category); - if(selectionDisabled) - { - result = true; + if (roomObject) { + const selectionDisabled = roomObject.model.getValue(RoomObjectVariable.FURNITURE_SELECTION_DISABLED) === 1; - if(GetSessionDataManager().isModerator) result = false; - } + if (selectionDisabled) { + result = true; + + if (GetSessionDataManager().isModerator) result = false; } + } - return result; + return result; } diff --git a/apps/frontend/src/api/nitro/room/ProcessRoomObjectOperation.ts b/apps/frontend/src/api/nitro/room/ProcessRoomObjectOperation.ts index b9187fa..ecac650 100644 --- a/apps/frontend/src/api/nitro/room/ProcessRoomObjectOperation.ts +++ b/apps/frontend/src/api/nitro/room/ProcessRoomObjectOperation.ts @@ -1,6 +1,5 @@ -import { GetRoomEngine } from './GetRoomEngine'; +import {GetRoomEngine} from "./GetRoomEngine"; -export function ProcessRoomObjectOperation(objectId: number, category: number, operation: string): void -{ - GetRoomEngine().processRoomObjectOperation(objectId, category, operation); +export function ProcessRoomObjectOperation(objectId: number, category: number, operation: string): void { + GetRoomEngine().processRoomObjectOperation(objectId, category, operation); } diff --git a/apps/frontend/src/api/nitro/room/SetActiveRoomId.ts b/apps/frontend/src/api/nitro/room/SetActiveRoomId.ts index 2cccd84..7b645b9 100644 --- a/apps/frontend/src/api/nitro/room/SetActiveRoomId.ts +++ b/apps/frontend/src/api/nitro/room/SetActiveRoomId.ts @@ -1,6 +1,5 @@ -import { GetRoomEngine } from './GetRoomEngine'; +import {GetRoomEngine} from "./GetRoomEngine"; -export function SetActiveRoomId(roomId: number): void -{ - GetRoomEngine().setActiveRoomId(roomId); +export function SetActiveRoomId(roomId: number): void { + GetRoomEngine().setActiveRoomId(roomId); } diff --git a/apps/frontend/src/api/nitro/room/index.ts b/apps/frontend/src/api/nitro/room/index.ts index 764b72e..9c27e44 100644 --- a/apps/frontend/src/api/nitro/room/index.ts +++ b/apps/frontend/src/api/nitro/room/index.ts @@ -1,10 +1,10 @@ -export * from './DispatchMouseEvent'; -export * from './DispatchTouchEvent'; -export * from './GetOwnRoomObject'; -export * from './GetRoomEngine'; -export * from './GetRoomObjectBounds'; -export * from './GetRoomObjectScreenLocation'; -export * from './InitializeRoomInstanceRenderingCanvas'; -export * from './IsFurnitureSelectionDisabled'; -export * from './ProcessRoomObjectOperation'; -export * from './SetActiveRoomId'; +export * from "./DispatchMouseEvent"; +export * from "./DispatchTouchEvent"; +export * from "./GetOwnRoomObject"; +export * from "./GetRoomEngine"; +export * from "./GetRoomObjectBounds"; +export * from "./GetRoomObjectScreenLocation"; +export * from "./InitializeRoomInstanceRenderingCanvas"; +export * from "./IsFurnitureSelectionDisabled"; +export * from "./ProcessRoomObjectOperation"; +export * from "./SetActiveRoomId"; diff --git a/apps/frontend/src/api/nitro/session/CanManipulateFurniture.ts b/apps/frontend/src/api/nitro/session/CanManipulateFurniture.ts index ec0a582..649af38 100644 --- a/apps/frontend/src/api/nitro/session/CanManipulateFurniture.ts +++ b/apps/frontend/src/api/nitro/session/CanManipulateFurniture.ts @@ -1,11 +1,16 @@ -import { IRoomSession, RoomControllerLevel } from '@nitro/renderer'; -import { GetSessionDataManager } from '../..'; -import { GetRoomEngine } from '../room/GetRoomEngine'; -import { IsOwnerOfFurniture } from './IsOwnerOfFurniture'; +import {IRoomSession, RoomControllerLevel} from "@nitro/renderer"; -export function CanManipulateFurniture(roomSession: IRoomSession, objectId: number, category: number): boolean -{ - if(!roomSession) return false; +import {GetSessionDataManager} from "../.."; +import {GetRoomEngine} from "../room/GetRoomEngine"; +import {IsOwnerOfFurniture} from "./IsOwnerOfFurniture"; - return (roomSession.isRoomOwner || (roomSession.controllerLevel >= RoomControllerLevel.GUEST) || GetSessionDataManager().isModerator || IsOwnerOfFurniture(GetRoomEngine().getRoomObject(roomSession.roomId, objectId, category))); +export function CanManipulateFurniture(roomSession: IRoomSession, objectId: number, category: number): boolean { + if (!roomSession) return false; + + return ( + roomSession.isRoomOwner || + roomSession.controllerLevel >= RoomControllerLevel.GUEST || + GetSessionDataManager().isModerator || + IsOwnerOfFurniture(GetRoomEngine().getRoomObject(roomSession.roomId, objectId, category)) + ); } diff --git a/apps/frontend/src/api/nitro/session/CreateRoomSession.ts b/apps/frontend/src/api/nitro/session/CreateRoomSession.ts index 3be6a8a..5180f32 100644 --- a/apps/frontend/src/api/nitro/session/CreateRoomSession.ts +++ b/apps/frontend/src/api/nitro/session/CreateRoomSession.ts @@ -1,6 +1,5 @@ -import { GetRoomSessionManager } from './GetRoomSessionManager'; +import {GetRoomSessionManager} from "./GetRoomSessionManager"; -export function CreateRoomSession(roomId: number, password: string = null): void -{ - GetRoomSessionManager().createSession(roomId, password); +export function CreateRoomSession(roomId: number, password: string = null): void { + GetRoomSessionManager().createSession(roomId, password); } diff --git a/apps/frontend/src/api/nitro/session/GetCanStandUp.ts b/apps/frontend/src/api/nitro/session/GetCanStandUp.ts index 7206de7..00ff412 100644 --- a/apps/frontend/src/api/nitro/session/GetCanStandUp.ts +++ b/apps/frontend/src/api/nitro/session/GetCanStandUp.ts @@ -1,13 +1,13 @@ -import { AvatarAction, RoomObjectVariable } from '@nitro/renderer'; -import { GetOwnRoomObject } from '../room'; +import {AvatarAction, RoomObjectVariable} from "@nitro/renderer"; -export function GetCanStandUp(): string -{ - const roomObject = GetOwnRoomObject(); +import {GetOwnRoomObject} from "../room"; - if(!roomObject) return AvatarAction.POSTURE_STAND; - - const model = roomObject.model; - - return model.getValue(RoomObjectVariable.FIGURE_CAN_STAND_UP); +export function GetCanStandUp(): string { + const roomObject = GetOwnRoomObject(); + + if (!roomObject) return AvatarAction.POSTURE_STAND; + + const model = roomObject.model; + + return model.getValue(RoomObjectVariable.FIGURE_CAN_STAND_UP); } diff --git a/apps/frontend/src/api/nitro/session/GetCanUseExpression.ts b/apps/frontend/src/api/nitro/session/GetCanUseExpression.ts index 440a083..d5780f6 100644 --- a/apps/frontend/src/api/nitro/session/GetCanUseExpression.ts +++ b/apps/frontend/src/api/nitro/session/GetCanUseExpression.ts @@ -1,14 +1,14 @@ -import { RoomObjectVariable } from '@nitro/renderer'; -import { GetOwnRoomObject } from '../room'; +import {RoomObjectVariable} from "@nitro/renderer"; -export function GetCanUseExpression(): boolean -{ - const roomObject = GetOwnRoomObject(); +import {GetOwnRoomObject} from "../room"; - if(!roomObject) return false; - - const model = roomObject.model; - const effectId = model.getValue(RoomObjectVariable.FIGURE_EFFECT); +export function GetCanUseExpression(): boolean { + const roomObject = GetOwnRoomObject(); - return !((effectId === 29) || (effectId === 30) || (effectId === 185)); + if (!roomObject) return false; + + const model = roomObject.model; + const effectId = model.getValue(RoomObjectVariable.FIGURE_EFFECT); + + return !(effectId === 29 || effectId === 30 || effectId === 185); } diff --git a/apps/frontend/src/api/nitro/session/GetClubMemberLevel.ts b/apps/frontend/src/api/nitro/session/GetClubMemberLevel.ts index b73a20c..7bbf16b 100644 --- a/apps/frontend/src/api/nitro/session/GetClubMemberLevel.ts +++ b/apps/frontend/src/api/nitro/session/GetClubMemberLevel.ts @@ -1,10 +1,10 @@ -import { HabboClubLevelEnum } from '@nitro/renderer'; -import { GetConfiguration } from '..'; -import { GetSessionDataManager } from './GetSessionDataManager'; +import {HabboClubLevelEnum} from "@nitro/renderer"; -export function GetClubMemberLevel(): number -{ - if(GetConfiguration('hc.disabled', false)) return HabboClubLevelEnum.VIP; - - return GetSessionDataManager().clubLevel; +import {GetConfiguration} from ".."; +import {GetSessionDataManager} from "./GetSessionDataManager"; + +export function GetClubMemberLevel(): number { + if (GetConfiguration("hc.disabled", false)) return HabboClubLevelEnum.VIP; + + return GetSessionDataManager().clubLevel; } diff --git a/apps/frontend/src/api/nitro/session/GetFurnitureData.ts b/apps/frontend/src/api/nitro/session/GetFurnitureData.ts index 65d0d1f..1952d9b 100644 --- a/apps/frontend/src/api/nitro/session/GetFurnitureData.ts +++ b/apps/frontend/src/api/nitro/session/GetFurnitureData.ts @@ -1,20 +1,19 @@ -import { IFurnitureData } from '@nitro/renderer'; -import { GetSessionDataManager } from '.'; -import { ProductTypeEnum } from '../../catalog'; +import {IFurnitureData} from "@nitro/renderer"; -export function GetFurnitureData(furniClassId: number, productType: string): IFurnitureData -{ - let furniData: IFurnitureData = null; +import {GetSessionDataManager} from "."; +import {ProductTypeEnum} from "../../catalog"; - switch(productType.toLowerCase()) - { - case ProductTypeEnum.FLOOR: - furniData = GetSessionDataManager().getFloorItemData(furniClassId); - break; - case ProductTypeEnum.WALL: - furniData = GetSessionDataManager().getWallItemData(furniClassId); - break; - } +export function GetFurnitureData(furniClassId: number, productType: string): IFurnitureData { + let furniData: IFurnitureData = null; - return furniData; + switch (productType.toLowerCase()) { + case ProductTypeEnum.FLOOR: + furniData = GetSessionDataManager().getFloorItemData(furniClassId); + break; + case ProductTypeEnum.WALL: + furniData = GetSessionDataManager().getWallItemData(furniClassId); + break; + } + + return furniData; } diff --git a/apps/frontend/src/api/nitro/session/GetFurnitureDataForProductOffer.ts b/apps/frontend/src/api/nitro/session/GetFurnitureDataForProductOffer.ts index a6be834..76355f7 100644 --- a/apps/frontend/src/api/nitro/session/GetFurnitureDataForProductOffer.ts +++ b/apps/frontend/src/api/nitro/session/GetFurnitureDataForProductOffer.ts @@ -1,21 +1,20 @@ -import { CatalogPageMessageProductData, FurnitureType, IFurnitureData } from '@nitro/renderer'; -import { GetSessionDataManager } from './GetSessionDataManager'; +import {CatalogPageMessageProductData, FurnitureType, IFurnitureData} from "@nitro/renderer"; -export function GetFurnitureDataForProductOffer(offer: CatalogPageMessageProductData): IFurnitureData -{ - if(!offer) return null; +import {GetSessionDataManager} from "./GetSessionDataManager"; - let furniData: IFurnitureData = null; +export function GetFurnitureDataForProductOffer(offer: CatalogPageMessageProductData): IFurnitureData { + if (!offer) return null; - switch((offer.productType.toUpperCase())) - { - case FurnitureType.FLOOR: - furniData = GetSessionDataManager().getFloorItemData(offer.furniClassId); - break; - case FurnitureType.WALL: - furniData = GetSessionDataManager().getWallItemData(offer.furniClassId); - break; - } + let furniData: IFurnitureData = null; - return furniData; + switch (offer.productType.toUpperCase()) { + case FurnitureType.FLOOR: + furniData = GetSessionDataManager().getFloorItemData(offer.furniClassId); + break; + case FurnitureType.WALL: + furniData = GetSessionDataManager().getWallItemData(offer.furniClassId); + break; + } + + return furniData; } diff --git a/apps/frontend/src/api/nitro/session/GetFurnitureDataForRoomObject.ts b/apps/frontend/src/api/nitro/session/GetFurnitureDataForRoomObject.ts index a45a848..10fc1e8 100644 --- a/apps/frontend/src/api/nitro/session/GetFurnitureDataForRoomObject.ts +++ b/apps/frontend/src/api/nitro/session/GetFurnitureDataForRoomObject.ts @@ -1,22 +1,21 @@ -import { IFurnitureData, RoomObjectCategory, RoomObjectVariable } from '@nitro/renderer'; -import { GetRoomEngine } from '../room'; -import { GetSessionDataManager } from './GetSessionDataManager'; +import {IFurnitureData, RoomObjectCategory, RoomObjectVariable} from "@nitro/renderer"; -export function GetFurnitureDataForRoomObject(roomId: number, objectId: number, category: number): IFurnitureData -{ - const roomObject = GetRoomEngine().getRoomObject(roomId, objectId, category); +import {GetRoomEngine} from "../room"; +import {GetSessionDataManager} from "./GetSessionDataManager"; - if(!roomObject) return; +export function GetFurnitureDataForRoomObject(roomId: number, objectId: number, category: number): IFurnitureData { + const roomObject = GetRoomEngine().getRoomObject(roomId, objectId, category); - const typeId = roomObject.model.getValue(RoomObjectVariable.FURNITURE_TYPE_ID); + if (!roomObject) return; - switch(category) - { - case RoomObjectCategory.FLOOR: - return GetSessionDataManager().getFloorItemData(typeId); - case RoomObjectCategory.WALL: - return GetSessionDataManager().getWallItemData(typeId); - } + const typeId = roomObject.model.getValue(RoomObjectVariable.FURNITURE_TYPE_ID); - return null; + switch (category) { + case RoomObjectCategory.FLOOR: + return GetSessionDataManager().getFloorItemData(typeId); + case RoomObjectCategory.WALL: + return GetSessionDataManager().getWallItemData(typeId); + } + + return null; } diff --git a/apps/frontend/src/api/nitro/session/GetOwnPosture.ts b/apps/frontend/src/api/nitro/session/GetOwnPosture.ts index b109143..593f33a 100644 --- a/apps/frontend/src/api/nitro/session/GetOwnPosture.ts +++ b/apps/frontend/src/api/nitro/session/GetOwnPosture.ts @@ -1,13 +1,13 @@ -import { AvatarAction, RoomObjectVariable } from '@nitro/renderer'; -import { GetOwnRoomObject } from '../room'; +import {AvatarAction, RoomObjectVariable} from "@nitro/renderer"; -export function GetOwnPosture(): string -{ - const roomObject = GetOwnRoomObject(); +import {GetOwnRoomObject} from "../room"; - if(!roomObject) return AvatarAction.POSTURE_STAND; - - const model = roomObject.model; - - return model.getValue(RoomObjectVariable.FIGURE_POSTURE); +export function GetOwnPosture(): string { + const roomObject = GetOwnRoomObject(); + + if (!roomObject) return AvatarAction.POSTURE_STAND; + + const model = roomObject.model; + + return model.getValue(RoomObjectVariable.FIGURE_POSTURE); } diff --git a/apps/frontend/src/api/nitro/session/GetProductDataForLocalization.ts b/apps/frontend/src/api/nitro/session/GetProductDataForLocalization.ts index cff6e76..39a98e8 100644 --- a/apps/frontend/src/api/nitro/session/GetProductDataForLocalization.ts +++ b/apps/frontend/src/api/nitro/session/GetProductDataForLocalization.ts @@ -1,9 +1,9 @@ -import { IProductData } from '@nitro/renderer'; -import { GetSessionDataManager } from './GetSessionDataManager'; +import {IProductData} from "@nitro/renderer"; -export function GetProductDataForLocalization(localizationId: string): IProductData -{ - if(!localizationId) return null; +import {GetSessionDataManager} from "./GetSessionDataManager"; - return GetSessionDataManager().getProductData(localizationId); +export function GetProductDataForLocalization(localizationId: string): IProductData { + if (!localizationId) return null; + + return GetSessionDataManager().getProductData(localizationId); } diff --git a/apps/frontend/src/api/nitro/session/GetRoomSession.ts b/apps/frontend/src/api/nitro/session/GetRoomSession.ts index 5f5a8e3..27c5ab0 100644 --- a/apps/frontend/src/api/nitro/session/GetRoomSession.ts +++ b/apps/frontend/src/api/nitro/session/GetRoomSession.ts @@ -1,7 +1,7 @@ -import { IRoomSession } from '@nitro/renderer'; -import { GetRoomSessionManager } from './GetRoomSessionManager'; +import {IRoomSession} from "@nitro/renderer"; -export function GetRoomSession(): IRoomSession -{ - return GetRoomSessionManager().getSession(-1); +import {GetRoomSessionManager} from "./GetRoomSessionManager"; + +export function GetRoomSession(): IRoomSession { + return GetRoomSessionManager().getSession(-1); } diff --git a/apps/frontend/src/api/nitro/session/GetRoomSessionManager.ts b/apps/frontend/src/api/nitro/session/GetRoomSessionManager.ts index e0ce8e1..721c14a 100644 --- a/apps/frontend/src/api/nitro/session/GetRoomSessionManager.ts +++ b/apps/frontend/src/api/nitro/session/GetRoomSessionManager.ts @@ -1,7 +1,7 @@ -import { IRoomSessionManager } from '@nitro/renderer'; -import { GetNitroInstance } from '../GetNitroInstance'; +import {IRoomSessionManager} from "@nitro/renderer"; -export function GetRoomSessionManager(): IRoomSessionManager -{ - return GetNitroInstance().roomSessionManager; +import {GetNitroInstance} from "../GetNitroInstance"; + +export function GetRoomSessionManager(): IRoomSessionManager { + return GetNitroInstance().roomSessionManager; } diff --git a/apps/frontend/src/api/nitro/session/GetSessionDataManager.ts b/apps/frontend/src/api/nitro/session/GetSessionDataManager.ts index 1cac7ba..579b5d8 100644 --- a/apps/frontend/src/api/nitro/session/GetSessionDataManager.ts +++ b/apps/frontend/src/api/nitro/session/GetSessionDataManager.ts @@ -1,7 +1,7 @@ -import { ISessionDataManager } from '@nitro/renderer'; -import { GetNitroInstance } from '../GetNitroInstance'; +import {ISessionDataManager} from "@nitro/renderer"; -export function GetSessionDataManager(): ISessionDataManager -{ - return GetNitroInstance().sessionDataManager; +import {GetNitroInstance} from "../GetNitroInstance"; + +export function GetSessionDataManager(): ISessionDataManager { + return GetNitroInstance().sessionDataManager; } diff --git a/apps/frontend/src/api/nitro/session/GoToDesktop.ts b/apps/frontend/src/api/nitro/session/GoToDesktop.ts index 4c1dd94..f3d93fe 100644 --- a/apps/frontend/src/api/nitro/session/GoToDesktop.ts +++ b/apps/frontend/src/api/nitro/session/GoToDesktop.ts @@ -1,7 +1,7 @@ -import { DesktopViewComposer } from '@nitro/renderer'; -import { SendMessageComposer } from '..'; +import {DesktopViewComposer} from "@nitro/renderer"; -export function GoToDesktop(): void -{ - SendMessageComposer(new DesktopViewComposer()); +import {SendMessageComposer} from ".."; + +export function GoToDesktop(): void { + SendMessageComposer(new DesktopViewComposer()); } diff --git a/apps/frontend/src/api/nitro/session/HasHabboClub.ts b/apps/frontend/src/api/nitro/session/HasHabboClub.ts index 0451692..cb01e65 100644 --- a/apps/frontend/src/api/nitro/session/HasHabboClub.ts +++ b/apps/frontend/src/api/nitro/session/HasHabboClub.ts @@ -1,7 +1,7 @@ -import { HabboClubLevelEnum } from '@nitro/renderer'; -import { GetSessionDataManager } from './GetSessionDataManager'; +import {HabboClubLevelEnum} from "@nitro/renderer"; -export function HasHabboClub(): boolean -{ - return (GetSessionDataManager().clubLevel >= HabboClubLevelEnum.CLUB); +import {GetSessionDataManager} from "./GetSessionDataManager"; + +export function HasHabboClub(): boolean { + return GetSessionDataManager().clubLevel >= HabboClubLevelEnum.CLUB; } diff --git a/apps/frontend/src/api/nitro/session/HasHabboVip.ts b/apps/frontend/src/api/nitro/session/HasHabboVip.ts index d1e6848..e6581e4 100644 --- a/apps/frontend/src/api/nitro/session/HasHabboVip.ts +++ b/apps/frontend/src/api/nitro/session/HasHabboVip.ts @@ -1,7 +1,7 @@ -import { HabboClubLevelEnum } from '@nitro/renderer'; -import { GetSessionDataManager } from './GetSessionDataManager'; +import {HabboClubLevelEnum} from "@nitro/renderer"; -export function HasHabboVip(): boolean -{ - return (GetSessionDataManager().clubLevel >= HabboClubLevelEnum.VIP); +import {GetSessionDataManager} from "./GetSessionDataManager"; + +export function HasHabboVip(): boolean { + return GetSessionDataManager().clubLevel >= HabboClubLevelEnum.VIP; } diff --git a/apps/frontend/src/api/nitro/session/IsOwnerOfFloorFurniture.ts b/apps/frontend/src/api/nitro/session/IsOwnerOfFloorFurniture.ts index 4d2cd42..bb471f2 100644 --- a/apps/frontend/src/api/nitro/session/IsOwnerOfFloorFurniture.ts +++ b/apps/frontend/src/api/nitro/session/IsOwnerOfFloorFurniture.ts @@ -1,16 +1,16 @@ -import { RoomObjectCategory, RoomObjectVariable } from '@nitro/renderer'; -import { GetRoomSession } from '.'; -import { GetRoomEngine } from '..'; -import { GetSessionDataManager } from '../../../api'; +import {RoomObjectCategory, RoomObjectVariable} from "@nitro/renderer"; -export function IsOwnerOfFloorFurniture(id: number): boolean -{ - const roomObject = GetRoomEngine().getRoomObject(GetRoomSession().roomId, id, RoomObjectCategory.FLOOR); +import {GetRoomSession} from "."; +import {GetRoomEngine} from ".."; +import {GetSessionDataManager} from "../../../api"; - if(!roomObject || !roomObject.model) return false; +export function IsOwnerOfFloorFurniture(id: number): boolean { + const roomObject = GetRoomEngine().getRoomObject(GetRoomSession().roomId, id, RoomObjectCategory.FLOOR); - const userId = GetSessionDataManager().userId; - const objectOwnerId = roomObject.model.getValue(RoomObjectVariable.FURNITURE_OWNER_ID); + if (!roomObject || !roomObject.model) return false; - return (userId === objectOwnerId); + const userId = GetSessionDataManager().userId; + const objectOwnerId = roomObject.model.getValue(RoomObjectVariable.FURNITURE_OWNER_ID); + + return userId === objectOwnerId; } diff --git a/apps/frontend/src/api/nitro/session/IsOwnerOfFurniture.ts b/apps/frontend/src/api/nitro/session/IsOwnerOfFurniture.ts index 42f924d..76c36f4 100644 --- a/apps/frontend/src/api/nitro/session/IsOwnerOfFurniture.ts +++ b/apps/frontend/src/api/nitro/session/IsOwnerOfFurniture.ts @@ -1,12 +1,12 @@ -import { IRoomObject, RoomObjectVariable } from '@nitro/renderer'; -import { GetSessionDataManager } from '../../../api'; +import {IRoomObject, RoomObjectVariable} from "@nitro/renderer"; -export function IsOwnerOfFurniture(roomObject: IRoomObject): boolean -{ - if(!roomObject || !roomObject.model) return false; +import {GetSessionDataManager} from "../../../api"; - const userId = GetSessionDataManager().userId; - const objectOwnerId = roomObject.model.getValue(RoomObjectVariable.FURNITURE_OWNER_ID); +export function IsOwnerOfFurniture(roomObject: IRoomObject): boolean { + if (!roomObject || !roomObject.model) return false; - return (userId === objectOwnerId); + const userId = GetSessionDataManager().userId; + const objectOwnerId = roomObject.model.getValue(RoomObjectVariable.FURNITURE_OWNER_ID); + + return userId === objectOwnerId; } diff --git a/apps/frontend/src/api/nitro/session/IsRidingHorse.ts b/apps/frontend/src/api/nitro/session/IsRidingHorse.ts index 79dd3ff..ca93c5d 100644 --- a/apps/frontend/src/api/nitro/session/IsRidingHorse.ts +++ b/apps/frontend/src/api/nitro/session/IsRidingHorse.ts @@ -1,14 +1,14 @@ -import { RoomObjectVariable } from '@nitro/renderer'; -import { GetOwnRoomObject } from '../room'; +import {RoomObjectVariable} from "@nitro/renderer"; -export function IsRidingHorse(): boolean -{ - const roomObject = GetOwnRoomObject(); +import {GetOwnRoomObject} from "../room"; - if(!roomObject) return false; - - const model = roomObject.model; - const effectId = model.getValue(RoomObjectVariable.FIGURE_EFFECT); - - return (effectId === 77); +export function IsRidingHorse(): boolean { + const roomObject = GetOwnRoomObject(); + + if (!roomObject) return false; + + const model = roomObject.model; + const effectId = model.getValue(RoomObjectVariable.FIGURE_EFFECT); + + return effectId === 77; } diff --git a/apps/frontend/src/api/nitro/session/StartRoomSession.ts b/apps/frontend/src/api/nitro/session/StartRoomSession.ts index 773c15d..7fe478a 100644 --- a/apps/frontend/src/api/nitro/session/StartRoomSession.ts +++ b/apps/frontend/src/api/nitro/session/StartRoomSession.ts @@ -1,7 +1,7 @@ -import { IRoomSession } from '@nitro/renderer'; -import { GetRoomSessionManager } from './GetRoomSessionManager'; +import {IRoomSession} from "@nitro/renderer"; -export function StartRoomSession(session: IRoomSession): void -{ - GetRoomSessionManager().startSession(session); +import {GetRoomSessionManager} from "./GetRoomSessionManager"; + +export function StartRoomSession(session: IRoomSession): void { + GetRoomSessionManager().startSession(session); } diff --git a/apps/frontend/src/api/nitro/session/VisitDesktop.ts b/apps/frontend/src/api/nitro/session/VisitDesktop.ts index e7416a3..25a082b 100644 --- a/apps/frontend/src/api/nitro/session/VisitDesktop.ts +++ b/apps/frontend/src/api/nitro/session/VisitDesktop.ts @@ -1,9 +1,8 @@ -import { GetRoomSession, GetRoomSessionManager, GoToDesktop } from '.'; +import {GetRoomSession, GetRoomSessionManager, GoToDesktop} from "."; -export const VisitDesktop = () => -{ - if(!GetRoomSession()) return; +export const VisitDesktop = () => { + if (!GetRoomSession()) return; - GoToDesktop(); - GetRoomSessionManager().removeSession(-1); -} + GoToDesktop(); + GetRoomSessionManager().removeSession(-1); +}; diff --git a/apps/frontend/src/api/nitro/session/index.ts b/apps/frontend/src/api/nitro/session/index.ts index a860d7a..666f716 100644 --- a/apps/frontend/src/api/nitro/session/index.ts +++ b/apps/frontend/src/api/nitro/session/index.ts @@ -1,21 +1,21 @@ -export * from './CanManipulateFurniture'; -export * from './CreateRoomSession'; -export * from './GetCanStandUp'; -export * from './GetCanUseExpression'; -export * from './GetClubMemberLevel'; -export * from './GetFurnitureData'; -export * from './GetFurnitureDataForProductOffer'; -export * from './GetFurnitureDataForRoomObject'; -export * from './GetOwnPosture'; -export * from './GetProductDataForLocalization'; -export * from './GetRoomSession'; -export * from './GetRoomSessionManager'; -export * from './GetSessionDataManager'; -export * from './GoToDesktop'; -export * from './HasHabboClub'; -export * from './HasHabboVip'; -export * from './IsOwnerOfFloorFurniture'; -export * from './IsOwnerOfFurniture'; -export * from './IsRidingHorse'; -export * from './StartRoomSession'; -export * from './VisitDesktop'; +export * from "./CanManipulateFurniture"; +export * from "./CreateRoomSession"; +export * from "./GetCanStandUp"; +export * from "./GetCanUseExpression"; +export * from "./GetClubMemberLevel"; +export * from "./GetFurnitureData"; +export * from "./GetFurnitureDataForProductOffer"; +export * from "./GetFurnitureDataForRoomObject"; +export * from "./GetOwnPosture"; +export * from "./GetProductDataForLocalization"; +export * from "./GetRoomSession"; +export * from "./GetRoomSessionManager"; +export * from "./GetSessionDataManager"; +export * from "./GoToDesktop"; +export * from "./HasHabboClub"; +export * from "./HasHabboVip"; +export * from "./IsOwnerOfFloorFurniture"; +export * from "./IsOwnerOfFurniture"; +export * from "./IsRidingHorse"; +export * from "./StartRoomSession"; +export * from "./VisitDesktop"; diff --git a/apps/frontend/src/api/notification/NotificationAlertItem.ts b/apps/frontend/src/api/notification/NotificationAlertItem.ts index 2d7702c..1a21808 100644 --- a/apps/frontend/src/api/notification/NotificationAlertItem.ts +++ b/apps/frontend/src/api/notification/NotificationAlertItem.ts @@ -1,67 +1,64 @@ -import { NotificationAlertType } from './NotificationAlertType'; +import {NotificationAlertType} from "./NotificationAlertType"; -export class NotificationAlertItem -{ - private static ITEM_ID: number = -1; +export class NotificationAlertItem { + private static ITEM_ID: number = -1; - private _id: number; - private _messages: string[]; - private _alertType: string; - private _clickUrl: string; - private _clickUrlText: string; - private _title: string; - private _imageUrl: string; + private _id: number; + private _messages: string[]; + private _alertType: string; + private _clickUrl: string; + private _clickUrlText: string; + private _title: string; + private _imageUrl: string; - constructor(messages: string[], alertType: string = NotificationAlertType.DEFAULT, clickUrl: string = null, clickUrlText: string = null, title: string = null, imageUrl: string = null) - { - NotificationAlertItem.ITEM_ID += 1; + constructor( + messages: string[], + alertType: string = NotificationAlertType.DEFAULT, + clickUrl: string = null, + clickUrlText: string = null, + title: string = null, + imageUrl: string = null + ) { + NotificationAlertItem.ITEM_ID += 1; - this._id = NotificationAlertItem.ITEM_ID; - this._messages = messages; - this._alertType = alertType; - this._clickUrl = clickUrl; - this._clickUrlText = clickUrlText; - this._title = title; - this._imageUrl = imageUrl; - } + this._id = NotificationAlertItem.ITEM_ID; + this._messages = messages; + this._alertType = alertType; + this._clickUrl = clickUrl; + this._clickUrlText = clickUrlText; + this._title = title; + this._imageUrl = imageUrl; + } - public get id(): number - { - return this._id; - } + public get id(): number { + return this._id; + } - public get messages(): string[] - { - return this._messages; - } + public get messages(): string[] { + return this._messages; + } - public set alertType(alertType: string) - { - this._alertType = alertType; - } + public set alertType(alertType: string) { + this._alertType = alertType; + } - public get alertType(): string - { - return this._alertType; - } + public get alertType(): string { + return this._alertType; + } - public get clickUrl(): string - { - return this._clickUrl; - } + public get clickUrl(): string { + return this._clickUrl; + } - public get clickUrlText(): string - { - return this._clickUrlText; - } + public get clickUrlText(): string { + return this._clickUrlText; + } - public get title(): string - { - return this._title; - } + public get title(): string { + return this._title; + } - public get imageUrl(): string - { - return this._imageUrl; - } + public get imageUrl(): string { + return this._imageUrl; + } } diff --git a/apps/frontend/src/api/notification/NotificationAlertType.ts b/apps/frontend/src/api/notification/NotificationAlertType.ts index ad804e8..1b0e9da 100644 --- a/apps/frontend/src/api/notification/NotificationAlertType.ts +++ b/apps/frontend/src/api/notification/NotificationAlertType.ts @@ -1,10 +1,9 @@ -export class NotificationAlertType -{ - public static DEFAULT: string = 'default'; - public static MOTD: string = 'motd'; - public static MODERATION: string = 'moderation'; - public static EVENT: string = 'event'; - public static NITRO: string = 'nitro'; - public static SEARCH: string = 'search'; - public static ALERT: string = 'alert'; +export class NotificationAlertType { + public static DEFAULT: string = "default"; + public static MOTD: string = "motd"; + public static MODERATION: string = "moderation"; + public static EVENT: string = "event"; + public static NITRO: string = "nitro"; + public static SEARCH: string = "search"; + public static ALERT: string = "alert"; } diff --git a/apps/frontend/src/api/notification/NotificationBubbleItem.ts b/apps/frontend/src/api/notification/NotificationBubbleItem.ts index fe90dab..ade7501 100644 --- a/apps/frontend/src/api/notification/NotificationBubbleItem.ts +++ b/apps/frontend/src/api/notification/NotificationBubbleItem.ts @@ -1,48 +1,41 @@ -import { NotificationBubbleType } from './NotificationBubbleType'; +import {NotificationBubbleType} from "./NotificationBubbleType"; -export class NotificationBubbleItem -{ - private static ITEM_ID: number = -1; +export class NotificationBubbleItem { + private static ITEM_ID: number = -1; - private _id: number; - private _message: string; - private _notificationType: string; - private _iconUrl: string; - private _linkUrl: string; + private _id: number; + private _message: string; + private _notificationType: string; + private _iconUrl: string; + private _linkUrl: string; - constructor(message: string, notificationType: string = NotificationBubbleType.INFO, iconUrl: string = null, linkUrl: string = null) - { - NotificationBubbleItem.ITEM_ID += 1; + constructor(message: string, notificationType: string = NotificationBubbleType.INFO, iconUrl: string = null, linkUrl: string = null) { + NotificationBubbleItem.ITEM_ID += 1; - this._id = NotificationBubbleItem.ITEM_ID; - this._message = message; - this._notificationType = notificationType; - this._iconUrl = iconUrl; - this._linkUrl = linkUrl; - } + this._id = NotificationBubbleItem.ITEM_ID; + this._message = message; + this._notificationType = notificationType; + this._iconUrl = iconUrl; + this._linkUrl = linkUrl; + } - public get id(): number - { - return this._id; - } + public get id(): number { + return this._id; + } - public get message(): string - { - return this._message; - } + public get message(): string { + return this._message; + } - public get notificationType(): string - { - return this._notificationType; - } + public get notificationType(): string { + return this._notificationType; + } - public get iconUrl(): string - { - return this._iconUrl; - } + public get iconUrl(): string { + return this._iconUrl; + } - public get linkUrl(): string - { - return this._linkUrl; - } + public get linkUrl(): string { + return this._linkUrl; + } } diff --git a/apps/frontend/src/api/notification/NotificationBubbleType.ts b/apps/frontend/src/api/notification/NotificationBubbleType.ts index cce38f5..472fbea 100644 --- a/apps/frontend/src/api/notification/NotificationBubbleType.ts +++ b/apps/frontend/src/api/notification/NotificationBubbleType.ts @@ -1,19 +1,18 @@ -export class NotificationBubbleType -{ - public static FRIENDOFFLINE: string = 'friendoffline'; - public static FRIENDONLINE: string = 'friendonline'; - public static THIRDPARTYFRIENDOFFLINE: string = 'thirdpartyfriendoffline'; - public static THIRDPARTYFRIENDONLINE: string = 'thirdpartyfriendonline'; - public static ACHIEVEMENT: string = 'achievement'; - public static BADGE_RECEIVED: string = 'badge_received'; - public static INFO: string = 'info'; - public static RECYCLEROK: string = 'recyclerok'; - public static RESPECT: string = 'respect'; - public static CLUB: string = 'club'; - public static SOUNDMACHINE: string = 'soundmachine'; - public static PETLEVEL: string = 'petlevel'; - public static CLUBGIFT: string = 'clubgift'; - public static BUYFURNI: string = 'buyfurni'; - public static VIP: string = 'vip'; - public static ROOMMESSAGESPOSTED: string = 'roommessagesposted'; +export class NotificationBubbleType { + public static FRIENDOFFLINE: string = "friendoffline"; + public static FRIENDONLINE: string = "friendonline"; + public static THIRDPARTYFRIENDOFFLINE: string = "thirdpartyfriendoffline"; + public static THIRDPARTYFRIENDONLINE: string = "thirdpartyfriendonline"; + public static ACHIEVEMENT: string = "achievement"; + public static BADGE_RECEIVED: string = "badge_received"; + public static INFO: string = "info"; + public static RECYCLEROK: string = "recyclerok"; + public static RESPECT: string = "respect"; + public static CLUB: string = "club"; + public static SOUNDMACHINE: string = "soundmachine"; + public static PETLEVEL: string = "petlevel"; + public static CLUBGIFT: string = "clubgift"; + public static BUYFURNI: string = "buyfurni"; + public static VIP: string = "vip"; + public static ROOMMESSAGESPOSTED: string = "roommessagesposted"; } diff --git a/apps/frontend/src/api/notification/NotificationConfirmItem.ts b/apps/frontend/src/api/notification/NotificationConfirmItem.ts index 0455662..3beb4ec 100644 --- a/apps/frontend/src/api/notification/NotificationConfirmItem.ts +++ b/apps/frontend/src/api/notification/NotificationConfirmItem.ts @@ -1,67 +1,57 @@ -export class NotificationConfirmItem -{ - private static ITEM_ID: number = -1; +export class NotificationConfirmItem { + private static ITEM_ID: number = -1; - private _id: number; - private _confirmType: string; - private _message: string; - private _onConfirm: Function; - private _onCancel: Function; - private _confirmText: string; - private _cancelText: string; - private _title: string; + private _id: number; + private _confirmType: string; + private _message: string; + private _onConfirm: Function; + private _onCancel: Function; + private _confirmText: string; + private _cancelText: string; + private _title: string; - constructor(confirmType: string, message: string, onConfirm: Function, onCancel: Function, confirmText: string, cancelText: string, title: string) - { - NotificationConfirmItem.ITEM_ID += 1; + constructor(confirmType: string, message: string, onConfirm: Function, onCancel: Function, confirmText: string, cancelText: string, title: string) { + NotificationConfirmItem.ITEM_ID += 1; - this._id = NotificationConfirmItem.ITEM_ID; - this._confirmType = confirmType; - this._message = message; - this._onConfirm = onConfirm; - this._onCancel = onCancel; - this._confirmText = confirmText; - this._cancelText = cancelText; - this._title = title; - } + this._id = NotificationConfirmItem.ITEM_ID; + this._confirmType = confirmType; + this._message = message; + this._onConfirm = onConfirm; + this._onCancel = onCancel; + this._confirmText = confirmText; + this._cancelText = cancelText; + this._title = title; + } - public get id(): number - { - return this._id; - } + public get id(): number { + return this._id; + } - public get confirmType(): string - { - return this._confirmType; - } + public get confirmType(): string { + return this._confirmType; + } - public get message(): string - { - return this._message; - } + public get message(): string { + return this._message; + } - public get onConfirm(): Function - { - return this._onConfirm; - } + public get onConfirm(): Function { + return this._onConfirm; + } - public get onCancel(): Function - { - return this._onCancel; - } + public get onCancel(): Function { + return this._onCancel; + } - public get confirmText(): string - { - return this._confirmText; - } + public get confirmText(): string { + return this._confirmText; + } - public get cancelText(): string - { - return this._cancelText; - } + public get cancelText(): string { + return this._cancelText; + } - public get title(): string - { - return this._title; - } + public get title(): string { + return this._title; + } } diff --git a/apps/frontend/src/api/notification/NotificationConfirmType.ts b/apps/frontend/src/api/notification/NotificationConfirmType.ts index 533ca05..bf8cfee 100644 --- a/apps/frontend/src/api/notification/NotificationConfirmType.ts +++ b/apps/frontend/src/api/notification/NotificationConfirmType.ts @@ -1,4 +1,3 @@ -export class NotificationConfirmType -{ - public static DEFAULT: string = 'default'; +export class NotificationConfirmType { + public static DEFAULT: string = "default"; } diff --git a/apps/frontend/src/api/notification/index.ts b/apps/frontend/src/api/notification/index.ts index 23476d3..2d8724a 100644 --- a/apps/frontend/src/api/notification/index.ts +++ b/apps/frontend/src/api/notification/index.ts @@ -1,6 +1,6 @@ -export * from './NotificationAlertItem'; -export * from './NotificationAlertType'; -export * from './NotificationBubbleItem'; -export * from './NotificationBubbleType'; -export * from './NotificationConfirmItem'; -export * from './NotificationConfirmType'; +export * from "./NotificationAlertItem"; +export * from "./NotificationAlertType"; +export * from "./NotificationBubbleItem"; +export * from "./NotificationBubbleType"; +export * from "./NotificationConfirmItem"; +export * from "./NotificationConfirmType"; diff --git a/apps/frontend/src/api/purse/IPurse.ts b/apps/frontend/src/api/purse/IPurse.ts index 9fffb18..859aeeb 100644 --- a/apps/frontend/src/api/purse/IPurse.ts +++ b/apps/frontend/src/api/purse/IPurse.ts @@ -1,15 +1,14 @@ -export interface IPurse -{ - credits: number; - activityPoints: Map; - clubDays: number; - clubPeriods: number; - hasClubLeft: boolean; - isVip: boolean; - pastClubDays: number; - pastVipDays: number; - isExpiring: boolean; - minutesUntilExpiration: number; - minutesSinceLastModified: number; - clubLevel: number; +export interface IPurse { + credits: number; + activityPoints: Map; + clubDays: number; + clubPeriods: number; + hasClubLeft: boolean; + isVip: boolean; + pastClubDays: number; + pastVipDays: number; + isExpiring: boolean; + minutesUntilExpiration: number; + minutesSinceLastModified: number; + clubLevel: number; } diff --git a/apps/frontend/src/api/purse/Purse.ts b/apps/frontend/src/api/purse/Purse.ts index 530302d..2257806 100644 --- a/apps/frontend/src/api/purse/Purse.ts +++ b/apps/frontend/src/api/purse/Purse.ts @@ -1,165 +1,141 @@ -import { GetTickerTime, HabboClubLevelEnum } from '@nitro/renderer'; -import { IPurse } from './IPurse'; +import {GetTickerTime, HabboClubLevelEnum} from "@nitro/renderer"; -export class Purse implements IPurse -{ - private _credits: number = 0; - private _activityPoints: Map = new Map(); - private _clubDays: number = 0; - private _clubPeriods: number = 0; - private _isVIP: boolean = false; - private _pastClubDays: number = 0; - private _pastVipDays: number = 0; - private _isExpiring: boolean = false; - private _minutesUntilExpiration: number = 0; - private _minutesSinceLastModified: number = 0; - private _lastUpdated: number = 0; +import {IPurse} from "./IPurse"; - public static from(purse: Purse): Purse - { - const newPurse = new Purse(); +export class Purse implements IPurse { + private _credits: number = 0; + private _activityPoints: Map = new Map(); + private _clubDays: number = 0; + private _clubPeriods: number = 0; + private _isVIP: boolean = false; + private _pastClubDays: number = 0; + private _pastVipDays: number = 0; + private _isExpiring: boolean = false; + private _minutesUntilExpiration: number = 0; + private _minutesSinceLastModified: number = 0; + private _lastUpdated: number = 0; - newPurse._credits = purse._credits; - newPurse._activityPoints = purse._activityPoints; - newPurse._clubDays = purse._clubDays; - newPurse._clubPeriods = purse._clubPeriods; - newPurse._isVIP = purse._isVIP; - newPurse._pastClubDays = purse._pastClubDays; - newPurse._pastVipDays = purse._pastVipDays; - newPurse._isExpiring = purse._isExpiring; - newPurse._minutesUntilExpiration = purse._minutesUntilExpiration; - newPurse._minutesSinceLastModified = purse._minutesSinceLastModified; - newPurse._lastUpdated = purse._lastUpdated; + public static from(purse: Purse): Purse { + const newPurse = new Purse(); - return newPurse; - } + newPurse._credits = purse._credits; + newPurse._activityPoints = purse._activityPoints; + newPurse._clubDays = purse._clubDays; + newPurse._clubPeriods = purse._clubPeriods; + newPurse._isVIP = purse._isVIP; + newPurse._pastClubDays = purse._pastClubDays; + newPurse._pastVipDays = purse._pastVipDays; + newPurse._isExpiring = purse._isExpiring; + newPurse._minutesUntilExpiration = purse._minutesUntilExpiration; + newPurse._minutesSinceLastModified = purse._minutesSinceLastModified; + newPurse._lastUpdated = purse._lastUpdated; - public get credits(): number - { - return this._credits; - } + return newPurse; + } - public set credits(credits: number) - { - this._lastUpdated = GetTickerTime(); - this._credits = credits; - } + public get credits(): number { + return this._credits; + } - public get activityPoints(): Map - { - return this._activityPoints; - } + public set credits(credits: number) { + this._lastUpdated = GetTickerTime(); + this._credits = credits; + } - public set activityPoints(k: Map) - { - this._lastUpdated = GetTickerTime(); - this._activityPoints = k; - } + public get activityPoints(): Map { + return this._activityPoints; + } - public get clubDays(): number - { - return this._clubDays; - } + public set activityPoints(k: Map) { + this._lastUpdated = GetTickerTime(); + this._activityPoints = k; + } - public set clubDays(k: number) - { - this._lastUpdated = GetTickerTime(); - this._clubDays = k; - } + public get clubDays(): number { + return this._clubDays; + } - public get clubPeriods(): number - { - return this._clubPeriods; - } + public set clubDays(k: number) { + this._lastUpdated = GetTickerTime(); + this._clubDays = k; + } - public set clubPeriods(k: number) - { - this._lastUpdated = GetTickerTime(); - this._clubPeriods = k; - } + public get clubPeriods(): number { + return this._clubPeriods; + } - public get hasClubLeft(): boolean - { - return (this._clubDays > 0) || (this._clubPeriods > 0); - } + public set clubPeriods(k: number) { + this._lastUpdated = GetTickerTime(); + this._clubPeriods = k; + } - public get isVip(): boolean - { - return this._isVIP; - } + public get hasClubLeft(): boolean { + return this._clubDays > 0 || this._clubPeriods > 0; + } - public set isVip(k: boolean) - { - this._isVIP = k; - } + public get isVip(): boolean { + return this._isVIP; + } - public get pastClubDays(): number - { - return this._pastClubDays; - } + public set isVip(k: boolean) { + this._isVIP = k; + } - public set pastClubDays(k: number) - { - this._lastUpdated = GetTickerTime(); - this._pastClubDays = k; - } + public get pastClubDays(): number { + return this._pastClubDays; + } - public get pastVipDays(): number - { - return this._pastVipDays; - } + public set pastClubDays(k: number) { + this._lastUpdated = GetTickerTime(); + this._pastClubDays = k; + } - public set pastVipDays(k: number) - { - this._lastUpdated = GetTickerTime(); - this._pastVipDays = k; - } + public get pastVipDays(): number { + return this._pastVipDays; + } - public get isExpiring(): boolean - { - return this._isExpiring; - } + public set pastVipDays(k: number) { + this._lastUpdated = GetTickerTime(); + this._pastVipDays = k; + } - public set isExpiring(k: boolean) - { - this._isExpiring = k; - } + public get isExpiring(): boolean { + return this._isExpiring; + } - public get minutesUntilExpiration(): number - { - var k: number = ((GetTickerTime() - this._lastUpdated) / (1000 * 60)); - var _local_2: number = (this._minutesUntilExpiration - k); - return (_local_2 > 0) ? _local_2 : 0; - } + public set isExpiring(k: boolean) { + this._isExpiring = k; + } - public set minutesUntilExpiration(k: number) - { - this._lastUpdated = GetTickerTime(); - this._minutesUntilExpiration = k; - } + public get minutesUntilExpiration(): number { + var k: number = (GetTickerTime() - this._lastUpdated) / (1000 * 60); + var _local_2: number = this._minutesUntilExpiration - k; + return _local_2 > 0 ? _local_2 : 0; + } - public get minutesSinceLastModified(): number - { - return this._minutesSinceLastModified; - } + public set minutesUntilExpiration(k: number) { + this._lastUpdated = GetTickerTime(); + this._minutesUntilExpiration = k; + } - public set minutesSinceLastModified(k: number) - { - this._lastUpdated = GetTickerTime(); - this._minutesSinceLastModified = k; - } + public get minutesSinceLastModified(): number { + return this._minutesSinceLastModified; + } - public get lastUpdated(): number - { - return this._lastUpdated; - } + public set minutesSinceLastModified(k: number) { + this._lastUpdated = GetTickerTime(); + this._minutesSinceLastModified = k; + } - public get clubLevel(): number - { - if(((this.clubDays === 0) && (this.clubPeriods === 0))) return HabboClubLevelEnum.NO_CLUB; + public get lastUpdated(): number { + return this._lastUpdated; + } - if(this.isVip) return HabboClubLevelEnum.VIP; + public get clubLevel(): number { + if (this.clubDays === 0 && this.clubPeriods === 0) return HabboClubLevelEnum.NO_CLUB; - return HabboClubLevelEnum.CLUB; - } + if (this.isVip) return HabboClubLevelEnum.VIP; + + return HabboClubLevelEnum.CLUB; + } } diff --git a/apps/frontend/src/api/purse/index.ts b/apps/frontend/src/api/purse/index.ts index ed34480..413e4bc 100644 --- a/apps/frontend/src/api/purse/index.ts +++ b/apps/frontend/src/api/purse/index.ts @@ -1,2 +1,2 @@ -export * from './IPurse'; -export * from './Purse'; +export * from "./IPurse"; +export * from "./Purse"; diff --git a/apps/frontend/src/api/room/events/RoomWidgetPollUpdateEvent.ts b/apps/frontend/src/api/room/events/RoomWidgetPollUpdateEvent.ts index 5b312fd..1385a16 100644 --- a/apps/frontend/src/api/room/events/RoomWidgetPollUpdateEvent.ts +++ b/apps/frontend/src/api/room/events/RoomWidgetPollUpdateEvent.ts @@ -1,110 +1,92 @@ -import { IPollQuestion } from '@nitro/renderer'; -import { RoomWidgetUpdateEvent } from './RoomWidgetUpdateEvent'; +import {IPollQuestion} from "@nitro/renderer"; -export class RoomWidgetPollUpdateEvent extends RoomWidgetUpdateEvent -{ - public static readonly OFFER = 'RWPUW_OFFER'; - public static readonly ERROR = 'RWPUW_ERROR'; - public static readonly CONTENT = 'RWPUW_CONTENT'; +import {RoomWidgetUpdateEvent} from "./RoomWidgetUpdateEvent"; - private _id = -1; - private _summary: string; - private _headline: string; - private _numQuestions = 0; - private _startMessage = ''; - private _endMessage = ''; - private _questionArray: IPollQuestion[] = null; - private _pollType = ''; - private _npsPoll = false; +export class RoomWidgetPollUpdateEvent extends RoomWidgetUpdateEvent { + public static readonly OFFER = "RWPUW_OFFER"; + public static readonly ERROR = "RWPUW_ERROR"; + public static readonly CONTENT = "RWPUW_CONTENT"; - constructor(type: string, id: number) - { - super(type); - this._id = id; - } + private _id = -1; + private _summary: string; + private _headline: string; + private _numQuestions = 0; + private _startMessage = ""; + private _endMessage = ""; + private _questionArray: IPollQuestion[] = null; + private _pollType = ""; + private _npsPoll = false; - public get id(): number - { - return this._id; - } + constructor(type: string, id: number) { + super(type); + this._id = id; + } - public get summary(): string - { - return this._summary; - } + public get id(): number { + return this._id; + } - public set summary(k: string) - { - this._summary = k; - } + public get summary(): string { + return this._summary; + } - public get headline(): string - { - return this._headline; - } + public set summary(k: string) { + this._summary = k; + } - public set headline(k: string) - { - this._headline = k; - } + public get headline(): string { + return this._headline; + } - public get numQuestions(): number - { - return this._numQuestions; - } + public set headline(k: string) { + this._headline = k; + } - public set numQuestions(k: number) - { - this._numQuestions = k; - } + public get numQuestions(): number { + return this._numQuestions; + } - public get startMessage(): string - { - return this._startMessage; - } + public set numQuestions(k: number) { + this._numQuestions = k; + } - public set startMessage(k: string) - { - this._startMessage = k; - } + public get startMessage(): string { + return this._startMessage; + } - public get endMessage(): string - { - return this._endMessage; - } + public set startMessage(k: string) { + this._startMessage = k; + } - public set endMessage(k: string) - { - this._endMessage = k; - } + public get endMessage(): string { + return this._endMessage; + } - public get questionArray(): IPollQuestion[] - { - return this._questionArray; - } + public set endMessage(k: string) { + this._endMessage = k; + } - public set questionArray(k: IPollQuestion[]) - { - this._questionArray = k; - } + public get questionArray(): IPollQuestion[] { + return this._questionArray; + } - public get pollType(): string - { - return this._pollType; - } + public set questionArray(k: IPollQuestion[]) { + this._questionArray = k; + } - public set pollType(k: string) - { - this._pollType = k; - } + public get pollType(): string { + return this._pollType; + } - public get npsPoll(): boolean - { - return this._npsPoll; - } + public set pollType(k: string) { + this._pollType = k; + } - public set npsPoll(k: boolean) - { - this._npsPoll = k; - } + public get npsPoll(): boolean { + return this._npsPoll; + } + + public set npsPoll(k: boolean) { + this._npsPoll = k; + } } diff --git a/apps/frontend/src/api/room/events/RoomWidgetUpdateBackgroundColorPreviewEvent.ts b/apps/frontend/src/api/room/events/RoomWidgetUpdateBackgroundColorPreviewEvent.ts index 30135a3..37c0553 100644 --- a/apps/frontend/src/api/room/events/RoomWidgetUpdateBackgroundColorPreviewEvent.ts +++ b/apps/frontend/src/api/room/events/RoomWidgetUpdateBackgroundColorPreviewEvent.ts @@ -1,35 +1,30 @@ -import { RoomWidgetUpdateEvent } from './RoomWidgetUpdateEvent'; +import {RoomWidgetUpdateEvent} from "./RoomWidgetUpdateEvent"; -export class RoomWidgetUpdateBackgroundColorPreviewEvent extends RoomWidgetUpdateEvent -{ - public static PREVIEW = 'RWUBCPE_PREVIEW'; - public static CLEAR_PREVIEW = 'RWUBCPE_CLEAR_PREVIEW'; +export class RoomWidgetUpdateBackgroundColorPreviewEvent extends RoomWidgetUpdateEvent { + public static PREVIEW = "RWUBCPE_PREVIEW"; + public static CLEAR_PREVIEW = "RWUBCPE_CLEAR_PREVIEW"; - private _hue: number; - private _saturation: number; - private _lightness: number; + private _hue: number; + private _saturation: number; + private _lightness: number; - constructor(type: string, hue: number = 0, saturation: number = 0, lightness: number = 0) - { - super(type); + constructor(type: string, hue: number = 0, saturation: number = 0, lightness: number = 0) { + super(type); - this._hue = hue; - this._saturation = saturation; - this._lightness = lightness; - } + this._hue = hue; + this._saturation = saturation; + this._lightness = lightness; + } - public get hue(): number - { - return this._hue; - } + public get hue(): number { + return this._hue; + } - public get saturation(): number - { - return this._saturation; - } + public get saturation(): number { + return this._saturation; + } - public get lightness(): number - { - return this._lightness; - } + public get lightness(): number { + return this._lightness; + } } diff --git a/apps/frontend/src/api/room/events/RoomWidgetUpdateChatInputContentEvent.ts b/apps/frontend/src/api/room/events/RoomWidgetUpdateChatInputContentEvent.ts index 9352372..03189cc 100644 --- a/apps/frontend/src/api/room/events/RoomWidgetUpdateChatInputContentEvent.ts +++ b/apps/frontend/src/api/room/events/RoomWidgetUpdateChatInputContentEvent.ts @@ -1,29 +1,25 @@ -import { RoomWidgetUpdateEvent } from './RoomWidgetUpdateEvent'; +import {RoomWidgetUpdateEvent} from "./RoomWidgetUpdateEvent"; -export class RoomWidgetUpdateChatInputContentEvent extends RoomWidgetUpdateEvent -{ - public static CHAT_INPUT_CONTENT: string = 'RWUCICE_CHAT_INPUT_CONTENT'; - public static WHISPER: string = 'whisper'; - public static SHOUT: string = 'shout'; +export class RoomWidgetUpdateChatInputContentEvent extends RoomWidgetUpdateEvent { + public static CHAT_INPUT_CONTENT: string = "RWUCICE_CHAT_INPUT_CONTENT"; + public static WHISPER: string = "whisper"; + public static SHOUT: string = "shout"; - private _chatMode: string = ''; - private _userName: string = ''; + private _chatMode: string = ""; + private _userName: string = ""; - constructor(chatMode: string, userName: string) - { - super(RoomWidgetUpdateChatInputContentEvent.CHAT_INPUT_CONTENT); + constructor(chatMode: string, userName: string) { + super(RoomWidgetUpdateChatInputContentEvent.CHAT_INPUT_CONTENT); - this._chatMode = chatMode; - this._userName = userName; - } + this._chatMode = chatMode; + this._userName = userName; + } - public get chatMode(): string - { - return this._chatMode; - } + public get chatMode(): string { + return this._chatMode; + } - public get userName(): string - { - return this._userName; - } + public get userName(): string { + return this._userName; + } } diff --git a/apps/frontend/src/api/room/events/RoomWidgetUpdateEvent.ts b/apps/frontend/src/api/room/events/RoomWidgetUpdateEvent.ts index 217dd16..5c00416 100644 --- a/apps/frontend/src/api/room/events/RoomWidgetUpdateEvent.ts +++ b/apps/frontend/src/api/room/events/RoomWidgetUpdateEvent.ts @@ -1,4 +1,3 @@ -import { NitroEvent } from '@nitro/renderer'; +import {NitroEvent} from "@nitro/renderer"; -export class RoomWidgetUpdateEvent extends NitroEvent -{} +export class RoomWidgetUpdateEvent extends NitroEvent {} diff --git a/apps/frontend/src/api/room/events/RoomWidgetUpdateRentableBotChatEvent.ts b/apps/frontend/src/api/room/events/RoomWidgetUpdateRentableBotChatEvent.ts index 6191e1b..e95a34b 100644 --- a/apps/frontend/src/api/room/events/RoomWidgetUpdateRentableBotChatEvent.ts +++ b/apps/frontend/src/api/room/events/RoomWidgetUpdateRentableBotChatEvent.ts @@ -1,62 +1,53 @@ -import { RoomWidgetUpdateEvent } from './RoomWidgetUpdateEvent'; +import {RoomWidgetUpdateEvent} from "./RoomWidgetUpdateEvent"; -export class RoomWidgetUpdateRentableBotChatEvent extends RoomWidgetUpdateEvent -{ - public static UPDATE_CHAT: string = 'RWURBCE_UPDATE_CHAT'; +export class RoomWidgetUpdateRentableBotChatEvent extends RoomWidgetUpdateEvent { + public static UPDATE_CHAT: string = "RWURBCE_UPDATE_CHAT"; - private _objectId: number; - private _category: number; - private _botId: number; - private _chat: string; - private _automaticChat: boolean; - private _chatDelay: number; - private _mixSentences: boolean; + private _objectId: number; + private _category: number; + private _botId: number; + private _chat: string; + private _automaticChat: boolean; + private _chatDelay: number; + private _mixSentences: boolean; - constructor(objectId: number, category: number, botId: number, chat: string, automaticChat: boolean, chatDelay: number, mixSentences: boolean) - { - super(RoomWidgetUpdateRentableBotChatEvent.UPDATE_CHAT); + constructor(objectId: number, category: number, botId: number, chat: string, automaticChat: boolean, chatDelay: number, mixSentences: boolean) { + super(RoomWidgetUpdateRentableBotChatEvent.UPDATE_CHAT); - this._objectId = objectId; - this._category = category; - this._botId = botId; - this._chat = chat; - this._automaticChat = automaticChat; - this._chatDelay = chatDelay; - this._mixSentences = mixSentences; - } + this._objectId = objectId; + this._category = category; + this._botId = botId; + this._chat = chat; + this._automaticChat = automaticChat; + this._chatDelay = chatDelay; + this._mixSentences = mixSentences; + } - public get objectId(): number - { - return this._objectId; - } + public get objectId(): number { + return this._objectId; + } - public get category(): number - { - return this._category; - } + public get category(): number { + return this._category; + } - public get botId(): number - { - return this._botId; - } + public get botId(): number { + return this._botId; + } - public get chat(): string - { - return this._chat; - } + public get chat(): string { + return this._chat; + } - public get automaticChat(): boolean - { - return this._automaticChat; - } + public get automaticChat(): boolean { + return this._automaticChat; + } - public get chatDelay(): number - { - return this._chatDelay; - } + public get chatDelay(): number { + return this._chatDelay; + } - public get mixSentences(): boolean - { - return this._mixSentences; - } + public get mixSentences(): boolean { + return this._mixSentences; + } } diff --git a/apps/frontend/src/api/room/events/RoomWidgetUpdateRoomObjectEvent.ts b/apps/frontend/src/api/room/events/RoomWidgetUpdateRoomObjectEvent.ts index 0660276..f016eb3 100644 --- a/apps/frontend/src/api/room/events/RoomWidgetUpdateRoomObjectEvent.ts +++ b/apps/frontend/src/api/room/events/RoomWidgetUpdateRoomObjectEvent.ts @@ -1,43 +1,38 @@ -import { RoomWidgetUpdateEvent } from './RoomWidgetUpdateEvent'; +import {RoomWidgetUpdateEvent} from "./RoomWidgetUpdateEvent"; -export class RoomWidgetUpdateRoomObjectEvent extends RoomWidgetUpdateEvent -{ - public static OBJECT_SELECTED: string = 'RWUROE_OBJECT_SELECTED'; - public static OBJECT_DESELECTED: string = 'RWUROE_OBJECT_DESELECTED'; - public static USER_REMOVED: string = 'RWUROE_USER_REMOVED'; - public static FURNI_REMOVED: string = 'RWUROE_FURNI_REMOVED'; - public static FURNI_ADDED: string = 'RWUROE_FURNI_ADDED'; - public static USER_ADDED: string = 'RWUROE_USER_ADDED'; - public static OBJECT_ROLL_OVER: string = 'RWUROE_OBJECT_ROLL_OVER'; - public static OBJECT_ROLL_OUT: string = 'RWUROE_OBJECT_ROLL_OUT'; - public static OBJECT_REQUEST_MANIPULATION: string = 'RWUROE_OBJECT_REQUEST_MANIPULATION'; - public static OBJECT_DOUBLE_CLICKED: string = 'RWUROE_OBJECT_DOUBLE_CLICKED'; +export class RoomWidgetUpdateRoomObjectEvent extends RoomWidgetUpdateEvent { + public static OBJECT_SELECTED: string = "RWUROE_OBJECT_SELECTED"; + public static OBJECT_DESELECTED: string = "RWUROE_OBJECT_DESELECTED"; + public static USER_REMOVED: string = "RWUROE_USER_REMOVED"; + public static FURNI_REMOVED: string = "RWUROE_FURNI_REMOVED"; + public static FURNI_ADDED: string = "RWUROE_FURNI_ADDED"; + public static USER_ADDED: string = "RWUROE_USER_ADDED"; + public static OBJECT_ROLL_OVER: string = "RWUROE_OBJECT_ROLL_OVER"; + public static OBJECT_ROLL_OUT: string = "RWUROE_OBJECT_ROLL_OUT"; + public static OBJECT_REQUEST_MANIPULATION: string = "RWUROE_OBJECT_REQUEST_MANIPULATION"; + public static OBJECT_DOUBLE_CLICKED: string = "RWUROE_OBJECT_DOUBLE_CLICKED"; - private _id: number; - private _category: number; - private _roomId: number; + private _id: number; + private _category: number; + private _roomId: number; - constructor(type: string, id: number, category: number, roomId: number) - { - super(type); + constructor(type: string, id: number, category: number, roomId: number) { + super(type); - this._id = id; - this._category = category; - this._roomId = roomId; - } + this._id = id; + this._category = category; + this._roomId = roomId; + } - public get id(): number - { - return this._id; - } + public get id(): number { + return this._id; + } - public get category(): number - { - return this._category; - } + public get category(): number { + return this._category; + } - public get roomId(): number - { - return this._roomId; - } + public get roomId(): number { + return this._roomId; + } } diff --git a/apps/frontend/src/api/room/events/index.ts b/apps/frontend/src/api/room/events/index.ts index e5ed0d8..d66234f 100644 --- a/apps/frontend/src/api/room/events/index.ts +++ b/apps/frontend/src/api/room/events/index.ts @@ -1,6 +1,6 @@ -export * from './RoomWidgetPollUpdateEvent'; -export * from './RoomWidgetUpdateBackgroundColorPreviewEvent'; -export * from './RoomWidgetUpdateChatInputContentEvent'; -export * from './RoomWidgetUpdateEvent'; -export * from './RoomWidgetUpdateRentableBotChatEvent'; -export * from './RoomWidgetUpdateRoomObjectEvent'; +export * from "./RoomWidgetPollUpdateEvent"; +export * from "./RoomWidgetUpdateBackgroundColorPreviewEvent"; +export * from "./RoomWidgetUpdateChatInputContentEvent"; +export * from "./RoomWidgetUpdateEvent"; +export * from "./RoomWidgetUpdateRentableBotChatEvent"; +export * from "./RoomWidgetUpdateRoomObjectEvent"; diff --git a/apps/frontend/src/api/room/index.ts b/apps/frontend/src/api/room/index.ts index 56aea79..7f66d1a 100644 --- a/apps/frontend/src/api/room/index.ts +++ b/apps/frontend/src/api/room/index.ts @@ -1,2 +1,2 @@ -export * from './events'; -export * from './widgets'; +export * from "./events"; +export * from "./widgets"; diff --git a/apps/frontend/src/api/room/widgets/AvatarInfoFurni.ts b/apps/frontend/src/api/room/widgets/AvatarInfoFurni.ts index b1ca0ec..e907dfb 100644 --- a/apps/frontend/src/api/room/widgets/AvatarInfoFurni.ts +++ b/apps/frontend/src/api/room/widgets/AvatarInfoFurni.ts @@ -1,38 +1,37 @@ -import { IObjectData } from '@nitro/renderer'; -import { IAvatarInfo } from './IAvatarInfo'; +import {IObjectData} from "@nitro/renderer"; -export class AvatarInfoFurni implements IAvatarInfo -{ - public static FURNI: string = 'IFI_FURNI'; +import {IAvatarInfo} from "./IAvatarInfo"; - public id: number = 0; - public category: number = 0; - public name: string = ''; - public description: string = ''; - public image: HTMLImageElement = null; - public isWallItem: boolean = false; - public isStickie: boolean = false; - public isRoomOwner: boolean = false; - public roomControllerLevel: number = 0; - public isAnyRoomController: boolean = false; - public expiration: number = -1; - public purchaseCatalogPageId: number = -1; - public purchaseOfferId: number = -1; - public extraParam: string = ''; - public isOwner: boolean = false; - public stuffData: IObjectData = null; - public groupId: number = 0; - public ownerId: number = 0; - public ownerName: string = ''; - public usagePolicy: number = 0; - public rentCatalogPageId: number = -1; - public rentOfferId: number = -1; - public purchaseCouldBeUsedForBuyout: boolean = false; - public rentCouldBeUsedForBuyout: boolean = false; - public availableForBuildersClub: boolean = false; - public tileSizeX: number = 1; - public tileSizeY: number = 1; +export class AvatarInfoFurni implements IAvatarInfo { + public static FURNI: string = "IFI_FURNI"; - constructor(public readonly type: string) - {} + public id: number = 0; + public category: number = 0; + public name: string = ""; + public description: string = ""; + public image: HTMLImageElement = null; + public isWallItem: boolean = false; + public isStickie: boolean = false; + public isRoomOwner: boolean = false; + public roomControllerLevel: number = 0; + public isAnyRoomController: boolean = false; + public expiration: number = -1; + public purchaseCatalogPageId: number = -1; + public purchaseOfferId: number = -1; + public extraParam: string = ""; + public isOwner: boolean = false; + public stuffData: IObjectData = null; + public groupId: number = 0; + public ownerId: number = 0; + public ownerName: string = ""; + public usagePolicy: number = 0; + public rentCatalogPageId: number = -1; + public rentOfferId: number = -1; + public purchaseCouldBeUsedForBuyout: boolean = false; + public rentCouldBeUsedForBuyout: boolean = false; + public availableForBuildersClub: boolean = false; + public tileSizeX: number = 1; + public tileSizeY: number = 1; + + constructor(public readonly type: string) {} } diff --git a/apps/frontend/src/api/room/widgets/AvatarInfoName.ts b/apps/frontend/src/api/room/widgets/AvatarInfoName.ts index 66a6a7e..a310da2 100644 --- a/apps/frontend/src/api/room/widgets/AvatarInfoName.ts +++ b/apps/frontend/src/api/room/widgets/AvatarInfoName.ts @@ -1,11 +1,10 @@ -export class AvatarInfoName -{ - constructor( - public readonly roomIndex: number, - public readonly category: number, - public readonly id: number, - public readonly name: string, - public readonly userType: number, - public readonly isFriend: boolean = false) - {} +export class AvatarInfoName { + constructor( + public readonly roomIndex: number, + public readonly category: number, + public readonly id: number, + public readonly name: string, + public readonly userType: number, + public readonly isFriend: boolean = false + ) {} } diff --git a/apps/frontend/src/api/room/widgets/AvatarInfoPet.ts b/apps/frontend/src/api/room/widgets/AvatarInfoPet.ts index 0c0435a..19447ad 100644 --- a/apps/frontend/src/api/room/widgets/AvatarInfoPet.ts +++ b/apps/frontend/src/api/room/widgets/AvatarInfoPet.ts @@ -1,46 +1,44 @@ -import { IAvatarInfo } from './IAvatarInfo'; +import {IAvatarInfo} from "./IAvatarInfo"; -export class AvatarInfoPet implements IAvatarInfo -{ - public static PET_INFO: string = 'IPI_PET_INFO'; +export class AvatarInfoPet implements IAvatarInfo { + public static PET_INFO: string = "IPI_PET_INFO"; - public level: number = 0; - public maximumLevel: number = 0; - public experience: number = 0; - public levelExperienceGoal: number = 0; - public energy: number = 0; - public maximumEnergy: number = 0; - public happyness: number = 0; - public maximumHappyness: number = 0; - public respectsPetLeft: number = 0; - public respect: number = 0; - public age: number = 0; - public name: string = ''; - public id: number = -1; - public image: HTMLImageElement = null; - public petType: number = 0; - public petBreed: number = 0; - public petFigure: string = ''; - public posture: string = 'std'; - public isOwner: boolean = false; - public ownerId: number = -1; - public ownerName: string = ''; - public canRemovePet: boolean = false; - public roomIndex: number = 0; - public unknownRarityLevel: number = 0; - public saddle: boolean = false; - public rider: boolean = false; - public breedable: boolean = false; - public skillTresholds: number[] = []; - public publiclyRideable: number = 0; - public fullyGrown: boolean = false; - public dead: boolean = false; - public rarityLevel: number = 0; - public maximumTimeToLive: number = 0; - public remainingTimeToLive: number = 0; - public remainingGrowTime: number = 0; - public publiclyBreedable: boolean = false; + public level: number = 0; + public maximumLevel: number = 0; + public experience: number = 0; + public levelExperienceGoal: number = 0; + public energy: number = 0; + public maximumEnergy: number = 0; + public happyness: number = 0; + public maximumHappyness: number = 0; + public respectsPetLeft: number = 0; + public respect: number = 0; + public age: number = 0; + public name: string = ""; + public id: number = -1; + public image: HTMLImageElement = null; + public petType: number = 0; + public petBreed: number = 0; + public petFigure: string = ""; + public posture: string = "std"; + public isOwner: boolean = false; + public ownerId: number = -1; + public ownerName: string = ""; + public canRemovePet: boolean = false; + public roomIndex: number = 0; + public unknownRarityLevel: number = 0; + public saddle: boolean = false; + public rider: boolean = false; + public breedable: boolean = false; + public skillTresholds: number[] = []; + public publiclyRideable: number = 0; + public fullyGrown: boolean = false; + public dead: boolean = false; + public rarityLevel: number = 0; + public maximumTimeToLive: number = 0; + public remainingTimeToLive: number = 0; + public remainingGrowTime: number = 0; + public publiclyBreedable: boolean = false; - constructor(public readonly type: string) - {} + constructor(public readonly type: string) {} } diff --git a/apps/frontend/src/api/room/widgets/AvatarInfoRentableBot.ts b/apps/frontend/src/api/room/widgets/AvatarInfoRentableBot.ts index 77fb10c..7452732 100644 --- a/apps/frontend/src/api/room/widgets/AvatarInfoRentableBot.ts +++ b/apps/frontend/src/api/room/widgets/AvatarInfoRentableBot.ts @@ -1,23 +1,21 @@ -import { IAvatarInfo } from './IAvatarInfo'; +import {IAvatarInfo} from "./IAvatarInfo"; -export class AvatarInfoRentableBot implements IAvatarInfo -{ - public static RENTABLE_BOT: string = 'IRBI_RENTABLE_BOT'; +export class AvatarInfoRentableBot implements IAvatarInfo { + public static RENTABLE_BOT: string = "IRBI_RENTABLE_BOT"; - public name: string = ''; - public motto: string = ''; - public webID: number = 0; - public figure: string = ''; - public badges: string[] = []; - public carryItem: number = 0; - public roomIndex: number = 0; - public amIOwner: boolean = false; - public amIAnyRoomController: boolean = false; - public roomControllerLevel: number = 0; - public ownerId: number = -1; - public ownerName: string = ''; - public botSkills: number[] = []; + public name: string = ""; + public motto: string = ""; + public webID: number = 0; + public figure: string = ""; + public badges: string[] = []; + public carryItem: number = 0; + public roomIndex: number = 0; + public amIOwner: boolean = false; + public amIAnyRoomController: boolean = false; + public roomControllerLevel: number = 0; + public ownerId: number = -1; + public ownerName: string = ""; + public botSkills: number[] = []; - constructor(public readonly type: string) - {} + constructor(public readonly type: string) {} } diff --git a/apps/frontend/src/api/room/widgets/AvatarInfoUser.ts b/apps/frontend/src/api/room/widgets/AvatarInfoUser.ts index 270bfbd..ca201e5 100644 --- a/apps/frontend/src/api/room/widgets/AvatarInfoUser.ts +++ b/apps/frontend/src/api/room/widgets/AvatarInfoUser.ts @@ -1,49 +1,46 @@ -import { IAvatarInfo } from './IAvatarInfo'; +import {IAvatarInfo} from "./IAvatarInfo"; -export class AvatarInfoUser implements IAvatarInfo -{ - public static OWN_USER: string = 'IUI_OWN_USER'; - public static PEER: string = 'IUI_PEER'; - public static BOT: string = 'IUI_BOT'; - public static TRADE_REASON_OK: number = 0; - public static TRADE_REASON_SHUTDOWN: number = 2; - public static TRADE_REASON_NO_TRADING: number = 3; - public static DEFAULT_BOT_BADGE_ID: string = 'BOT'; +export class AvatarInfoUser implements IAvatarInfo { + public static OWN_USER: string = "IUI_OWN_USER"; + public static PEER: string = "IUI_PEER"; + public static BOT: string = "IUI_BOT"; + public static TRADE_REASON_OK: number = 0; + public static TRADE_REASON_SHUTDOWN: number = 2; + public static TRADE_REASON_NO_TRADING: number = 3; + public static DEFAULT_BOT_BADGE_ID: string = "BOT"; - public name: string = ''; - public motto: string = ''; - public achievementScore: number = 0; - public webID: number = 0; - public xp: number = 0; - public userType: number = -1; - public figure: string = ''; - public badges: string[] = []; - public groupId: number = 0; - public groupName: string = ''; - public groupBadgeId: string = ''; - public carryItem: number = 0; - public roomIndex: number = 0; - public isSpectatorMode: boolean = false; - public allowNameChange: boolean = false; - public amIOwner: boolean = false; - public amIAnyRoomController: boolean = false; - public roomControllerLevel: number = 0; - public canBeKicked: boolean = false; - public canBeBanned: boolean = false; - public canBeMuted: boolean = false; - public respectLeft: number = 0; - public isIgnored: boolean = false; - public isGuildRoom: boolean = false; - public canTrade: boolean = false; - public canTradeReason: number = 0; - public targetRoomControllerLevel: number = 0; - public isAmbassador: boolean = false; + public name: string = ""; + public motto: string = ""; + public achievementScore: number = 0; + public webID: number = 0; + public xp: number = 0; + public userType: number = -1; + public figure: string = ""; + public badges: string[] = []; + public groupId: number = 0; + public groupName: string = ""; + public groupBadgeId: string = ""; + public carryItem: number = 0; + public roomIndex: number = 0; + public isSpectatorMode: boolean = false; + public allowNameChange: boolean = false; + public amIOwner: boolean = false; + public amIAnyRoomController: boolean = false; + public roomControllerLevel: number = 0; + public canBeKicked: boolean = false; + public canBeBanned: boolean = false; + public canBeMuted: boolean = false; + public respectLeft: number = 0; + public isIgnored: boolean = false; + public isGuildRoom: boolean = false; + public canTrade: boolean = false; + public canTradeReason: number = 0; + public targetRoomControllerLevel: number = 0; + public isAmbassador: boolean = false; - constructor(public readonly type: string) - {} + constructor(public readonly type: string) {} - public get isOwnUser(): boolean - { - return (this.type === AvatarInfoUser.OWN_USER); - } + public get isOwnUser(): boolean { + return this.type === AvatarInfoUser.OWN_USER; + } } diff --git a/apps/frontend/src/api/room/widgets/AvatarInfoUtilities.ts b/apps/frontend/src/api/room/widgets/AvatarInfoUtilities.ts index 1cf6670..40d8f43 100644 --- a/apps/frontend/src/api/room/widgets/AvatarInfoUtilities.ts +++ b/apps/frontend/src/api/room/widgets/AvatarInfoUtilities.ts @@ -1,454 +1,431 @@ -import { GetTickerTime, IFurnitureData, IRoomModerationSettings, IRoomPetData, IRoomUserData, ObjectDataFactory, PetFigureData, PetType, RoomControllerLevel, RoomModerationSettings, RoomObjectCategory, RoomObjectType, RoomObjectVariable, RoomTradingLevelEnum, RoomWidgetEnumItemExtradataParameter, Vector3d } from '@nitro/renderer'; -import { GetRoomEngine, GetRoomSession, GetSessionDataManager, IsOwnerOfFurniture } from '../../nitro'; -import { LocalizeText } from '../../utils'; -import { AvatarInfoFurni } from './AvatarInfoFurni'; -import { AvatarInfoName } from './AvatarInfoName'; -import { AvatarInfoPet } from './AvatarInfoPet'; -import { AvatarInfoRentableBot } from './AvatarInfoRentableBot'; -import { AvatarInfoUser } from './AvatarInfoUser'; +import { + GetTickerTime, + IFurnitureData, + IRoomModerationSettings, + IRoomPetData, + IRoomUserData, + ObjectDataFactory, + PetFigureData, + PetType, + RoomControllerLevel, + RoomModerationSettings, + RoomObjectCategory, + RoomObjectType, + RoomObjectVariable, + RoomTradingLevelEnum, + RoomWidgetEnumItemExtradataParameter, + Vector3d, +} from "@nitro/renderer"; -export class AvatarInfoUtilities -{ - public static getObjectName(objectId: number, category: number): AvatarInfoName - { - const roomSession = GetRoomSession(); +import {GetRoomEngine, GetRoomSession, GetSessionDataManager, IsOwnerOfFurniture} from "../../nitro"; +import {LocalizeText} from "../../utils"; +import {AvatarInfoFurni} from "./AvatarInfoFurni"; +import {AvatarInfoName} from "./AvatarInfoName"; +import {AvatarInfoPet} from "./AvatarInfoPet"; +import {AvatarInfoRentableBot} from "./AvatarInfoRentableBot"; +import {AvatarInfoUser} from "./AvatarInfoUser"; - let id = -1; - let name: string = null; - let userType = 0; +export class AvatarInfoUtilities { + public static getObjectName(objectId: number, category: number): AvatarInfoName { + const roomSession = GetRoomSession(); - switch(category) - { - case RoomObjectCategory.FLOOR: - case RoomObjectCategory.WALL: { - const roomObject = GetRoomEngine().getRoomObject(roomSession.roomId, objectId, category); - - if(!roomObject) break; - - if(roomObject.type.indexOf('poster') === 0) - { - name = LocalizeText('${poster_' + parseInt(roomObject.type.replace('poster', '')) + '_name}'); - } - else - { - let furniData: IFurnitureData = null; - - const typeId = roomObject.model.getValue(RoomObjectVariable.FURNITURE_TYPE_ID); - - if(category === RoomObjectCategory.FLOOR) - { - furniData = GetSessionDataManager().getFloorItemData(typeId); - } - - else if(category === RoomObjectCategory.WALL) - { - furniData = GetSessionDataManager().getWallItemData(typeId); - } - - if(!furniData) break; - - id = furniData.id; - name = furniData.name; - } - break; - } - case RoomObjectCategory.UNIT: { - const userData = roomSession.userDataManager.getUserDataByIndex(objectId); - - if(!userData) break; - - id = userData.webID; - name = userData.name; - userType = userData.type; - break; - } - } - - if(!name || !name.length) return null; - - return new AvatarInfoName(objectId, category, id, name, userType); - } - - public static getFurniInfo(objectId: number, category: number): AvatarInfoFurni - { - const roomSession = GetRoomSession(); - const furniInfo = new AvatarInfoFurni(AvatarInfoFurni.FURNI); - - furniInfo.id = objectId; - furniInfo.category = category; + let id = -1; + let name: string = null; + let userType = 0; + switch (category) { + case RoomObjectCategory.FLOOR: + case RoomObjectCategory.WALL: { const roomObject = GetRoomEngine().getRoomObject(roomSession.roomId, objectId, category); - if(!roomObject) return; + if (!roomObject) break; - const model = roomObject.model; + if (roomObject.type.indexOf("poster") === 0) { + name = LocalizeText("${poster_" + parseInt(roomObject.type.replace("poster", "")) + "_name}"); + } else { + let furniData: IFurnitureData = null; - if(model.getValue(RoomWidgetEnumItemExtradataParameter.INFOSTAND_EXTRA_PARAM)) - { - furniInfo.extraParam = model.getValue(RoomWidgetEnumItemExtradataParameter.INFOSTAND_EXTRA_PARAM); + const typeId = roomObject.model.getValue(RoomObjectVariable.FURNITURE_TYPE_ID); + + if (category === RoomObjectCategory.FLOOR) { + furniData = GetSessionDataManager().getFloorItemData(typeId); + } else if (category === RoomObjectCategory.WALL) { + furniData = GetSessionDataManager().getWallItemData(typeId); + } + + if (!furniData) break; + + id = furniData.id; + name = furniData.name; } + break; + } + case RoomObjectCategory.UNIT: { + const userData = roomSession.userDataManager.getUserDataByIndex(objectId); - const dataFormat = model.getValue(RoomObjectVariable.FURNITURE_DATA_FORMAT); - const objectData = ObjectDataFactory.getData(dataFormat); + if (!userData) break; - objectData.initializeFromRoomObjectModel(model); - - furniInfo.stuffData = objectData; - - const objectType = roomObject.type; - - if(objectType.indexOf('poster') === 0) - { - const posterId = parseInt(objectType.replace('poster', '')); - - furniInfo.name = LocalizeText(('${poster_' + posterId) + '_name}'); - furniInfo.description = LocalizeText(('${poster_' + posterId) + '_desc}'); - } - else - { - const typeId = model.getValue(RoomObjectVariable.FURNITURE_TYPE_ID); - - let furnitureData: IFurnitureData = null; - - if(category === RoomObjectCategory.FLOOR) - { - furnitureData = GetSessionDataManager().getFloorItemData(typeId); - } - - else if(category === RoomObjectCategory.WALL) - { - furnitureData = GetSessionDataManager().getWallItemData(typeId); - } - - if(furnitureData) - { - furniInfo.name = furnitureData.name; - furniInfo.description = furnitureData.description; - furniInfo.purchaseOfferId = furnitureData.purchaseOfferId; - furniInfo.purchaseCouldBeUsedForBuyout = furnitureData.purchaseCouldBeUsedForBuyout; - furniInfo.rentOfferId = furnitureData.rentOfferId; - furniInfo.rentCouldBeUsedForBuyout = furnitureData.rentCouldBeUsedForBuyout; - furniInfo.availableForBuildersClub = furnitureData.availableForBuildersClub; - furniInfo.tileSizeX = furnitureData.tileSizeX; - furniInfo.tileSizeY = furnitureData.tileSizeY; - } - } - - if(objectType.indexOf('post_it') > -1) furniInfo.isStickie = true; - - const expiryTime = model.getValue(RoomObjectVariable.FURNITURE_EXPIRY_TIME); - const expiryTimestamp = model.getValue(RoomObjectVariable.FURNITURE_EXPIRTY_TIMESTAMP); - - furniInfo.expiration = ((expiryTime < 0) ? expiryTime : Math.max(0, (expiryTime - ((GetTickerTime() - expiryTimestamp) / 1000)))); - - let roomObjectImage = GetRoomEngine().getRoomObjectImage(roomSession.roomId, objectId, category, new Vector3d(180), 64, null); - - if(!roomObjectImage.data || (roomObjectImage.data.width > 140) || (roomObjectImage.data.height > 200)) - { - roomObjectImage = GetRoomEngine().getRoomObjectImage(roomSession.roomId, objectId, category, new Vector3d(180), 1, null); - } - - furniInfo.image = roomObjectImage.getImage(); - furniInfo.isWallItem = (category === RoomObjectCategory.WALL); - furniInfo.isRoomOwner = roomSession.isRoomOwner; - furniInfo.roomControllerLevel = roomSession.controllerLevel; - furniInfo.isAnyRoomController = GetSessionDataManager().isModerator; - furniInfo.ownerId = model.getValue(RoomObjectVariable.FURNITURE_OWNER_ID); - furniInfo.ownerName = model.getValue(RoomObjectVariable.FURNITURE_OWNER_NAME); - furniInfo.usagePolicy = model.getValue(RoomObjectVariable.FURNITURE_USAGE_POLICY); - - const guildId = model.getValue(RoomObjectVariable.FURNITURE_GUILD_CUSTOMIZED_GUILD_ID); - - if(guildId !== 0) - { - furniInfo.groupId = guildId; - //this.container.connection.send(new GroupInformationComposer(guildId, false)); - } - - if(IsOwnerOfFurniture(roomObject)) furniInfo.isOwner = true; - - return furniInfo; + id = userData.webID; + name = userData.name; + userType = userData.type; + break; + } } - public static getUserInfo(category: number, userData: IRoomUserData): AvatarInfoUser - { - const roomSession = GetRoomSession(); + if (!name || !name.length) return null; - let userInfoType = AvatarInfoUser.OWN_USER; + return new AvatarInfoName(objectId, category, id, name, userType); + } - if(userData.webID !== GetSessionDataManager().userId) userInfoType = AvatarInfoUser.PEER; + public static getFurniInfo(objectId: number, category: number): AvatarInfoFurni { + const roomSession = GetRoomSession(); + const furniInfo = new AvatarInfoFurni(AvatarInfoFurni.FURNI); - const userInfo = new AvatarInfoUser(userInfoType); + furniInfo.id = objectId; + furniInfo.category = category; - userInfo.isSpectatorMode = roomSession.isSpectator; - userInfo.name = userData.name; - userInfo.motto = userData.custom; - userInfo.achievementScore = userData.activityPoints; - userInfo.webID = userData.webID; - userInfo.roomIndex = userData.roomIndex; - userInfo.userType = RoomObjectType.USER; + const roomObject = GetRoomEngine().getRoomObject(roomSession.roomId, objectId, category); - const roomObject = GetRoomEngine().getRoomObject(roomSession.roomId, userData.roomIndex, category); + if (!roomObject) return; - if(roomObject) userInfo.carryItem = (roomObject.model.getValue(RoomObjectVariable.FIGURE_CARRY_OBJECT) || 0); + const model = roomObject.model; - if(userInfoType === AvatarInfoUser.OWN_USER) userInfo.allowNameChange = GetSessionDataManager().canChangeName; + if (model.getValue(RoomWidgetEnumItemExtradataParameter.INFOSTAND_EXTRA_PARAM)) { + furniInfo.extraParam = model.getValue(RoomWidgetEnumItemExtradataParameter.INFOSTAND_EXTRA_PARAM); + } - userInfo.amIOwner = roomSession.isRoomOwner; - userInfo.isGuildRoom = roomSession.isGuildRoom; - userInfo.roomControllerLevel = roomSession.controllerLevel; - userInfo.amIAnyRoomController = GetSessionDataManager().isModerator; - userInfo.isAmbassador = GetSessionDataManager().isAmbassador; + const dataFormat = model.getValue(RoomObjectVariable.FURNITURE_DATA_FORMAT); + const objectData = ObjectDataFactory.getData(dataFormat); - if(userInfoType === AvatarInfoUser.PEER) - { - if(roomObject) - { - const flatControl = roomObject.model.getValue(RoomObjectVariable.FIGURE_FLAT_CONTROL); + objectData.initializeFromRoomObjectModel(model); - if(flatControl !== null) userInfo.targetRoomControllerLevel = flatControl; + furniInfo.stuffData = objectData; - userInfo.canBeMuted = this.canBeMuted(userInfo); - userInfo.canBeKicked = this.canBeKicked(userInfo); - userInfo.canBeBanned = this.canBeBanned(userInfo); - } + const objectType = roomObject.type; - userInfo.isIgnored = GetSessionDataManager().isUserIgnored(userData.name); - userInfo.respectLeft = GetSessionDataManager().respectsLeft; + if (objectType.indexOf("poster") === 0) { + const posterId = parseInt(objectType.replace("poster", "")); - const isShuttingDown = GetSessionDataManager().isSystemShutdown; - const tradeMode = roomSession.tradeMode; + furniInfo.name = LocalizeText("${poster_" + posterId + "_name}"); + furniInfo.description = LocalizeText("${poster_" + posterId + "_desc}"); + } else { + const typeId = model.getValue(RoomObjectVariable.FURNITURE_TYPE_ID); - if(isShuttingDown) - { - userInfo.canTrade = false; - } - else - { - switch(tradeMode) - { - case RoomTradingLevelEnum.ROOM_CONTROLLER_REQUIRED: { - const roomController = ((userInfo.roomControllerLevel !== RoomControllerLevel.NONE) && (userInfo.roomControllerLevel !== RoomControllerLevel.GUILD_MEMBER)); - const targetController = ((userInfo.targetRoomControllerLevel !== RoomControllerLevel.NONE) && (userInfo.targetRoomControllerLevel !== RoomControllerLevel.GUILD_MEMBER)); + let furnitureData: IFurnitureData = null; - userInfo.canTrade = (roomController || targetController); - break; - } - case RoomTradingLevelEnum.NO_TRADING: - userInfo.canTrade = true; - break; - default: - userInfo.canTrade = false; - break; - } - } + if (category === RoomObjectCategory.FLOOR) { + furnitureData = GetSessionDataManager().getFloorItemData(typeId); + } else if (category === RoomObjectCategory.WALL) { + furnitureData = GetSessionDataManager().getWallItemData(typeId); + } - userInfo.canTradeReason = AvatarInfoUser.TRADE_REASON_OK; + if (furnitureData) { + furniInfo.name = furnitureData.name; + furniInfo.description = furnitureData.description; + furniInfo.purchaseOfferId = furnitureData.purchaseOfferId; + furniInfo.purchaseCouldBeUsedForBuyout = furnitureData.purchaseCouldBeUsedForBuyout; + furniInfo.rentOfferId = furnitureData.rentOfferId; + furniInfo.rentCouldBeUsedForBuyout = furnitureData.rentCouldBeUsedForBuyout; + furniInfo.availableForBuildersClub = furnitureData.availableForBuildersClub; + furniInfo.tileSizeX = furnitureData.tileSizeX; + furniInfo.tileSizeY = furnitureData.tileSizeY; + } + } - if(isShuttingDown) userInfo.canTradeReason = AvatarInfoUser.TRADE_REASON_SHUTDOWN; + if (objectType.indexOf("post_it") > -1) furniInfo.isStickie = true; - if(tradeMode !== RoomTradingLevelEnum.FREE_TRADING) userInfo.canTradeReason = AvatarInfoUser.TRADE_REASON_NO_TRADING; + const expiryTime = model.getValue(RoomObjectVariable.FURNITURE_EXPIRY_TIME); + const expiryTimestamp = model.getValue(RoomObjectVariable.FURNITURE_EXPIRTY_TIMESTAMP); - // const _local_12 = GetSessionDataManager().userId; - // _local_13 = GetSessionDataManager().getUserTags(_local_12); - // this._Str_16287(_local_12, _local_13); + furniInfo.expiration = expiryTime < 0 ? expiryTime : Math.max(0, expiryTime - (GetTickerTime() - expiryTimestamp) / 1000); + + let roomObjectImage = GetRoomEngine().getRoomObjectImage(roomSession.roomId, objectId, category, new Vector3d(180), 64, null); + + if (!roomObjectImage.data || roomObjectImage.data.width > 140 || roomObjectImage.data.height > 200) { + roomObjectImage = GetRoomEngine().getRoomObjectImage(roomSession.roomId, objectId, category, new Vector3d(180), 1, null); + } + + furniInfo.image = roomObjectImage.getImage(); + furniInfo.isWallItem = category === RoomObjectCategory.WALL; + furniInfo.isRoomOwner = roomSession.isRoomOwner; + furniInfo.roomControllerLevel = roomSession.controllerLevel; + furniInfo.isAnyRoomController = GetSessionDataManager().isModerator; + furniInfo.ownerId = model.getValue(RoomObjectVariable.FURNITURE_OWNER_ID); + furniInfo.ownerName = model.getValue(RoomObjectVariable.FURNITURE_OWNER_NAME); + furniInfo.usagePolicy = model.getValue(RoomObjectVariable.FURNITURE_USAGE_POLICY); + + const guildId = model.getValue(RoomObjectVariable.FURNITURE_GUILD_CUSTOMIZED_GUILD_ID); + + if (guildId !== 0) { + furniInfo.groupId = guildId; + //this.container.connection.send(new GroupInformationComposer(guildId, false)); + } + + if (IsOwnerOfFurniture(roomObject)) furniInfo.isOwner = true; + + return furniInfo; + } + + public static getUserInfo(category: number, userData: IRoomUserData): AvatarInfoUser { + const roomSession = GetRoomSession(); + + let userInfoType = AvatarInfoUser.OWN_USER; + + if (userData.webID !== GetSessionDataManager().userId) userInfoType = AvatarInfoUser.PEER; + + const userInfo = new AvatarInfoUser(userInfoType); + + userInfo.isSpectatorMode = roomSession.isSpectator; + userInfo.name = userData.name; + userInfo.motto = userData.custom; + userInfo.achievementScore = userData.activityPoints; + userInfo.webID = userData.webID; + userInfo.roomIndex = userData.roomIndex; + userInfo.userType = RoomObjectType.USER; + + const roomObject = GetRoomEngine().getRoomObject(roomSession.roomId, userData.roomIndex, category); + + if (roomObject) userInfo.carryItem = roomObject.model.getValue(RoomObjectVariable.FIGURE_CARRY_OBJECT) || 0; + + if (userInfoType === AvatarInfoUser.OWN_USER) userInfo.allowNameChange = GetSessionDataManager().canChangeName; + + userInfo.amIOwner = roomSession.isRoomOwner; + userInfo.isGuildRoom = roomSession.isGuildRoom; + userInfo.roomControllerLevel = roomSession.controllerLevel; + userInfo.amIAnyRoomController = GetSessionDataManager().isModerator; + userInfo.isAmbassador = GetSessionDataManager().isAmbassador; + + if (userInfoType === AvatarInfoUser.PEER) { + if (roomObject) { + const flatControl = roomObject.model.getValue(RoomObjectVariable.FIGURE_FLAT_CONTROL); + + if (flatControl !== null) userInfo.targetRoomControllerLevel = flatControl; + + userInfo.canBeMuted = this.canBeMuted(userInfo); + userInfo.canBeKicked = this.canBeKicked(userInfo); + userInfo.canBeBanned = this.canBeBanned(userInfo); + } + + userInfo.isIgnored = GetSessionDataManager().isUserIgnored(userData.name); + userInfo.respectLeft = GetSessionDataManager().respectsLeft; + + const isShuttingDown = GetSessionDataManager().isSystemShutdown; + const tradeMode = roomSession.tradeMode; + + if (isShuttingDown) { + userInfo.canTrade = false; + } else { + switch (tradeMode) { + case RoomTradingLevelEnum.ROOM_CONTROLLER_REQUIRED: { + const roomController = + userInfo.roomControllerLevel !== RoomControllerLevel.NONE && userInfo.roomControllerLevel !== RoomControllerLevel.GUILD_MEMBER; + const targetController = + userInfo.targetRoomControllerLevel !== RoomControllerLevel.NONE && userInfo.targetRoomControllerLevel !== RoomControllerLevel.GUILD_MEMBER; + + userInfo.canTrade = roomController || targetController; + break; + } + case RoomTradingLevelEnum.NO_TRADING: + userInfo.canTrade = true; + break; + default: + userInfo.canTrade = false; + break; } + } - userInfo.groupId = userData.groupId; - userInfo.groupBadgeId = GetSessionDataManager().getGroupBadge(userInfo.groupId); - userInfo.groupName = userData.groupName; - userInfo.badges = roomSession.userDataManager.getUserBadges(userData.webID); - userInfo.figure = userData.figure; - //var _local_8:Array = GetSessionDataManager().getUserTags(userData.webID); - //this._Str_16287(userData.webId, _local_8); - //this._container.habboGroupsManager.updateVisibleExtendedProfile(userData.webID); - //this._container.connection.send(new GetRelationshipStatusInfoMessageComposer(userData.webId)); + userInfo.canTradeReason = AvatarInfoUser.TRADE_REASON_OK; - return userInfo; + if (isShuttingDown) userInfo.canTradeReason = AvatarInfoUser.TRADE_REASON_SHUTDOWN; + + if (tradeMode !== RoomTradingLevelEnum.FREE_TRADING) userInfo.canTradeReason = AvatarInfoUser.TRADE_REASON_NO_TRADING; + + // const _local_12 = GetSessionDataManager().userId; + // _local_13 = GetSessionDataManager().getUserTags(_local_12); + // this._Str_16287(_local_12, _local_13); } - public static getBotInfo(category: number, userData: IRoomUserData): AvatarInfoUser - { - const roomSession = GetRoomSession(); - const userInfo = new AvatarInfoUser(AvatarInfoUser.BOT); + userInfo.groupId = userData.groupId; + userInfo.groupBadgeId = GetSessionDataManager().getGroupBadge(userInfo.groupId); + userInfo.groupName = userData.groupName; + userInfo.badges = roomSession.userDataManager.getUserBadges(userData.webID); + userInfo.figure = userData.figure; + //var _local_8:Array = GetSessionDataManager().getUserTags(userData.webID); + //this._Str_16287(userData.webId, _local_8); + //this._container.habboGroupsManager.updateVisibleExtendedProfile(userData.webID); + //this._container.connection.send(new GetRelationshipStatusInfoMessageComposer(userData.webId)); - userInfo.name = userData.name; - userInfo.motto = userData.custom; - userInfo.webID = userData.webID; - userInfo.roomIndex = userData.roomIndex; - userInfo.userType = userData.type; + return userInfo; + } - const roomObject = GetRoomEngine().getRoomObject(roomSession.roomId, userData.roomIndex, category); + public static getBotInfo(category: number, userData: IRoomUserData): AvatarInfoUser { + const roomSession = GetRoomSession(); + const userInfo = new AvatarInfoUser(AvatarInfoUser.BOT); - if(roomObject) userInfo.carryItem = (roomObject.model.getValue(RoomObjectVariable.FIGURE_CARRY_OBJECT) || 0); + userInfo.name = userData.name; + userInfo.motto = userData.custom; + userInfo.webID = userData.webID; + userInfo.roomIndex = userData.roomIndex; + userInfo.userType = userData.type; - userInfo.amIOwner = roomSession.isRoomOwner; - userInfo.isGuildRoom = roomSession.isGuildRoom; - userInfo.roomControllerLevel = roomSession.controllerLevel; - userInfo.amIAnyRoomController = GetSessionDataManager().isModerator; - userInfo.isAmbassador = GetSessionDataManager().isAmbassador; - userInfo.badges = [ AvatarInfoUser.DEFAULT_BOT_BADGE_ID ]; - userInfo.figure = userData.figure; + const roomObject = GetRoomEngine().getRoomObject(roomSession.roomId, userData.roomIndex, category); - return userInfo; + if (roomObject) userInfo.carryItem = roomObject.model.getValue(RoomObjectVariable.FIGURE_CARRY_OBJECT) || 0; + + userInfo.amIOwner = roomSession.isRoomOwner; + userInfo.isGuildRoom = roomSession.isGuildRoom; + userInfo.roomControllerLevel = roomSession.controllerLevel; + userInfo.amIAnyRoomController = GetSessionDataManager().isModerator; + userInfo.isAmbassador = GetSessionDataManager().isAmbassador; + userInfo.badges = [AvatarInfoUser.DEFAULT_BOT_BADGE_ID]; + userInfo.figure = userData.figure; + + return userInfo; + } + + public static getRentableBotInfo(category: number, userData: IRoomUserData): AvatarInfoRentableBot { + const roomSession = GetRoomSession(); + const botInfo = new AvatarInfoRentableBot(AvatarInfoRentableBot.RENTABLE_BOT); + + botInfo.name = userData.name; + botInfo.motto = userData.custom; + botInfo.webID = userData.webID; + botInfo.roomIndex = userData.roomIndex; + botInfo.ownerId = userData.ownerId; + botInfo.ownerName = userData.ownerName; + botInfo.botSkills = userData.botSkills; + + const roomObject = GetRoomEngine().getRoomObject(roomSession.roomId, userData.roomIndex, category); + + if (roomObject) botInfo.carryItem = roomObject.model.getValue(RoomObjectVariable.FIGURE_CARRY_OBJECT) || 0; + + botInfo.amIOwner = roomSession.isRoomOwner; + botInfo.roomControllerLevel = roomSession.controllerLevel; + botInfo.amIAnyRoomController = GetSessionDataManager().isModerator; + botInfo.badges = [AvatarInfoUser.DEFAULT_BOT_BADGE_ID]; + botInfo.figure = userData.figure; + + return botInfo; + } + + public static getPetInfo(petData: IRoomPetData): AvatarInfoPet { + const roomSession = GetRoomSession(); + const userData = roomSession.userDataManager.getPetData(petData.id); + + if (!userData) return; + + const figure = new PetFigureData(userData.figure); + + let posture: string = null; + + if (figure.typeId === PetType.MONSTERPLANT) { + if (petData.level >= petData.adultLevel) posture = "std"; + else posture = "grw" + petData.level; } - public static getRentableBotInfo(category: number, userData: IRoomUserData): AvatarInfoRentableBot - { - const roomSession = GetRoomSession(); - const botInfo = new AvatarInfoRentableBot(AvatarInfoRentableBot.RENTABLE_BOT); + const isOwner = petData.ownerId === GetSessionDataManager().userId; + const petInfo = new AvatarInfoPet(AvatarInfoPet.PET_INFO); - botInfo.name = userData.name; - botInfo.motto = userData.custom; - botInfo.webID = userData.webID; - botInfo.roomIndex = userData.roomIndex; - botInfo.ownerId = userData.ownerId; - botInfo.ownerName = userData.ownerName; - botInfo.botSkills = userData.botSkills; + petInfo.name = userData.name; + petInfo.id = petData.id; + petInfo.ownerId = petData.ownerId; + petInfo.ownerName = petData.ownerName; + petInfo.rarityLevel = petData.rarityLevel; + petInfo.petType = figure.typeId; + petInfo.petBreed = figure.paletteId; + petInfo.petFigure = userData.figure; + petInfo.posture = posture; + petInfo.isOwner = isOwner; + petInfo.roomIndex = userData.roomIndex; + petInfo.level = petData.level; + petInfo.maximumLevel = petData.maximumLevel; + petInfo.experience = petData.experience; + petInfo.levelExperienceGoal = petData.levelExperienceGoal; + petInfo.energy = petData.energy; + petInfo.maximumEnergy = petData.maximumEnergy; + petInfo.happyness = petData.happyness; + petInfo.maximumHappyness = petData.maximumHappyness; + petInfo.respect = petData.respect; + petInfo.respectsPetLeft = GetSessionDataManager().respectsPetLeft; + petInfo.age = petData.age; + petInfo.saddle = petData.saddle; + petInfo.rider = petData.rider; + petInfo.breedable = petData.breedable; + petInfo.fullyGrown = petData.fullyGrown; + petInfo.dead = petData.dead; + petInfo.rarityLevel = petData.rarityLevel; + petInfo.skillTresholds = petData.skillTresholds; + petInfo.canRemovePet = false; + petInfo.publiclyRideable = petData.publiclyRideable; + petInfo.maximumTimeToLive = petData.maximumTimeToLive; + petInfo.remainingTimeToLive = petData.remainingTimeToLive; + petInfo.remainingGrowTime = petData.remainingGrowTime; + petInfo.publiclyBreedable = petData.publiclyBreedable; - const roomObject = GetRoomEngine().getRoomObject(roomSession.roomId, userData.roomIndex, category); + if (isOwner || roomSession.isRoomOwner || GetSessionDataManager().isModerator || roomSession.controllerLevel >= RoomControllerLevel.GUEST) + petInfo.canRemovePet = true; - if(roomObject) botInfo.carryItem = (roomObject.model.getValue(RoomObjectVariable.FIGURE_CARRY_OBJECT) || 0); + return petInfo; + } - botInfo.amIOwner = roomSession.isRoomOwner; - botInfo.roomControllerLevel = roomSession.controllerLevel; - botInfo.amIAnyRoomController = GetSessionDataManager().isModerator; - botInfo.badges = [ AvatarInfoUser.DEFAULT_BOT_BADGE_ID ]; - botInfo.figure = userData.figure; + private static checkGuildSetting(userInfo: AvatarInfoUser): boolean { + if (userInfo.isGuildRoom) return userInfo.roomControllerLevel >= RoomControllerLevel.GUILD_ADMIN; - return botInfo; - } + return userInfo.roomControllerLevel >= RoomControllerLevel.GUEST; + } - public static getPetInfo(petData: IRoomPetData): AvatarInfoPet - { - const roomSession = GetRoomSession(); - const userData = roomSession.userDataManager.getPetData(petData.id); + private static isValidSetting(userInfo: AvatarInfoUser, checkSetting: (userInfo: AvatarInfoUser, moderation: IRoomModerationSettings) => boolean): boolean { + const roomSession = GetRoomSession(); - if(!userData) return; + if (!roomSession.isPrivateRoom) return false; - const figure = new PetFigureData(userData.figure); + const moderation = roomSession.moderationSettings; - let posture: string = null; + let flag = false; - if(figure.typeId === PetType.MONSTERPLANT) - { - if(petData.level >= petData.adultLevel) posture = 'std'; - else posture = ('grw' + petData.level); - } + if (moderation) flag = checkSetting(userInfo, moderation); - const isOwner = (petData.ownerId === GetSessionDataManager().userId); - const petInfo = new AvatarInfoPet(AvatarInfoPet.PET_INFO); + return flag && userInfo.targetRoomControllerLevel < RoomControllerLevel.ROOM_OWNER; + } - petInfo.name = userData.name; - petInfo.id = petData.id; - petInfo.ownerId = petData.ownerId; - petInfo.ownerName = petData.ownerName; - petInfo.rarityLevel = petData.rarityLevel; - petInfo.petType = figure.typeId; - petInfo.petBreed = figure.paletteId; - petInfo.petFigure = userData.figure; - petInfo.posture = posture; - petInfo.isOwner = isOwner; - petInfo.roomIndex = userData.roomIndex; - petInfo.level = petData.level; - petInfo.maximumLevel = petData.maximumLevel; - petInfo.experience = petData.experience; - petInfo.levelExperienceGoal = petData.levelExperienceGoal; - petInfo.energy = petData.energy; - petInfo.maximumEnergy = petData.maximumEnergy; - petInfo.happyness = petData.happyness; - petInfo.maximumHappyness = petData.maximumHappyness; - petInfo.respect = petData.respect; - petInfo.respectsPetLeft = GetSessionDataManager().respectsPetLeft; - petInfo.age = petData.age; - petInfo.saddle = petData.saddle; - petInfo.rider = petData.rider; - petInfo.breedable = petData.breedable; - petInfo.fullyGrown = petData.fullyGrown; - petInfo.dead = petData.dead; - petInfo.rarityLevel = petData.rarityLevel; - petInfo.skillTresholds = petData.skillTresholds; - petInfo.canRemovePet = false; - petInfo.publiclyRideable = petData.publiclyRideable; - petInfo.maximumTimeToLive = petData.maximumTimeToLive; - petInfo.remainingTimeToLive = petData.remainingTimeToLive; - petInfo.remainingGrowTime = petData.remainingGrowTime; - petInfo.publiclyBreedable = petData.publiclyBreedable; + private static canBeMuted(userInfo: AvatarInfoUser): boolean { + const checkSetting = (userInfo: AvatarInfoUser, moderation: IRoomModerationSettings) => { + switch (moderation.allowMute) { + case RoomModerationSettings.MODERATION_LEVEL_USER_WITH_RIGHTS: + return this.checkGuildSetting(userInfo); + default: + return userInfo.roomControllerLevel >= RoomControllerLevel.ROOM_OWNER; + } + }; - if(isOwner || roomSession.isRoomOwner || GetSessionDataManager().isModerator || (roomSession.controllerLevel >= RoomControllerLevel.GUEST)) petInfo.canRemovePet = true; + return this.isValidSetting(userInfo, checkSetting); + } - return petInfo; - } + private static canBeKicked(userInfo: AvatarInfoUser): boolean { + const checkSetting = (userInfo: AvatarInfoUser, moderation: IRoomModerationSettings) => { + switch (moderation.allowKick) { + case RoomModerationSettings.MODERATION_LEVEL_ALL: + return true; + case RoomModerationSettings.MODERATION_LEVEL_USER_WITH_RIGHTS: + return this.checkGuildSetting(userInfo); + default: + return userInfo.roomControllerLevel >= RoomControllerLevel.ROOM_OWNER; + } + }; - private static checkGuildSetting(userInfo: AvatarInfoUser): boolean - { - if(userInfo.isGuildRoom) return (userInfo.roomControllerLevel >= RoomControllerLevel.GUILD_ADMIN); + return this.isValidSetting(userInfo, checkSetting); + } - return (userInfo.roomControllerLevel >= RoomControllerLevel.GUEST); - } + private static canBeBanned(userInfo: AvatarInfoUser): boolean { + const checkSetting = (userInfo: AvatarInfoUser, moderation: IRoomModerationSettings) => { + switch (moderation.allowBan) { + case RoomModerationSettings.MODERATION_LEVEL_USER_WITH_RIGHTS: + return this.checkGuildSetting(userInfo); + default: + return userInfo.roomControllerLevel >= RoomControllerLevel.ROOM_OWNER; + } + }; - private static isValidSetting(userInfo: AvatarInfoUser, checkSetting: (userInfo: AvatarInfoUser, moderation: IRoomModerationSettings) => boolean): boolean - { - const roomSession = GetRoomSession(); - - if(!roomSession.isPrivateRoom) return false; - - const moderation = roomSession.moderationSettings; - - let flag = false; - - if(moderation) flag = checkSetting(userInfo, moderation); - - return (flag && (userInfo.targetRoomControllerLevel < RoomControllerLevel.ROOM_OWNER)); - } - - private static canBeMuted(userInfo: AvatarInfoUser): boolean - { - const checkSetting = (userInfo: AvatarInfoUser, moderation: IRoomModerationSettings) => - { - switch(moderation.allowMute) - { - case RoomModerationSettings.MODERATION_LEVEL_USER_WITH_RIGHTS: - return this.checkGuildSetting(userInfo); - default: - return (userInfo.roomControllerLevel >= RoomControllerLevel.ROOM_OWNER); - } - } - - return this.isValidSetting(userInfo, checkSetting); - } - - private static canBeKicked(userInfo: AvatarInfoUser): boolean - { - const checkSetting = (userInfo: AvatarInfoUser, moderation: IRoomModerationSettings) => - { - switch(moderation.allowKick) - { - case RoomModerationSettings.MODERATION_LEVEL_ALL: - return true; - case RoomModerationSettings.MODERATION_LEVEL_USER_WITH_RIGHTS: - return this.checkGuildSetting(userInfo); - default: - return (userInfo.roomControllerLevel >= RoomControllerLevel.ROOM_OWNER); - } - } - - return this.isValidSetting(userInfo, checkSetting); - } - - private static canBeBanned(userInfo: AvatarInfoUser): boolean - { - const checkSetting = (userInfo: AvatarInfoUser, moderation: IRoomModerationSettings) => - { - switch(moderation.allowBan) - { - case RoomModerationSettings.MODERATION_LEVEL_USER_WITH_RIGHTS: - return this.checkGuildSetting(userInfo); - default: - return (userInfo.roomControllerLevel >= RoomControllerLevel.ROOM_OWNER); - } - } - - return this.isValidSetting(userInfo, checkSetting); - } + return this.isValidSetting(userInfo, checkSetting); + } } diff --git a/apps/frontend/src/api/room/widgets/BotSkillsEnum.ts b/apps/frontend/src/api/room/widgets/BotSkillsEnum.ts index b879cdc..6cf82ac 100644 --- a/apps/frontend/src/api/room/widgets/BotSkillsEnum.ts +++ b/apps/frontend/src/api/room/widgets/BotSkillsEnum.ts @@ -1,18 +1,17 @@ -export class BotSkillsEnum -{ - public static GENERIC_SKILL: number = 0; - public static DRESS_UP: number = 1; - public static SETUP_CHAT: number = 2; - public static RANDOM_WALK: number = 3; - public static DANCE: number = 4; - public static CHANGE_BOT_NAME: number = 5; - public static SERVE_BEVERAGE: number = 6; - public static INCLIENT_LINK: number = 7; - public static NUX_PROCEED: number = 8; - public static CHANGE_BOT_MOTTO: number = 9; - public static NUX_TAKE_TOUR: number = 10; - public static NO_PICK_UP: number = 12; - public static NAVIGATOR_SEARCH: number = 14; - public static DONATE_TO_USER: number = 24; - public static DONATE_TO_ALL: number = 25; +export class BotSkillsEnum { + public static GENERIC_SKILL: number = 0; + public static DRESS_UP: number = 1; + public static SETUP_CHAT: number = 2; + public static RANDOM_WALK: number = 3; + public static DANCE: number = 4; + public static CHANGE_BOT_NAME: number = 5; + public static SERVE_BEVERAGE: number = 6; + public static INCLIENT_LINK: number = 7; + public static NUX_PROCEED: number = 8; + public static CHANGE_BOT_MOTTO: number = 9; + public static NUX_TAKE_TOUR: number = 10; + public static NO_PICK_UP: number = 12; + public static NAVIGATOR_SEARCH: number = 14; + public static DONATE_TO_USER: number = 24; + public static DONATE_TO_ALL: number = 25; } diff --git a/apps/frontend/src/api/room/widgets/ChatBubbleMessage.ts b/apps/frontend/src/api/room/widgets/ChatBubbleMessage.ts index ac130cf..6fa0f32 100644 --- a/apps/frontend/src/api/room/widgets/ChatBubbleMessage.ts +++ b/apps/frontend/src/api/room/widgets/ChatBubbleMessage.ts @@ -1,56 +1,50 @@ -import { INitroPoint } from '@nitro/renderer'; +import {INitroPoint} from "@nitro/renderer"; -export class ChatBubbleMessage -{ - public static BUBBLE_COUNTER: number = 0; +export class ChatBubbleMessage { + public static BUBBLE_COUNTER: number = 0; - public id: number = -1; - public width: number = 0; - public height: number = 0; - public elementRef: HTMLDivElement = null; - public skipMovement: boolean = false; + public id: number = -1; + public width: number = 0; + public height: number = 0; + public elementRef: HTMLDivElement = null; + public skipMovement: boolean = false; - private _top: number = 0; - private _left: number = 0; - - constructor( - public senderId: number = -1, - public senderCategory: number = -1, - public roomId: number = -1, - public text: string = '', - public formattedText: string = '', - public username: string = '', - public location: INitroPoint = null, - public type: number = 0, - public styleId: number = 0, - public imageUrl: string = null, - public color: string = null - ) - { - this.id = ++ChatBubbleMessage.BUBBLE_COUNTER; - } + private _top: number = 0; + private _left: number = 0; - public get top(): number - { - return this._top; - } + constructor( + public senderId: number = -1, + public senderCategory: number = -1, + public roomId: number = -1, + public text: string = "", + public formattedText: string = "", + public username: string = "", + public location: INitroPoint = null, + public type: number = 0, + public styleId: number = 0, + public imageUrl: string = null, + public color: string = null + ) { + this.id = ++ChatBubbleMessage.BUBBLE_COUNTER; + } - public set top(value: number) - { - this._top = value; + public get top(): number { + return this._top; + } - if(this.elementRef) this.elementRef.style.top = (this._top + 'px'); - } + public set top(value: number) { + this._top = value; - public get left(): number - { - return this._left; - } + if (this.elementRef) this.elementRef.style.top = this._top + "px"; + } - public set left(value: number) - { - this._left = value; + public get left(): number { + return this._left; + } - if(this.elementRef) this.elementRef.style.left = (this._left + 'px'); - } + public set left(value: number) { + this._left = value; + + if (this.elementRef) this.elementRef.style.left = this._left + "px"; + } } diff --git a/apps/frontend/src/api/room/widgets/ChatMessageTypeEnum.ts b/apps/frontend/src/api/room/widgets/ChatMessageTypeEnum.ts index 1a5296b..d3548fd 100644 --- a/apps/frontend/src/api/room/widgets/ChatMessageTypeEnum.ts +++ b/apps/frontend/src/api/room/widgets/ChatMessageTypeEnum.ts @@ -1,6 +1,5 @@ -export class ChatMessageTypeEnum -{ - public static CHAT_DEFAULT: number = 0; - public static CHAT_WHISPER: number = 1; - public static CHAT_SHOUT: number = 2; +export class ChatMessageTypeEnum { + public static CHAT_DEFAULT: number = 0; + public static CHAT_WHISPER: number = 1; + public static CHAT_SHOUT: number = 2; } diff --git a/apps/frontend/src/api/room/widgets/DimmerFurnitureWidgetPresetItem.ts b/apps/frontend/src/api/room/widgets/DimmerFurnitureWidgetPresetItem.ts index 1a2759f..8b7025b 100644 --- a/apps/frontend/src/api/room/widgets/DimmerFurnitureWidgetPresetItem.ts +++ b/apps/frontend/src/api/room/widgets/DimmerFurnitureWidgetPresetItem.ts @@ -1,9 +1,3 @@ -export class DimmerFurnitureWidgetPresetItem -{ - constructor( - public id: number = 0, - public type: number = 0, - public color: number = 0, - public light: number = 0) - {} +export class DimmerFurnitureWidgetPresetItem { + constructor(public id: number = 0, public type: number = 0, public color: number = 0, public light: number = 0) {} } diff --git a/apps/frontend/src/api/room/widgets/DoChatsOverlap.ts b/apps/frontend/src/api/room/widgets/DoChatsOverlap.ts index 092ce5d..d0bd94e 100644 --- a/apps/frontend/src/api/room/widgets/DoChatsOverlap.ts +++ b/apps/frontend/src/api/room/widgets/DoChatsOverlap.ts @@ -1,7 +1,10 @@ -import { ChatBubbleMessage } from './ChatBubbleMessage'; +import {ChatBubbleMessage} from "./ChatBubbleMessage"; -export const DoChatsOverlap = (a: ChatBubbleMessage, b: ChatBubbleMessage, additionalBTop: number, padding: number = 0) => -{ - return !((((a.left + padding) + a.width) < (b.left + padding)) || ((a.left + padding) > ((b.left + padding) + b.width)) || ((a.top + a.height) < (b.top + additionalBTop)) || (a.top > ((b.top + additionalBTop) + b.height))); -} - \ No newline at end of file +export const DoChatsOverlap = (a: ChatBubbleMessage, b: ChatBubbleMessage, additionalBTop: number, padding: number = 0) => { + return !( + a.left + padding + a.width < b.left + padding || + a.left + padding > b.left + padding + b.width || + a.top + a.height < b.top + additionalBTop || + a.top > b.top + additionalBTop + b.height + ); +}; diff --git a/apps/frontend/src/api/room/widgets/FurnitureDimmerUtilities.ts b/apps/frontend/src/api/room/widgets/FurnitureDimmerUtilities.ts index 9d252d1..60d6443 100644 --- a/apps/frontend/src/api/room/widgets/FurnitureDimmerUtilities.ts +++ b/apps/frontend/src/api/room/widgets/FurnitureDimmerUtilities.ts @@ -1,29 +1,24 @@ -import { GetRoomEngine, GetRoomSession } from '../../nitro'; +import {GetRoomEngine, GetRoomSession} from "../../nitro"; -export class FurnitureDimmerUtilities -{ - public static AVAILABLE_COLORS: number[] = [ 7665141, 21495, 15161822, 15353138, 15923281, 8581961, 0 ]; - public static HTML_COLORS: string[] = [ '#74F5F5', '#0053F7', '#E759DE', '#EA4532', '#F2F851', '#82F349', '#000000' ]; - public static MIN_BRIGHTNESS: number = 76; - public static MAX_BRIGHTNESS: number = 255; +export class FurnitureDimmerUtilities { + public static AVAILABLE_COLORS: number[] = [7665141, 21495, 15161822, 15353138, 15923281, 8581961, 0]; + public static HTML_COLORS: string[] = ["#74F5F5", "#0053F7", "#E759DE", "#EA4532", "#F2F851", "#82F349", "#000000"]; + public static MIN_BRIGHTNESS: number = 76; + public static MAX_BRIGHTNESS: number = 255; - public static savePreset(presetNumber: number, effectTypeId: number, color: number, brightness: number, apply: boolean): void - { - GetRoomSession().updateMoodlightData(presetNumber, effectTypeId, color, brightness, apply); - } + public static savePreset(presetNumber: number, effectTypeId: number, color: number, brightness: number, apply: boolean): void { + GetRoomSession().updateMoodlightData(presetNumber, effectTypeId, color, brightness, apply); + } - public static changeState(): void - { - GetRoomSession().toggleMoodlightState(); - } + public static changeState(): void { + GetRoomSession().toggleMoodlightState(); + } - public static previewDimmer(color: number, brightness: number, bgOnly: boolean): void - { - GetRoomEngine().updateObjectRoomColor(GetRoomSession().roomId, color, brightness, bgOnly); - } + public static previewDimmer(color: number, brightness: number, bgOnly: boolean): void { + GetRoomEngine().updateObjectRoomColor(GetRoomSession().roomId, color, brightness, bgOnly); + } - public static scaleBrightness(value: number): number - { - return ~~((((value - this.MIN_BRIGHTNESS) * (100 - 0)) / (this.MAX_BRIGHTNESS - this.MIN_BRIGHTNESS)) + 0); - } + public static scaleBrightness(value: number): number { + return ~~(((value - this.MIN_BRIGHTNESS) * (100 - 0)) / (this.MAX_BRIGHTNESS - this.MIN_BRIGHTNESS) + 0); + } } diff --git a/apps/frontend/src/api/room/widgets/GetDiskColor.ts b/apps/frontend/src/api/room/widgets/GetDiskColor.ts index 989f294..566f291 100644 --- a/apps/frontend/src/api/room/widgets/GetDiskColor.ts +++ b/apps/frontend/src/api/room/widgets/GetDiskColor.ts @@ -5,33 +5,30 @@ const DISK_COLOR_GREEN_RANGE: number = 100; const DISK_COLOR_BLUE_MIN: number = 130; const DISK_COLOR_BLUE_RANGE: number = 100; -export const GetDiskColor = (name: string) => -{ - let r: number = 0; - let g: number = 0; - let b: number = 0; - let index: number = 0; +export const GetDiskColor = (name: string) => { + let r: number = 0; + let g: number = 0; + let b: number = 0; + let index: number = 0; - while (index < name.length) - { - switch ((index % 3)) - { - case 0: - r = (r + ( name.charCodeAt(index) * 37) ); - break; - case 1: - g = (g + ( name.charCodeAt(index) * 37) ); - break; - case 2: - b = (b + ( name.charCodeAt(index) * 37) ); - break; - } - index++; + while (index < name.length) { + switch (index % 3) { + case 0: + r = r + name.charCodeAt(index) * 37; + break; + case 1: + g = g + name.charCodeAt(index) * 37; + break; + case 2: + b = b + name.charCodeAt(index) * 37; + break; } + index++; + } - r = ((r % DISK_COLOR_RED_RANGE) + DISK_COLOR_RED_MIN); - g = ((g % DISK_COLOR_GREEN_RANGE) + DISK_COLOR_GREEN_MIN); - b = ((b % DISK_COLOR_BLUE_RANGE) + DISK_COLOR_BLUE_MIN); + r = (r % DISK_COLOR_RED_RANGE) + DISK_COLOR_RED_MIN; + g = (g % DISK_COLOR_GREEN_RANGE) + DISK_COLOR_GREEN_MIN; + b = (b % DISK_COLOR_BLUE_RANGE) + DISK_COLOR_BLUE_MIN; - return `rgb(${ r },${ g },${ b })`; -} + return `rgb(${r},${g},${b})`; +}; diff --git a/apps/frontend/src/api/room/widgets/IAvatarInfo.ts b/apps/frontend/src/api/room/widgets/IAvatarInfo.ts index 23fb47b..b835246 100644 --- a/apps/frontend/src/api/room/widgets/IAvatarInfo.ts +++ b/apps/frontend/src/api/room/widgets/IAvatarInfo.ts @@ -1,4 +1,3 @@ -export interface IAvatarInfo -{ - type: string; +export interface IAvatarInfo { + type: string; } diff --git a/apps/frontend/src/api/room/widgets/ICraftingIngredient.ts b/apps/frontend/src/api/room/widgets/ICraftingIngredient.ts index cb2b031..fc2d946 100644 --- a/apps/frontend/src/api/room/widgets/ICraftingIngredient.ts +++ b/apps/frontend/src/api/room/widgets/ICraftingIngredient.ts @@ -1,6 +1,5 @@ -export interface ICraftingIngredient -{ - name: string; - iconUrl: string; - count: number; +export interface ICraftingIngredient { + name: string; + iconUrl: string; + count: number; } diff --git a/apps/frontend/src/api/room/widgets/ICraftingRecipe.ts b/apps/frontend/src/api/room/widgets/ICraftingRecipe.ts index dd99291..5883948 100644 --- a/apps/frontend/src/api/room/widgets/ICraftingRecipe.ts +++ b/apps/frontend/src/api/room/widgets/ICraftingRecipe.ts @@ -1,6 +1,5 @@ -export interface ICraftingRecipe -{ - name: string; - localizedName: string; - iconUrl: string; +export interface ICraftingRecipe { + name: string; + localizedName: string; + iconUrl: string; } diff --git a/apps/frontend/src/api/room/widgets/IPhotoData.ts b/apps/frontend/src/api/room/widgets/IPhotoData.ts index 9a7b846..ec04671 100644 --- a/apps/frontend/src/api/room/widgets/IPhotoData.ts +++ b/apps/frontend/src/api/room/widgets/IPhotoData.ts @@ -1,42 +1,41 @@ -export interface IPhotoData -{ - /** - * creator username - */ - n?: string; +export interface IPhotoData { + /** + * creator username + */ + n?: string; - /** - * creator user id - */ - s?: number; + /** + * creator user id + */ + s?: number; - /** - * photo unique id - */ - u?: number; + /** + * photo unique id + */ + u?: number; - /** - * creation timestamp - */ - t?: number; + /** + * creation timestamp + */ + t?: number; - /** - * photo caption - */ - m?: string; + /** + * photo caption + */ + m?: string; - /** - * photo image url - */ - w?: string; + /** + * photo image url + */ + w?: string; - /** - * owner id - */ - oi?: number; + /** + * owner id + */ + oi?: number; - /** - * owner name - */ - o?: string; -} \ No newline at end of file + /** + * owner name + */ + o?: string; +} diff --git a/apps/frontend/src/api/room/widgets/MannequinUtilities.ts b/apps/frontend/src/api/room/widgets/MannequinUtilities.ts index 2d7e9a4..331ea5a 100644 --- a/apps/frontend/src/api/room/widgets/MannequinUtilities.ts +++ b/apps/frontend/src/api/room/widgets/MannequinUtilities.ts @@ -1,39 +1,37 @@ -import { AvatarFigurePartType, IAvatarFigureContainer } from '@nitro/renderer'; -import { GetAvatarRenderManager } from '../../nitro'; +import {AvatarFigurePartType, IAvatarFigureContainer} from "@nitro/renderer"; -export class MannequinUtilities -{ - public static MANNEQUIN_FIGURE = [ 'hd', 99999, [ 99998 ] ]; - public static MANNEQUIN_CLOTHING_PART_TYPES = [ - AvatarFigurePartType.CHEST_ACCESSORY, - AvatarFigurePartType.COAT_CHEST, - AvatarFigurePartType.CHEST, - AvatarFigurePartType.LEGS, - AvatarFigurePartType.SHOES, - AvatarFigurePartType.WAIST_ACCESSORY - ]; +import {GetAvatarRenderManager} from "../../nitro"; - public static getMergedMannequinFigureContainer(figure: string, targetFigure: string): IAvatarFigureContainer - { - const figureContainer = GetAvatarRenderManager().createFigureContainer(figure); - const targetFigureContainer = GetAvatarRenderManager().createFigureContainer(targetFigure); +export class MannequinUtilities { + public static MANNEQUIN_FIGURE = ["hd", 99999, [99998]]; + public static MANNEQUIN_CLOTHING_PART_TYPES = [ + AvatarFigurePartType.CHEST_ACCESSORY, + AvatarFigurePartType.COAT_CHEST, + AvatarFigurePartType.CHEST, + AvatarFigurePartType.LEGS, + AvatarFigurePartType.SHOES, + AvatarFigurePartType.WAIST_ACCESSORY, + ]; - for(const part of this.MANNEQUIN_CLOTHING_PART_TYPES) figureContainer.removePart(part); + public static getMergedMannequinFigureContainer(figure: string, targetFigure: string): IAvatarFigureContainer { + const figureContainer = GetAvatarRenderManager().createFigureContainer(figure); + const targetFigureContainer = GetAvatarRenderManager().createFigureContainer(targetFigure); - for(const part of targetFigureContainer.getPartTypeIds()) figureContainer.updatePart(part, targetFigureContainer.getPartSetId(part), targetFigureContainer.getPartColorIds(part)); + for (const part of this.MANNEQUIN_CLOTHING_PART_TYPES) figureContainer.removePart(part); - return figureContainer; + for (const part of targetFigureContainer.getPartTypeIds()) + figureContainer.updatePart(part, targetFigureContainer.getPartSetId(part), targetFigureContainer.getPartColorIds(part)); + + return figureContainer; + } + + public static transformAsMannequinFigure(figureContainer: IAvatarFigureContainer): void { + for (const part of figureContainer.getPartTypeIds()) { + if (this.MANNEQUIN_CLOTHING_PART_TYPES.indexOf(part) >= 0) continue; + + figureContainer.removePart(part); } - public static transformAsMannequinFigure(figureContainer: IAvatarFigureContainer): void - { - for(const part of figureContainer.getPartTypeIds()) - { - if(this.MANNEQUIN_CLOTHING_PART_TYPES.indexOf(part) >= 0) continue; - - figureContainer.removePart(part); - } - - figureContainer.updatePart((this.MANNEQUIN_FIGURE[0] as string), (this.MANNEQUIN_FIGURE[1] as number), (this.MANNEQUIN_FIGURE[2] as number[])); - }; + figureContainer.updatePart(this.MANNEQUIN_FIGURE[0] as string, this.MANNEQUIN_FIGURE[1] as number, this.MANNEQUIN_FIGURE[2] as number[]); + } } diff --git a/apps/frontend/src/api/room/widgets/PetSupplementEnum.ts b/apps/frontend/src/api/room/widgets/PetSupplementEnum.ts index eb23687..4e14a07 100644 --- a/apps/frontend/src/api/room/widgets/PetSupplementEnum.ts +++ b/apps/frontend/src/api/room/widgets/PetSupplementEnum.ts @@ -1,5 +1,4 @@ -export class PetSupplementEnum -{ - public static WATER: number = 0; - public static LIGHT: number = 1; +export class PetSupplementEnum { + public static WATER: number = 0; + public static LIGHT: number = 1; } diff --git a/apps/frontend/src/api/room/widgets/PostureTypeEnum.ts b/apps/frontend/src/api/room/widgets/PostureTypeEnum.ts index 21352d7..afa8a85 100644 --- a/apps/frontend/src/api/room/widgets/PostureTypeEnum.ts +++ b/apps/frontend/src/api/room/widgets/PostureTypeEnum.ts @@ -1,5 +1,4 @@ -export class PostureTypeEnum -{ - public static POSTURE_STAND: number = 0; - public static POSTURE_SIT: number = 1; +export class PostureTypeEnum { + public static POSTURE_STAND: number = 0; + public static POSTURE_SIT: number = 1; } diff --git a/apps/frontend/src/api/room/widgets/RoomDimmerPreset.ts b/apps/frontend/src/api/room/widgets/RoomDimmerPreset.ts index 86600d5..fc1ada1 100644 --- a/apps/frontend/src/api/room/widgets/RoomDimmerPreset.ts +++ b/apps/frontend/src/api/room/widgets/RoomDimmerPreset.ts @@ -1,35 +1,29 @@ -export class RoomDimmerPreset -{ - private _id: number; - private _type: number; - private _color: number; - private _brightness: number; +export class RoomDimmerPreset { + private _id: number; + private _type: number; + private _color: number; + private _brightness: number; - constructor(id: number, type: number, color: number, brightness: number) - { - this._id = id; - this._type = type; - this._color = color; - this._brightness = brightness; - } + constructor(id: number, type: number, color: number, brightness: number) { + this._id = id; + this._type = type; + this._color = color; + this._brightness = brightness; + } - public get id(): number - { - return this._id; - } + public get id(): number { + return this._id; + } - public get type(): number - { - return this._type; - } + public get type(): number { + return this._type; + } - public get color(): number - { - return this._color; - } + public get color(): number { + return this._color; + } - public get brightness(): number - { - return this._brightness; - } + public get brightness(): number { + return this._brightness; + } } diff --git a/apps/frontend/src/api/room/widgets/RoomObjectItem.ts b/apps/frontend/src/api/room/widgets/RoomObjectItem.ts index f4fb2d6..713b2fc 100644 --- a/apps/frontend/src/api/room/widgets/RoomObjectItem.ts +++ b/apps/frontend/src/api/room/widgets/RoomObjectItem.ts @@ -1,28 +1,23 @@ -export class RoomObjectItem -{ - private _id: number; - private _category: number; - private _name: string; +export class RoomObjectItem { + private _id: number; + private _category: number; + private _name: string; - constructor(id: number, category: number, name: string) - { - this._id = id; - this._category = category; - this._name = name; - } + constructor(id: number, category: number, name: string) { + this._id = id; + this._category = category; + this._name = name; + } - public get id(): number - { - return this._id; - } + public get id(): number { + return this._id; + } - public get category(): number - { - return this._category; - } + public get category(): number { + return this._category; + } - public get name(): string - { - return this._name; - } + public get name(): string { + return this._name; + } } diff --git a/apps/frontend/src/api/room/widgets/UseProductItem.ts b/apps/frontend/src/api/room/widgets/UseProductItem.ts index d3e2088..85b56b7 100644 --- a/apps/frontend/src/api/room/widgets/UseProductItem.ts +++ b/apps/frontend/src/api/room/widgets/UseProductItem.ts @@ -1,12 +1,11 @@ -export class UseProductItem -{ - constructor( - public readonly id: number, - public readonly category: number, - public readonly name: string, - public readonly requestRoomObjectId: number, - public readonly targetRoomObjectId: number, - public readonly requestInventoryStripId: number, - public readonly replace: boolean) - {} +export class UseProductItem { + constructor( + public readonly id: number, + public readonly category: number, + public readonly name: string, + public readonly requestRoomObjectId: number, + public readonly targetRoomObjectId: number, + public readonly requestInventoryStripId: number, + public readonly replace: boolean + ) {} } diff --git a/apps/frontend/src/api/room/widgets/VoteValue.ts b/apps/frontend/src/api/room/widgets/VoteValue.ts index ecf4336..0abf664 100644 --- a/apps/frontend/src/api/room/widgets/VoteValue.ts +++ b/apps/frontend/src/api/room/widgets/VoteValue.ts @@ -1,8 +1,7 @@ -export const VALUE_KEY_DISLIKE = '0'; -export const VALUE_KEY_LIKE = '1'; +export const VALUE_KEY_DISLIKE = "0"; +export const VALUE_KEY_LIKE = "1"; -export interface VoteValue -{ - value: string; - secondsLeft: number; +export interface VoteValue { + value: string; + secondsLeft: number; } diff --git a/apps/frontend/src/api/room/widgets/YoutubeVideoPlaybackStateEnum.ts b/apps/frontend/src/api/room/widgets/YoutubeVideoPlaybackStateEnum.ts index 3a885d1..a4e61e0 100644 --- a/apps/frontend/src/api/room/widgets/YoutubeVideoPlaybackStateEnum.ts +++ b/apps/frontend/src/api/room/widgets/YoutubeVideoPlaybackStateEnum.ts @@ -1,9 +1,8 @@ -export class YoutubeVideoPlaybackStateEnum -{ - public static readonly UNSTARTED = -1; - public static readonly ENDED = 0; - public static readonly PLAYING = 1; - public static readonly PAUSED = 2; - public static readonly BUFFERING = 3; - public static readonly CUED = 5; +export class YoutubeVideoPlaybackStateEnum { + public static readonly UNSTARTED = -1; + public static readonly ENDED = 0; + public static readonly PLAYING = 1; + public static readonly PAUSED = 2; + public static readonly BUFFERING = 3; + public static readonly CUED = 5; } diff --git a/apps/frontend/src/api/room/widgets/index.ts b/apps/frontend/src/api/room/widgets/index.ts index c43d6aa..6f9cf7b 100644 --- a/apps/frontend/src/api/room/widgets/index.ts +++ b/apps/frontend/src/api/room/widgets/index.ts @@ -1,25 +1,25 @@ -export * from './AvatarInfoFurni'; -export * from './AvatarInfoName'; -export * from './AvatarInfoPet'; -export * from './AvatarInfoRentableBot'; -export * from './AvatarInfoUser'; -export * from './AvatarInfoUtilities'; -export * from './BotSkillsEnum'; -export * from './ChatBubbleMessage'; -export * from './ChatMessageTypeEnum'; -export * from './DimmerFurnitureWidgetPresetItem'; -export * from './DoChatsOverlap'; -export * from './FurnitureDimmerUtilities'; -export * from './GetDiskColor'; -export * from './IAvatarInfo'; -export * from './ICraftingIngredient'; -export * from './ICraftingRecipe'; -export * from './IPhotoData'; -export * from './MannequinUtilities'; -export * from './PetSupplementEnum'; -export * from './PostureTypeEnum'; -export * from './RoomDimmerPreset'; -export * from './RoomObjectItem'; -export * from './UseProductItem'; -export * from './VoteValue'; -export * from './YoutubeVideoPlaybackStateEnum'; +export * from "./AvatarInfoFurni"; +export * from "./AvatarInfoName"; +export * from "./AvatarInfoPet"; +export * from "./AvatarInfoRentableBot"; +export * from "./AvatarInfoUser"; +export * from "./AvatarInfoUtilities"; +export * from "./BotSkillsEnum"; +export * from "./ChatBubbleMessage"; +export * from "./ChatMessageTypeEnum"; +export * from "./DimmerFurnitureWidgetPresetItem"; +export * from "./DoChatsOverlap"; +export * from "./FurnitureDimmerUtilities"; +export * from "./GetDiskColor"; +export * from "./IAvatarInfo"; +export * from "./ICraftingIngredient"; +export * from "./ICraftingRecipe"; +export * from "./IPhotoData"; +export * from "./MannequinUtilities"; +export * from "./PetSupplementEnum"; +export * from "./PostureTypeEnum"; +export * from "./RoomDimmerPreset"; +export * from "./RoomObjectItem"; +export * from "./UseProductItem"; +export * from "./VoteValue"; +export * from "./YoutubeVideoPlaybackStateEnum"; diff --git a/apps/frontend/src/api/user/GetUserProfile.ts b/apps/frontend/src/api/user/GetUserProfile.ts index 5a2fe9a..42e7e82 100644 --- a/apps/frontend/src/api/user/GetUserProfile.ts +++ b/apps/frontend/src/api/user/GetUserProfile.ts @@ -1,7 +1,7 @@ -import { UserProfileComposer } from '@nitro/renderer'; -import { SendMessageComposer } from '..'; +import {UserProfileComposer} from "@nitro/renderer"; -export function GetUserProfile(userId: number): void -{ - SendMessageComposer(new UserProfileComposer(userId)); +import {SendMessageComposer} from ".."; + +export function GetUserProfile(userId: number): void { + SendMessageComposer(new UserProfileComposer(userId)); } diff --git a/apps/frontend/src/api/user/index.ts b/apps/frontend/src/api/user/index.ts index 1c609ea..5be4f23 100644 --- a/apps/frontend/src/api/user/index.ts +++ b/apps/frontend/src/api/user/index.ts @@ -1 +1 @@ -export * from './GetUserProfile'; +export * from "./GetUserProfile"; diff --git a/apps/frontend/src/api/utils/CloneObject.ts b/apps/frontend/src/api/utils/CloneObject.ts index 6cd8d3e..e5ac545 100644 --- a/apps/frontend/src/api/utils/CloneObject.ts +++ b/apps/frontend/src/api/utils/CloneObject.ts @@ -1,14 +1,12 @@ -export const CloneObject = (object: T): T => -{ - if((object == null) || ('object' != typeof object)) return object; +export const CloneObject = (object: T): T => { + if (object == null || "object" != typeof object) return object; - // @ts-ignore - const copy = new object.constructor(); + // @ts-ignore + const copy = new object.constructor(); - for(const attr in object) - { - if(object.hasOwnProperty(attr)) copy[attr] = object[attr]; - } + for (const attr in object) { + if (object.hasOwnProperty(attr)) copy[attr] = object[attr]; + } - return copy; -} + return copy; +}; diff --git a/apps/frontend/src/api/utils/ColorUtils.ts b/apps/frontend/src/api/utils/ColorUtils.ts index c32f8fb..c6e2073 100644 --- a/apps/frontend/src/api/utils/ColorUtils.ts +++ b/apps/frontend/src/api/utils/ColorUtils.ts @@ -1,65 +1,57 @@ -export class ColorUtils -{ - public static makeColorHex(color: string): string - { - return ('#' + color); - } +export class ColorUtils { + public static makeColorHex(color: string): string { + return "#" + color; + } - public static makeColorNumberHex(color: number): string - { - let val = color.toString(16); - return ( '#' + val.padStart(6, '0')); - } + public static makeColorNumberHex(color: number): string { + let val = color.toString(16); + return "#" + val.padStart(6, "0"); + } - public static convertFromHex(color: string): number - { - return parseInt(color.replace('#', ''), 16); - } + public static convertFromHex(color: string): number { + return parseInt(color.replace("#", ""), 16); + } - public static uintHexColor(color: number): string - { - const realColor = color >>>0; + public static uintHexColor(color: number): string { + const realColor = color >>> 0; - return ColorUtils.makeColorHex(realColor.toString(16).substring(2)); - } + return ColorUtils.makeColorHex(realColor.toString(16).substring(2)); + } - /** - * Converts an integer format into an array of 8-bit values - * @param {number} value value in integer format - * @returns {Array} 8-bit values - */ - public static int_to_8BitVals(value: number): [number, number, number, number] - { - const val1 = ((value >> 24) & 0xFF) - const val2 = ((value >> 16) & 0xFF); - const val3 = ((value >> 8) & 0xFF); - const val4 = (value & 0xFF); + /** + * Converts an integer format into an array of 8-bit values + * @param {number} value value in integer format + * @returns {Array} 8-bit values + */ + public static int_to_8BitVals(value: number): [number, number, number, number] { + const val1 = (value >> 24) & 0xff; + const val2 = (value >> 16) & 0xff; + const val3 = (value >> 8) & 0xff; + const val4 = value & 0xff; - return [ val1, val2, val3, val4 ]; - } + return [val1, val2, val3, val4]; + } - /** - * Combines 4 8-bit values into a 32-bit integer. Values are combined in - * in the order of the parameters - * @param val1 - * @param val2 - * @param val3 - * @param val4 - * @returns 32-bit integer of combined values - */ - public static eight_bitVals_to_int(val1: number, val2: number, val3: number, val4: number): number - { - return (((val1) << 24) + ((val2) << 16) + ((val3) << 8) + (val4| 0)); - } + /** + * Combines 4 8-bit values into a 32-bit integer. Values are combined in + * in the order of the parameters + * @param val1 + * @param val2 + * @param val3 + * @param val4 + * @returns 32-bit integer of combined values + */ + public static eight_bitVals_to_int(val1: number, val2: number, val3: number, val4: number): number { + return (val1 << 24) + (val2 << 16) + (val3 << 8) + (val4 | 0); + } - public static int2rgb(color: number): string - { - color >>>= 0; - const b = color & 0xFF; - const g = (color & 0xFF00) >>> 8; - const r = (color & 0xFF0000) >>> 16; - const a = ((color & 0xFF000000) >>> 24) / 255; + public static int2rgb(color: number): string { + color >>>= 0; + const b = color & 0xff; + const g = (color & 0xff00) >>> 8; + const r = (color & 0xff0000) >>> 16; + const a = ((color & 0xff000000) >>> 24) / 255; - return 'rgba(' + [ r, g, b, 1 ].join(',') + ')'; - } + return "rgba(" + [r, g, b, 1].join(",") + ")"; + } } diff --git a/apps/frontend/src/api/utils/ConvertSeconds.ts b/apps/frontend/src/api/utils/ConvertSeconds.ts index f559dea..f39dc8a 100644 --- a/apps/frontend/src/api/utils/ConvertSeconds.ts +++ b/apps/frontend/src/api/utils/ConvertSeconds.ts @@ -1,9 +1,16 @@ -export const ConvertSeconds = (seconds: number) => -{ - let numDays = Math.floor(seconds / 86400); - let numHours = Math.floor((seconds % 86400) / 3600); - let numMinutes = Math.floor(((seconds % 86400) % 3600) / 60); - let numSeconds = ((seconds % 86400) % 3600) % 60; +export const ConvertSeconds = (seconds: number) => { + let numDays = Math.floor(seconds / 86400); + let numHours = Math.floor((seconds % 86400) / 3600); + let numMinutes = Math.floor(((seconds % 86400) % 3600) / 60); + let numSeconds = ((seconds % 86400) % 3600) % 60; - return numDays.toString().padStart(2, '0') + ':' + numHours.toString().padStart(2, '0') + ':' + numMinutes.toString().padStart(2, '0') + ':' + numSeconds.toString().padStart(2, '0'); -} + return ( + numDays.toString().padStart(2, "0") + + ":" + + numHours.toString().padStart(2, "0") + + ":" + + numMinutes.toString().padStart(2, "0") + + ":" + + numSeconds.toString().padStart(2, "0") + ); +}; diff --git a/apps/frontend/src/api/utils/GetLocalStorage.ts b/apps/frontend/src/api/utils/GetLocalStorage.ts index 769df6d..c528dd0 100644 --- a/apps/frontend/src/api/utils/GetLocalStorage.ts +++ b/apps/frontend/src/api/utils/GetLocalStorage.ts @@ -1,11 +1,7 @@ -export const GetLocalStorage = (key: string) => -{ - try - { - JSON.parse(window.localStorage.getItem(key)) as T ?? null - } - catch(e) - { - return null; - } -} +export const GetLocalStorage = (key: string) => { + try { + (JSON.parse(window.localStorage.getItem(key)) as T) ?? null; + } catch (e) { + return null; + } +}; diff --git a/apps/frontend/src/api/utils/LocalStorageKeys.ts b/apps/frontend/src/api/utils/LocalStorageKeys.ts index 6c92279..435d5b8 100644 --- a/apps/frontend/src/api/utils/LocalStorageKeys.ts +++ b/apps/frontend/src/api/utils/LocalStorageKeys.ts @@ -1,5 +1,4 @@ -export class LocalStorageKeys -{ - public static CATALOG_PLACE_MULTIPLE_OBJECTS: string = 'catalogPlaceMultipleObjects'; - public static CATALOG_SKIP_PURCHASE_CONFIRMATION: string = 'catalogSkipPurchaseConfirmation'; +export class LocalStorageKeys { + public static CATALOG_PLACE_MULTIPLE_OBJECTS: string = "catalogPlaceMultipleObjects"; + public static CATALOG_SKIP_PURCHASE_CONFIRMATION: string = "catalogSkipPurchaseConfirmation"; } diff --git a/apps/frontend/src/api/utils/LocalizeBadgeDescription.ts b/apps/frontend/src/api/utils/LocalizeBadgeDescription.ts index 04fd7df..5fc00a3 100644 --- a/apps/frontend/src/api/utils/LocalizeBadgeDescription.ts +++ b/apps/frontend/src/api/utils/LocalizeBadgeDescription.ts @@ -1,10 +1,9 @@ -import { GetNitroInstance } from '..'; +import {GetNitroInstance} from ".."; -export const LocalizeBadgeDescription = (key: string) => -{ - let badgeDesc = GetNitroInstance().localization.getBadgeDesc(key); +export const LocalizeBadgeDescription = (key: string) => { + let badgeDesc = GetNitroInstance().localization.getBadgeDesc(key); - if(!badgeDesc || !badgeDesc.length) badgeDesc = `badge_desc_${ key }`; + if (!badgeDesc || !badgeDesc.length) badgeDesc = `badge_desc_${key}`; - return badgeDesc; -} + return badgeDesc; +}; diff --git a/apps/frontend/src/api/utils/LocalizeBageName.ts b/apps/frontend/src/api/utils/LocalizeBageName.ts index d722ab0..0b796c3 100644 --- a/apps/frontend/src/api/utils/LocalizeBageName.ts +++ b/apps/frontend/src/api/utils/LocalizeBageName.ts @@ -1,10 +1,9 @@ -import { GetNitroInstance } from '..'; +import {GetNitroInstance} from ".."; -export const LocalizeBadgeName = (key: string) => -{ - let badgeName = GetNitroInstance().localization.getBadgeName(key); +export const LocalizeBadgeName = (key: string) => { + let badgeName = GetNitroInstance().localization.getBadgeName(key); - if(!badgeName || !badgeName.length) badgeName = `badge_name_${ key }`; + if (!badgeName || !badgeName.length) badgeName = `badge_name_${key}`; - return badgeName; -} + return badgeName; +}; diff --git a/apps/frontend/src/api/utils/LocalizeFormattedNumber.ts b/apps/frontend/src/api/utils/LocalizeFormattedNumber.ts index fab30d4..704a221 100644 --- a/apps/frontend/src/api/utils/LocalizeFormattedNumber.ts +++ b/apps/frontend/src/api/utils/LocalizeFormattedNumber.ts @@ -1,6 +1,5 @@ -export function LocalizeFormattedNumber(number: number): string -{ - if(!number || isNaN(number)) return '0'; +export function LocalizeFormattedNumber(number: number): string { + if (!number || isNaN(number)) return "0"; - return number.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ' '); -}; + return number.toString().replace(/\B(?=(\d{3})+(?!\d))/g, " "); +} diff --git a/apps/frontend/src/api/utils/LocalizeShortNumber.ts b/apps/frontend/src/api/utils/LocalizeShortNumber.ts index 30975ec..052e5ab 100644 --- a/apps/frontend/src/api/utils/LocalizeShortNumber.ts +++ b/apps/frontend/src/api/utils/LocalizeShortNumber.ts @@ -1,36 +1,33 @@ -export function LocalizeShortNumber(number: number): string -{ - if(!number || isNaN(number)) return '0'; +export function LocalizeShortNumber(number: number): string { + if (!number || isNaN(number)) return "0"; - let abs = Math.abs(number); + let abs = Math.abs(number); - const rounder = Math.pow(10, 1); - const isNegative = (number < 0); + const rounder = Math.pow(10, 1); + const isNegative = number < 0; - let key = ''; + let key = ""; - const powers = [ - { key: 'Q', value: Math.pow(10, 15) }, - { key: 'T', value: Math.pow(10, 12) }, - { key: 'B', value: Math.pow(10, 9) }, - { key: 'M', value: Math.pow(10, 6) }, - { key: 'K', value: 1000 } - ]; + const powers = [ + {key: "Q", value: Math.pow(10, 15)}, + {key: "T", value: Math.pow(10, 12)}, + {key: "B", value: Math.pow(10, 9)}, + {key: "M", value: Math.pow(10, 6)}, + {key: "K", value: 1000}, + ]; - for(const power of powers) - { - let reduced = abs / power.value; + for (const power of powers) { + let reduced = abs / power.value; - reduced = Math.round(reduced * rounder) / rounder; + reduced = Math.round(reduced * rounder) / rounder; - if(reduced >= 1) - { - abs = reduced; - key = power.key; + if (reduced >= 1) { + abs = reduced; + key = power.key; - break; - } + break; } + } - return ((isNegative ? '-' : '') + abs + key); + return (isNegative ? "-" : "") + abs + key; } diff --git a/apps/frontend/src/api/utils/LocalizeText.ts b/apps/frontend/src/api/utils/LocalizeText.ts index cf34a1f..86226c2 100644 --- a/apps/frontend/src/api/utils/LocalizeText.ts +++ b/apps/frontend/src/api/utils/LocalizeText.ts @@ -1,6 +1,5 @@ -import { GetNitroInstance } from '..'; +import {GetNitroInstance} from ".."; -export function LocalizeText(key: string, parameters: string[] = null, replacements: string[] = null): string -{ - return GetNitroInstance().getLocalizationWithParameters(key, parameters, replacements); +export function LocalizeText(key: string, parameters: string[] = null, replacements: string[] = null): string { + return GetNitroInstance().getLocalizationWithParameters(key, parameters, replacements); } diff --git a/apps/frontend/src/api/utils/PlaySound.ts b/apps/frontend/src/api/utils/PlaySound.ts index 314bcac..d4affba 100644 --- a/apps/frontend/src/api/utils/PlaySound.ts +++ b/apps/frontend/src/api/utils/PlaySound.ts @@ -1,24 +1,23 @@ -import { MouseEventType, NitroSoundEvent } from '@nitro/renderer'; -import { DispatchMainEvent } from '../events'; +import {MouseEventType, NitroSoundEvent} from "@nitro/renderer"; + +import {DispatchMainEvent} from "../events"; let canPlaySound = false; -export const PlaySound = (sampleCode: string) => -{ - if(!canPlaySound) return; +export const PlaySound = (sampleCode: string) => { + if (!canPlaySound) return; - DispatchMainEvent(new NitroSoundEvent(NitroSoundEvent.PLAY_SOUND, sampleCode)); -} + DispatchMainEvent(new NitroSoundEvent(NitroSoundEvent.PLAY_SOUND, sampleCode)); +}; -const eventTypes = [ MouseEventType.MOUSE_CLICK ]; +const eventTypes = [MouseEventType.MOUSE_CLICK]; -const startListening = () => -{ - const stopListening = () => eventTypes.forEach(type => window.removeEventListener(type, onEvent)); +const startListening = () => { + const stopListening = () => eventTypes.forEach(type => window.removeEventListener(type, onEvent)); - const onEvent = (event: Event) => ((canPlaySound = true) && stopListening()); + const onEvent = (event: Event) => (canPlaySound = true) && stopListening(); - eventTypes.forEach(type => window.addEventListener(type, onEvent)); -} + eventTypes.forEach(type => window.addEventListener(type, onEvent)); +}; startListening(); diff --git a/apps/frontend/src/api/utils/ProductImageUtility.ts b/apps/frontend/src/api/utils/ProductImageUtility.ts index 22db976..ed1b138 100644 --- a/apps/frontend/src/api/utils/ProductImageUtility.ts +++ b/apps/frontend/src/api/utils/ProductImageUtility.ts @@ -1,59 +1,51 @@ -import { CatalogPageMessageProductData } from '@nitro/renderer'; -import { FurniCategory } from '../inventory'; -import { GetRoomEngine } from '../nitro'; +import {CatalogPageMessageProductData} from "@nitro/renderer"; -export class ProductImageUtility -{ - public static getProductImageUrl(productType: string, furniClassId: number, extraParam: string): string - { - let imageUrl: string = null; +import {FurniCategory} from "../inventory"; +import {GetRoomEngine} from "../nitro"; - switch(productType) - { - case CatalogPageMessageProductData.S: - imageUrl = GetRoomEngine().getFurnitureFloorIconUrl(furniClassId); - break; - case CatalogPageMessageProductData.I: - const productCategory = this.getProductCategory(CatalogPageMessageProductData.I, furniClassId); +export class ProductImageUtility { + public static getProductImageUrl(productType: string, furniClassId: number, extraParam: string): string { + let imageUrl: string = null; - if(productCategory === 1) - { - imageUrl = GetRoomEngine().getFurnitureWallIconUrl(furniClassId, extraParam); - } - else - { - switch(productCategory) - { - case FurniCategory.WALL_PAPER: - break; - case FurniCategory.LANDSCAPE: - break; - case FurniCategory.FLOOR: - break; - } - } - break; - case CatalogPageMessageProductData.E: - // fx_icon_furniClassId_png - break; + switch (productType) { + case CatalogPageMessageProductData.S: + imageUrl = GetRoomEngine().getFurnitureFloorIconUrl(furniClassId); + break; + case CatalogPageMessageProductData.I: + const productCategory = this.getProductCategory(CatalogPageMessageProductData.I, furniClassId); + + if (productCategory === 1) { + imageUrl = GetRoomEngine().getFurnitureWallIconUrl(furniClassId, extraParam); + } else { + switch (productCategory) { + case FurniCategory.WALL_PAPER: + break; + case FurniCategory.LANDSCAPE: + break; + case FurniCategory.FLOOR: + break; + } } - - return imageUrl; + break; + case CatalogPageMessageProductData.E: + // fx_icon_furniClassId_png + break; } - public static getProductCategory(productType: string, furniClassId: number): number - { - if(productType === CatalogPageMessageProductData.S) return 1; + return imageUrl; + } - if(productType === CatalogPageMessageProductData.I) - { - if(furniClassId === 3001) return FurniCategory.WALL_PAPER; + public static getProductCategory(productType: string, furniClassId: number): number { + if (productType === CatalogPageMessageProductData.S) return 1; - if(furniClassId === 3002) return FurniCategory.FLOOR; + if (productType === CatalogPageMessageProductData.I) { + if (furniClassId === 3001) return FurniCategory.WALL_PAPER; - if(furniClassId === 4057) return FurniCategory.LANDSCAPE; - } + if (furniClassId === 3002) return FurniCategory.FLOOR; - return 1; + if (furniClassId === 4057) return FurniCategory.LANDSCAPE; } + + return 1; + } } diff --git a/apps/frontend/src/api/utils/Randomizer.ts b/apps/frontend/src/api/utils/Randomizer.ts index 1f67a12..99ed607 100644 --- a/apps/frontend/src/api/utils/Randomizer.ts +++ b/apps/frontend/src/api/utils/Randomizer.ts @@ -1,28 +1,23 @@ -export class Randomizer -{ - public static getRandomNumber(count: number): number - { - return Math.floor(Math.random() * count); +export class Randomizer { + public static getRandomNumber(count: number): number { + return Math.floor(Math.random() * count); + } + + public static getRandomElement(elements: T[]): T { + return elements[this.getRandomNumber(elements.length)]; + } + + public static getRandomElements(elements: T[], count: number): T[] { + const result: T[] = new Array(count); + let len = elements.length; + const taken = new Array(len); + + while (count--) { + var x = this.getRandomNumber(len); + result[count] = elements[x in taken ? taken[x] : x]; + taken[x] = --len in taken ? taken[len] : len; } - public static getRandomElement(elements: T[]): T - { - return elements[this.getRandomNumber(elements.length)]; - } - - public static getRandomElements(elements: T[], count: number): T[] - { - const result: T[] = new Array(count); - let len = elements.length; - const taken = new Array(len); - - while(count--) - { - var x = this.getRandomNumber(len); - result[count] = elements[x in taken ? taken[x] : x]; - taken[x] = --len in taken ? taken[len] : len; - } - - return result; - } + return result; + } } diff --git a/apps/frontend/src/api/utils/RoomChatFormatter.ts b/apps/frontend/src/api/utils/RoomChatFormatter.ts index a24cdf5..81b2100 100644 --- a/apps/frontend/src/api/utils/RoomChatFormatter.ts +++ b/apps/frontend/src/api/utils/RoomChatFormatter.ts @@ -1,75 +1,64 @@ const allowedColours: Map = new Map(); -allowedColours.set('r', 'red'); -allowedColours.set('b', 'blue'); -allowedColours.set('g', 'green'); -allowedColours.set('y', 'yellow'); -allowedColours.set('w', 'white'); -allowedColours.set('o', 'orange'); -allowedColours.set('c', 'cyan'); -allowedColours.set('br', 'brown'); -allowedColours.set('pr', 'purple'); -allowedColours.set('pk', 'pink'); +allowedColours.set("r", "red"); +allowedColours.set("b", "blue"); +allowedColours.set("g", "green"); +allowedColours.set("y", "yellow"); +allowedColours.set("w", "white"); +allowedColours.set("o", "orange"); +allowedColours.set("c", "cyan"); +allowedColours.set("br", "brown"); +allowedColours.set("pr", "purple"); +allowedColours.set("pk", "pink"); -allowedColours.set('red', 'red'); -allowedColours.set('blue', 'blue'); -allowedColours.set('green', 'green'); -allowedColours.set('yellow', 'yellow'); -allowedColours.set('white', 'white'); -allowedColours.set('orange', 'orange'); -allowedColours.set('cyan', 'cyan'); -allowedColours.set('brown', 'brown'); -allowedColours.set('purple', 'purple'); -allowedColours.set('pink', 'pink'); +allowedColours.set("red", "red"); +allowedColours.set("blue", "blue"); +allowedColours.set("green", "green"); +allowedColours.set("yellow", "yellow"); +allowedColours.set("white", "white"); +allowedColours.set("orange", "orange"); +allowedColours.set("cyan", "cyan"); +allowedColours.set("brown", "brown"); +allowedColours.set("purple", "purple"); +allowedColours.set("pink", "pink"); -const encodeHTML = (str: string) => -{ - return str.replace(/([\u00A0-\u9999<>&])(.|$)/g, (full, char, next) => - { - if(char !== '&' || next !== '#') - { - if(/[\u00A0-\u9999<>&]/.test(next)) next = '&#' + next.charCodeAt(0) + ';'; +const encodeHTML = (str: string) => { + return str.replace(/([\u00A0-\u9999<>&])(.|$)/g, (full, char, next) => { + if (char !== "&" || next !== "#") { + if (/[\u00A0-\u9999<>&]/.test(next)) next = "&#" + next.charCodeAt(0) + ";"; - return '&#' + char.charCodeAt(0) + ';' + next; - } - - return full; - }); -} - -export const RoomChatFormatter = (content: string) => -{ - let result = ''; - - content = encodeHTML(content); - //content = (joypixels.shortnameToUnicode(content) as string) - - if(content.startsWith('@') && content.indexOf('@', 1) > -1) - { - let match = null; - - while((match = /@[a-zA-Z]+@/g.exec(content)) !== null) - { - const colorTag = match[0].toString(); - const colorName = colorTag.substr(1, colorTag.length - 2); - const text = content.replace(colorTag, ''); - - if(!allowedColours.has(colorName)) - { - result = text; - } - else - { - const color = allowedColours.get(colorName); - result = '' + text + ''; - } - break; - } - } - else - { - result = content; + return "&#" + char.charCodeAt(0) + ";" + next; } - return result; -} + return full; + }); +}; + +export const RoomChatFormatter = (content: string) => { + let result = ""; + + content = encodeHTML(content); + //content = (joypixels.shortnameToUnicode(content) as string) + + if (content.startsWith("@") && content.indexOf("@", 1) > -1) { + let match = null; + + while ((match = /@[a-zA-Z]+@/g.exec(content)) !== null) { + const colorTag = match[0].toString(); + const colorName = colorTag.substr(1, colorTag.length - 2); + const text = content.replace(colorTag, ""); + + if (!allowedColours.has(colorName)) { + result = text; + } else { + const color = allowedColours.get(colorName); + result = '' + text + ""; + } + break; + } + } else { + result = content; + } + + return result; +}; diff --git a/apps/frontend/src/api/utils/SoundNames.ts b/apps/frontend/src/api/utils/SoundNames.ts index 4459651..2725c44 100644 --- a/apps/frontend/src/api/utils/SoundNames.ts +++ b/apps/frontend/src/api/utils/SoundNames.ts @@ -1,9 +1,8 @@ -export class SoundNames -{ - public static CAMERA_SHUTTER = 'camera_shutter'; - public static CREDITS = 'credits'; - public static DUCKETS = 'duckets'; - public static MESSENGER_NEW_THREAD = 'messenger_new_thread'; - public static MESSENGER_MESSAGE_RECEIVED = 'messenger_message_received'; - public static MODTOOLS_NEW_TICKET = 'modtools_new_ticket'; +export class SoundNames { + public static CAMERA_SHUTTER = "camera_shutter"; + public static CREDITS = "credits"; + public static DUCKETS = "duckets"; + public static MESSENGER_NEW_THREAD = "messenger_new_thread"; + public static MESSENGER_MESSAGE_RECEIVED = "messenger_message_received"; + public static MODTOOLS_NEW_TICKET = "modtools_new_ticket"; } diff --git a/apps/frontend/src/api/utils/WindowSaveOptions.ts b/apps/frontend/src/api/utils/WindowSaveOptions.ts index 9aa8456..6a3e7b4 100644 --- a/apps/frontend/src/api/utils/WindowSaveOptions.ts +++ b/apps/frontend/src/api/utils/WindowSaveOptions.ts @@ -1,5 +1,4 @@ -export interface WindowSaveOptions -{ - offset: { x: number, y: number }; - size: { width: number, height: number }; +export interface WindowSaveOptions { + offset: {x: number; y: number}; + size: {width: number; height: number}; } diff --git a/apps/frontend/src/api/utils/index.ts b/apps/frontend/src/api/utils/index.ts index 0c51fc4..d2f1a67 100644 --- a/apps/frontend/src/api/utils/index.ts +++ b/apps/frontend/src/api/utils/index.ts @@ -1,17 +1,17 @@ -export * from './CloneObject'; -export * from './ColorUtils'; -export * from './ConvertSeconds'; -export * from './GetLocalStorage'; -export * from './LocalizeBadgeDescription'; -export * from './LocalizeBageName'; -export * from './LocalizeFormattedNumber'; -export * from './LocalizeShortNumber'; -export * from './LocalizeText'; -export * from './LocalStorageKeys'; -export * from './PlaySound'; -export * from './ProductImageUtility'; -export * from './Randomizer'; -export * from './RoomChatFormatter'; -export * from './SetLocalStorage'; -export * from './SoundNames'; -export * from './WindowSaveOptions'; +export * from "./CloneObject"; +export * from "./ColorUtils"; +export * from "./ConvertSeconds"; +export * from "./GetLocalStorage"; +export * from "./LocalizeBadgeDescription"; +export * from "./LocalizeBageName"; +export * from "./LocalizeFormattedNumber"; +export * from "./LocalizeShortNumber"; +export * from "./LocalizeText"; +export * from "./LocalStorageKeys"; +export * from "./PlaySound"; +export * from "./ProductImageUtility"; +export * from "./Randomizer"; +export * from "./RoomChatFormatter"; +export * from "./SetLocalStorage"; +export * from "./SoundNames"; +export * from "./WindowSaveOptions"; diff --git a/apps/frontend/src/api/wired/GetWiredTimeLocale.ts b/apps/frontend/src/api/wired/GetWiredTimeLocale.ts index 49025fe..f07a8e6 100644 --- a/apps/frontend/src/api/wired/GetWiredTimeLocale.ts +++ b/apps/frontend/src/api/wired/GetWiredTimeLocale.ts @@ -1,8 +1,7 @@ -export const GetWiredTimeLocale = (value: number) => -{ - const time = Math.floor((value / 2)); +export const GetWiredTimeLocale = (value: number) => { + const time = Math.floor(value / 2); - if(!(value % 2)) return time.toString(); + if (!(value % 2)) return time.toString(); - return (time + 0.5).toString(); -} + return (time + 0.5).toString(); +}; diff --git a/apps/frontend/src/api/wired/WiredActionLayoutCode.ts b/apps/frontend/src/api/wired/WiredActionLayoutCode.ts index 5282dc5..1d663ba 100644 --- a/apps/frontend/src/api/wired/WiredActionLayoutCode.ts +++ b/apps/frontend/src/api/wired/WiredActionLayoutCode.ts @@ -1,29 +1,28 @@ -export class WiredActionLayoutCode -{ - public static TOGGLE_FURNI_STATE: number = 0; - public static RESET: number = 1; - public static SET_FURNI_STATE: number = 3; - public static MOVE_FURNI: number = 4; - public static GIVE_SCORE: number = 6; - public static CHAT: number = 7; - public static TELEPORT: number = 8; - public static JOIN_TEAM: number = 9; - public static LEAVE_TEAM: number = 10; - public static CHASE: number = 11; - public static FLEE: number = 12; - public static MOVE_AND_ROTATE_FURNI: number = 13; - public static GIVE_SCORE_TO_PREDEFINED_TEAM: number = 14; - public static TOGGLE_TO_RANDOM_STATE: number = 15; - public static MOVE_FURNI_TO: number = 16; - public static GIVE_REWARD: number = 17; - public static CALL_ANOTHER_STACK: number = 18; - public static KICK_FROM_ROOM: number = 19; - public static MUTE_USER: number = 20; - public static BOT_TELEPORT: number = 21; - public static BOT_MOVE: number = 22; - public static BOT_TALK: number = 23; - public static BOT_GIVE_HAND_ITEM: number = 24; - public static BOT_FOLLOW_AVATAR: number = 25; - public static BOT_CHANGE_FIGURE: number = 26; - public static BOT_TALK_DIRECT_TO_AVTR: number = 27; +export class WiredActionLayoutCode { + public static TOGGLE_FURNI_STATE: number = 0; + public static RESET: number = 1; + public static SET_FURNI_STATE: number = 3; + public static MOVE_FURNI: number = 4; + public static GIVE_SCORE: number = 6; + public static CHAT: number = 7; + public static TELEPORT: number = 8; + public static JOIN_TEAM: number = 9; + public static LEAVE_TEAM: number = 10; + public static CHASE: number = 11; + public static FLEE: number = 12; + public static MOVE_AND_ROTATE_FURNI: number = 13; + public static GIVE_SCORE_TO_PREDEFINED_TEAM: number = 14; + public static TOGGLE_TO_RANDOM_STATE: number = 15; + public static MOVE_FURNI_TO: number = 16; + public static GIVE_REWARD: number = 17; + public static CALL_ANOTHER_STACK: number = 18; + public static KICK_FROM_ROOM: number = 19; + public static MUTE_USER: number = 20; + public static BOT_TELEPORT: number = 21; + public static BOT_MOVE: number = 22; + public static BOT_TALK: number = 23; + public static BOT_GIVE_HAND_ITEM: number = 24; + public static BOT_FOLLOW_AVATAR: number = 25; + public static BOT_CHANGE_FIGURE: number = 26; + public static BOT_TALK_DIRECT_TO_AVTR: number = 27; } diff --git a/apps/frontend/src/api/wired/WiredConditionLayoutCode.ts b/apps/frontend/src/api/wired/WiredConditionLayoutCode.ts index 58cae5d..09eb4cc 100644 --- a/apps/frontend/src/api/wired/WiredConditionLayoutCode.ts +++ b/apps/frontend/src/api/wired/WiredConditionLayoutCode.ts @@ -1,29 +1,28 @@ -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; +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; } diff --git a/apps/frontend/src/api/wired/WiredDateToString.ts b/apps/frontend/src/api/wired/WiredDateToString.ts index 825adc8..73ddd0f 100644 --- a/apps/frontend/src/api/wired/WiredDateToString.ts +++ b/apps/frontend/src/api/wired/WiredDateToString.ts @@ -1 +1,4 @@ -export const WiredDateToString = (date: Date) => `${ date.getFullYear() }/${ ('0' + (date.getMonth() + 1)).slice(-2) }/${ ('0' + date.getDate()).slice(-2) } ${ ('0' + date.getHours()).slice(-2) }:${ ('0' + date.getMinutes()).slice(-2) }`; +export const WiredDateToString = (date: Date) => + `${date.getFullYear()}/${("0" + (date.getMonth() + 1)).slice(-2)}/${("0" + date.getDate()).slice(-2)} ${("0" + date.getHours()).slice(-2)}:${( + "0" + date.getMinutes() + ).slice(-2)}`; diff --git a/apps/frontend/src/api/wired/WiredFurniType.ts b/apps/frontend/src/api/wired/WiredFurniType.ts index 447e970..ef0d2dc 100644 --- a/apps/frontend/src/api/wired/WiredFurniType.ts +++ b/apps/frontend/src/api/wired/WiredFurniType.ts @@ -1,7 +1,6 @@ -export class WiredFurniType -{ - public static STUFF_SELECTION_OPTION_NONE: number = 0; - public static STUFF_SELECTION_OPTION_BY_ID: number = 1; - public static STUFF_SELECTION_OPTION_BY_ID_OR_BY_TYPE: number = 2; - public static STUFF_SELECTION_OPTION_BY_ID_BY_TYPE_OR_FROM_CONTEXT: number = 3; +export class WiredFurniType { + public static STUFF_SELECTION_OPTION_NONE: number = 0; + public static STUFF_SELECTION_OPTION_BY_ID: number = 1; + public static STUFF_SELECTION_OPTION_BY_ID_OR_BY_TYPE: number = 2; + public static STUFF_SELECTION_OPTION_BY_ID_BY_TYPE_OR_FROM_CONTEXT: number = 3; } diff --git a/apps/frontend/src/api/wired/WiredSelectionFilter.ts b/apps/frontend/src/api/wired/WiredSelectionFilter.ts index 0c338bc..4f97b3e 100644 --- a/apps/frontend/src/api/wired/WiredSelectionFilter.ts +++ b/apps/frontend/src/api/wired/WiredSelectionFilter.ts @@ -1,4 +1,4 @@ -import { ColorConverter, NitroFilter } from '@nitro/renderer'; +import {ColorConverter, NitroFilter} from "@nitro/renderer"; const vertex = ` attribute vec2 aVertexPosition; @@ -28,68 +28,56 @@ void main(void) { } }`; -export class WiredSelectionFilter extends NitroFilter -{ - private _lineColor: number; - private _color: number; +export class WiredSelectionFilter extends NitroFilter { + private _lineColor: number; + private _color: number; - constructor(lineColor: number | number[], color: number | number[]) - { - super(vertex, fragment); + constructor(lineColor: number | number[], color: number | number[]) { + super(vertex, fragment); - this.uniforms.lineColor = new Float32Array(3); - this.uniforms.color = new Float32Array(3); - this.lineColor = lineColor; - this.color = color; + this.uniforms.lineColor = new Float32Array(3); + this.uniforms.color = new Float32Array(3); + this.lineColor = lineColor; + this.color = color; + } + + public get lineColor(): number | number[] { + return this._lineColor; + } + + public set lineColor(value: number | number[]) { + const arr = this.uniforms.lineColor; + + if (typeof value === "number") { + ColorConverter.hex2rgb(value, arr); + + this._lineColor = value; + } else { + arr[0] = value[0]; + arr[1] = value[1]; + arr[2] = value[2]; + + this._lineColor = ColorConverter.rgb2hex(arr); } + } - public get lineColor(): number | number[] - { - return this._lineColor; - } - - public set lineColor(value: number | number[]) - { - const arr = this.uniforms.lineColor; - - if(typeof value === 'number') - { - ColorConverter.hex2rgb(value, arr); - - this._lineColor = value; - } - else - { - arr[0] = value[0]; - arr[1] = value[1]; - arr[2] = value[2]; - - this._lineColor = ColorConverter.rgb2hex(arr); - } - } - - public get color(): number | number[] - { - return this._color; - } - - public set color(value: number | number[]) - { - const arr = this.uniforms.color; - - if(typeof value === 'number') - { - ColorConverter.hex2rgb(value, arr); - - this._color = value; - } - else - { - arr[0] = value[0]; - arr[1] = value[1]; - arr[2] = value[2]; - - this._color = ColorConverter.rgb2hex(arr); - } + public get color(): number | number[] { + return this._color; + } + + public set color(value: number | number[]) { + const arr = this.uniforms.color; + + if (typeof value === "number") { + ColorConverter.hex2rgb(value, arr); + + this._color = value; + } else { + arr[0] = value[0]; + arr[1] = value[1]; + arr[2] = value[2]; + + this._color = ColorConverter.rgb2hex(arr); } + } } diff --git a/apps/frontend/src/api/wired/WiredSelectionVisualizer.ts b/apps/frontend/src/api/wired/WiredSelectionVisualizer.ts index 2712ffd..8665e4e 100644 --- a/apps/frontend/src/api/wired/WiredSelectionVisualizer.ts +++ b/apps/frontend/src/api/wired/WiredSelectionVisualizer.ts @@ -1,68 +1,58 @@ -import { IRoomObject, IRoomObjectSpriteVisualization, NitroFilter, RoomObjectCategory } from '@nitro/renderer'; -import { WiredSelectionFilter } from '.'; -import { GetRoomEngine } from '..'; +import {IRoomObject, IRoomObjectSpriteVisualization, NitroFilter, RoomObjectCategory} from "@nitro/renderer"; -export class WiredSelectionVisualizer -{ - private static _selectionShader: NitroFilter = new WiredSelectionFilter([ 1, 1, 1 ], [ 0.6, 0.6, 0.6 ]); +import {WiredSelectionFilter} from "."; +import {GetRoomEngine} from ".."; - public static show(furniId: number): void - { - WiredSelectionVisualizer.applySelectionShader(WiredSelectionVisualizer.getRoomObject(furniId)); +export class WiredSelectionVisualizer { + private static _selectionShader: NitroFilter = new WiredSelectionFilter([1, 1, 1], [0.6, 0.6, 0.6]); + + public static show(furniId: number): void { + WiredSelectionVisualizer.applySelectionShader(WiredSelectionVisualizer.getRoomObject(furniId)); + } + + public static hide(furniId: number): void { + WiredSelectionVisualizer.clearSelectionShader(WiredSelectionVisualizer.getRoomObject(furniId)); + } + + public static clearSelectionShaderFromFurni(furniIds: number[]): void { + for (const furniId of furniIds) { + WiredSelectionVisualizer.clearSelectionShader(WiredSelectionVisualizer.getRoomObject(furniId)); } + } - public static hide(furniId: number): void - { - WiredSelectionVisualizer.clearSelectionShader(WiredSelectionVisualizer.getRoomObject(furniId)); + public static applySelectionShaderToFurni(furniIds: number[]): void { + for (const furniId of furniIds) { + WiredSelectionVisualizer.applySelectionShader(WiredSelectionVisualizer.getRoomObject(furniId)); } + } - public static clearSelectionShaderFromFurni(furniIds: number[]): void - { - for(const furniId of furniIds) - { - WiredSelectionVisualizer.clearSelectionShader(WiredSelectionVisualizer.getRoomObject(furniId)); - } + private static getRoomObject(objectId: number): IRoomObject { + const roomEngine = GetRoomEngine(); + + return roomEngine.getRoomObject(roomEngine.activeRoomId, objectId, RoomObjectCategory.FLOOR); + } + + private static applySelectionShader(roomObject: IRoomObject): void { + if (!roomObject) return; + + const visualization = roomObject.visualization as IRoomObjectSpriteVisualization; + + if (!visualization) return; + + for (const sprite of visualization.sprites) { + if (sprite.blendMode === 1) continue; // BLEND_MODE: ADD + + sprite.filters = [WiredSelectionVisualizer._selectionShader]; } + } - public static applySelectionShaderToFurni(furniIds: number[]): void - { - for(const furniId of furniIds) - { - WiredSelectionVisualizer.applySelectionShader(WiredSelectionVisualizer.getRoomObject(furniId)); - } - } + private static clearSelectionShader(roomObject: IRoomObject): void { + if (!roomObject) return; - private static getRoomObject(objectId: number): IRoomObject - { - const roomEngine = GetRoomEngine(); + const visualization = roomObject.visualization as IRoomObjectSpriteVisualization; - return roomEngine.getRoomObject(roomEngine.activeRoomId, objectId, RoomObjectCategory.FLOOR); - } + if (!visualization) return; - private static applySelectionShader(roomObject: IRoomObject): void - { - if(!roomObject) return; - - const visualization = (roomObject.visualization as IRoomObjectSpriteVisualization); - - if(!visualization) return; - - for(const sprite of visualization.sprites) - { - if(sprite.blendMode === 1) continue; // BLEND_MODE: ADD - - sprite.filters = [ WiredSelectionVisualizer._selectionShader ]; - } - } - - private static clearSelectionShader(roomObject: IRoomObject): void - { - if(!roomObject) return; - - const visualization = (roomObject.visualization as IRoomObjectSpriteVisualization); - - if(!visualization) return; - - for(const sprite of visualization.sprites) sprite.filters = []; - } + for (const sprite of visualization.sprites) sprite.filters = []; + } } diff --git a/apps/frontend/src/api/wired/WiredStringDelimeter.ts b/apps/frontend/src/api/wired/WiredStringDelimeter.ts index bc4cf2e..ca67736 100644 --- a/apps/frontend/src/api/wired/WiredStringDelimeter.ts +++ b/apps/frontend/src/api/wired/WiredStringDelimeter.ts @@ -1 +1 @@ -export const WIRED_STRING_DELIMETER: string = '\t'; +export const WIRED_STRING_DELIMETER: string = "\t"; diff --git a/apps/frontend/src/api/wired/WiredTriggerLayoutCode.ts b/apps/frontend/src/api/wired/WiredTriggerLayoutCode.ts index fd758df..76d350f 100644 --- a/apps/frontend/src/api/wired/WiredTriggerLayoutCode.ts +++ b/apps/frontend/src/api/wired/WiredTriggerLayoutCode.ts @@ -1,17 +1,16 @@ -export class WiredTriggerLayout -{ - public static AVATAR_SAYS_SOMETHING: number = 0; - public static AVATAR_WALKS_ON_FURNI: number = 1; - public static AVATAR_WALKS_OFF_FURNI: number = 2; - public static EXECUTE_ONCE: number = 3; - public static TOGGLE_FURNI: number = 4; - public static EXECUTE_PERIODICALLY: number = 6; - public static AVATAR_ENTERS_ROOM: number = 7; - public static GAME_STARTS: number = 8; - public static GAME_ENDS: number = 9; - public static SCORE_ACHIEVED: number = 10; - public static COLLISION: number = 11; - public static EXECUTE_PERIODICALLY_LONG: number = 12; - public static BOT_REACHED_STUFF: number = 13; - public static BOT_REACHED_AVATAR: number = 14; +export class WiredTriggerLayout { + public static AVATAR_SAYS_SOMETHING: number = 0; + public static AVATAR_WALKS_ON_FURNI: number = 1; + public static AVATAR_WALKS_OFF_FURNI: number = 2; + public static EXECUTE_ONCE: number = 3; + public static TOGGLE_FURNI: number = 4; + public static EXECUTE_PERIODICALLY: number = 6; + public static AVATAR_ENTERS_ROOM: number = 7; + public static GAME_STARTS: number = 8; + public static GAME_ENDS: number = 9; + public static SCORE_ACHIEVED: number = 10; + public static COLLISION: number = 11; + public static EXECUTE_PERIODICALLY_LONG: number = 12; + public static BOT_REACHED_STUFF: number = 13; + public static BOT_REACHED_AVATAR: number = 14; } diff --git a/apps/frontend/src/api/wired/index.ts b/apps/frontend/src/api/wired/index.ts index e855881..7a09ce8 100644 --- a/apps/frontend/src/api/wired/index.ts +++ b/apps/frontend/src/api/wired/index.ts @@ -1,9 +1,9 @@ -export * from './GetWiredTimeLocale'; -export * from './WiredActionLayoutCode'; -export * from './WiredConditionLayoutCode'; -export * from './WiredDateToString'; -export * from './WiredFurniType'; -export * from './WiredSelectionFilter'; -export * from './WiredSelectionVisualizer'; -export * from './WiredStringDelimeter'; -export * from './WiredTriggerLayoutCode'; +export * from "./GetWiredTimeLocale"; +export * from "./WiredActionLayoutCode"; +export * from "./WiredConditionLayoutCode"; +export * from "./WiredDateToString"; +export * from "./WiredFurniType"; +export * from "./WiredSelectionFilter"; +export * from "./WiredSelectionVisualizer"; +export * from "./WiredStringDelimeter"; +export * from "./WiredTriggerLayoutCode"; diff --git a/apps/frontend/src/assets/styles/bootstrap/_accordion.scss b/apps/frontend/src/assets/styles/bootstrap/_accordion.scss index fc62ceb..2d6ab38 100644 --- a/apps/frontend/src/assets/styles/bootstrap/_accordion.scss +++ b/apps/frontend/src/assets/styles/bootstrap/_accordion.scss @@ -93,7 +93,6 @@ padding: $accordion-body-padding-y $accordion-body-padding-x; } - // Flush accordion items // // Remove borders and border-radius to keep accordion items edge-to-edge. @@ -108,8 +107,12 @@ border-left: 0; @include border-radius(0); - &:first-child { border-top: 0; } - &:last-child { border-bottom: 0; } + &:first-child { + border-top: 0; + } + &:last-child { + border-bottom: 0; + } .accordion-button { @include border-radius(0); diff --git a/apps/frontend/src/assets/styles/bootstrap/_alert.scss b/apps/frontend/src/assets/styles/bootstrap/_alert.scss index 34f1e84..69fe1ce 100644 --- a/apps/frontend/src/assets/styles/bootstrap/_alert.scss +++ b/apps/frontend/src/assets/styles/bootstrap/_alert.scss @@ -21,7 +21,6 @@ font-weight: $alert-link-font-weight; } - // Dismissible alerts // // Expand the right padding and account for the close button's positioning. @@ -39,7 +38,6 @@ } } - // scss-docs-start alert-modifiers // Generate contextual modifier classes for colorizing the alert. diff --git a/apps/frontend/src/assets/styles/bootstrap/_breadcrumb.scss b/apps/frontend/src/assets/styles/bootstrap/_breadcrumb.scss index f7fafe7..2de01e8 100644 --- a/apps/frontend/src/assets/styles/bootstrap/_breadcrumb.scss +++ b/apps/frontend/src/assets/styles/bootstrap/_breadcrumb.scss @@ -18,7 +18,10 @@ float: left; // Suppress inline spacings and underlining of the separator padding-right: $breadcrumb-item-padding-x; color: $breadcrumb-divider-color; - content: var(--#{$variable-prefix}breadcrumb-divider, escape-svg($breadcrumb-divider)) #{"/* rtl:"} var(--#{$variable-prefix}breadcrumb-divider, escape-svg($breadcrumb-divider-flipped)) #{"*/"}; + content: var(--#{$variable-prefix}breadcrumb-divider, escape-svg($breadcrumb-divider)) #{"/* rtl:"} var( + --#{$variable-prefix}breadcrumb-divider, + escape-svg($breadcrumb-divider-flipped) + ) #{"*/"}; } } diff --git a/apps/frontend/src/assets/styles/bootstrap/_button-group.scss b/apps/frontend/src/assets/styles/bootstrap/_button-group.scss index 13aa056..e7b961c 100644 --- a/apps/frontend/src/assets/styles/bootstrap/_button-group.scss +++ b/apps/frontend/src/assets/styles/bootstrap/_button-group.scss @@ -61,17 +61,20 @@ // // Remix the default button sizing classes into new ones for easier manipulation. -.btn-group-sm > .btn { @extend .btn-sm; } -.btn-group-lg > .btn { @extend .btn-lg; } - +.btn-group-sm > .btn { + @extend .btn-sm; +} +.btn-group-lg > .btn { + @extend .btn-lg; +} // // Split button dropdowns // .dropdown-toggle-split { - padding-right: $btn-padding-x * .75; - padding-left: $btn-padding-x * .75; + padding-right: $btn-padding-x * 0.75; + padding-left: $btn-padding-x * 0.75; &::after, .dropup &::after, @@ -85,16 +88,15 @@ } .btn-sm + .dropdown-toggle-split { - padding-right: $btn-padding-x-sm * .75; - padding-left: $btn-padding-x-sm * .75; + padding-right: $btn-padding-x-sm * 0.75; + padding-left: $btn-padding-x-sm * 0.75; } .btn-lg + .dropdown-toggle-split { - padding-right: $btn-padding-x-lg * .75; - padding-left: $btn-padding-x-lg * .75; + padding-right: $btn-padding-x-lg * 0.75; + padding-left: $btn-padding-x-lg * 0.75; } - // The clickable button for toggling the menu // Set the same inset shadow as the :active state .btn-group.show .dropdown-toggle { @@ -106,7 +108,6 @@ } } - // // Vertical button groups // diff --git a/apps/frontend/src/assets/styles/bootstrap/_buttons.scss b/apps/frontend/src/assets/styles/bootstrap/_buttons.scss index 3c2cba9..7ce3093 100644 --- a/apps/frontend/src/assets/styles/bootstrap/_buttons.scss +++ b/apps/frontend/src/assets/styles/bootstrap/_buttons.scss @@ -50,7 +50,6 @@ } } - // // Alternate buttons // @@ -69,7 +68,6 @@ } // scss-docs-end btn-variant-loops - // // Link buttons // @@ -102,7 +100,6 @@ // No need for an active state here } - // // Button Sizes // diff --git a/apps/frontend/src/assets/styles/bootstrap/_card.scss b/apps/frontend/src/assets/styles/bootstrap/_card.scss index 22890f5..530228b 100644 --- a/apps/frontend/src/assets/styles/bootstrap/_card.scss +++ b/apps/frontend/src/assets/styles/bootstrap/_card.scss @@ -29,7 +29,7 @@ @include border-top-radius($card-inner-border-radius); } - &:last-child { + &:last-child { border-bottom-width: 0; @include border-bottom-radius($card-inner-border-radius); } @@ -56,7 +56,7 @@ } .card-subtitle { - margin-top: -$card-title-spacer-y * .5; + margin-top: -$card-title-spacer-y * 0.5; margin-bottom: 0; } @@ -101,15 +101,14 @@ } } - // // Header navs // .card-header-tabs { - margin-right: -$card-cap-padding-x * .5; + margin-right: -$card-cap-padding-x * 0.5; margin-bottom: -$card-cap-padding-y; - margin-left: -$card-cap-padding-x * .5; + margin-left: -$card-cap-padding-x * 0.5; border-bottom: 0; @if $nav-tabs-link-active-bg != $card-bg { @@ -121,8 +120,8 @@ } .card-header-pills { - margin-right: -$card-cap-padding-x * .5; - margin-left: -$card-cap-padding-x * .5; + margin-right: -$card-cap-padding-x * 0.5; + margin-left: -$card-cap-padding-x * 0.5; } // Card image @@ -152,7 +151,6 @@ @include border-bottom-radius($card-inner-border-radius); } - // // Card groups // diff --git a/apps/frontend/src/assets/styles/bootstrap/_carousel.scss b/apps/frontend/src/assets/styles/bootstrap/_carousel.scss index 3d8fb15..09455a8 100644 --- a/apps/frontend/src/assets/styles/bootstrap/_carousel.scss +++ b/apps/frontend/src/assets/styles/bootstrap/_carousel.scss @@ -55,7 +55,6 @@ /* rtl:end:ignore */ - // // Alternate transitions // @@ -82,7 +81,6 @@ } } - // // Left/right controls for nav // @@ -117,11 +115,11 @@ } .carousel-control-prev { left: 0; - background-image: if($enable-gradients, linear-gradient(90deg, rgba($black, .25), rgba($black, .001)), null); + background-image: if($enable-gradients, linear-gradient(90deg, rgba($black, 0.25), rgba($black, 0.001)), null); } .carousel-control-next { right: 0; - background-image: if($enable-gradients, linear-gradient(270deg, rgba($black, .25), rgba($black, .001)), null); + background-image: if($enable-gradients, linear-gradient(270deg, rgba($black, 0.25), rgba($black, 0.001)), null); } // Icons for within @@ -195,16 +193,15 @@ } } - // Optional captions // // .carousel-caption { position: absolute; - right: (100% - $carousel-caption-width) * .5; + right: (100% - $carousel-caption-width) * 0.5; bottom: $carousel-caption-spacer; - left: (100% - $carousel-caption-width) * .5; + left: (100% - $carousel-caption-width) * 0.5; padding-top: $carousel-caption-padding-y; padding-bottom: $carousel-caption-padding-y; color: $carousel-caption-color; diff --git a/apps/frontend/src/assets/styles/bootstrap/_dropdown.scss b/apps/frontend/src/assets/styles/bootstrap/_dropdown.scss index adc1143..d3fbf68 100644 --- a/apps/frontend/src/assets/styles/bootstrap/_dropdown.scss +++ b/apps/frontend/src/assets/styles/bootstrap/_dropdown.scss @@ -116,7 +116,6 @@ } } - // Dividers (basically an `
`) within the dropdown .dropdown-divider { height: 0; diff --git a/apps/frontend/src/assets/styles/bootstrap/_functions.scss b/apps/frontend/src/assets/styles/bootstrap/_functions.scss index 977f0ee..2eca768 100644 --- a/apps/frontend/src/assets/styles/bootstrap/_functions.scss +++ b/apps/frontend/src/assets/styles/bootstrap/_functions.scss @@ -52,7 +52,12 @@ $_args: append($_args, if($arg == "$key", $key, if($arg == "$value", $value, $arg))); } - $_map: map-merge($_map, ($key: call(get-function($func), $_args...))); + $_map: map-merge( + $_map, + ( + $key: call(get-function($func), $_args...), + ) + ); } @return $_map; @@ -84,7 +89,12 @@ $result: (); @each $key, $value in $map { @if (index($values, $key) != null) { - $result: map-merge($result, ($key: $value)); + $result: map-merge( + $result, + ( + $key: $value, + ) + ); } } @return $result; @@ -142,9 +152,25 @@ // A list of pre-calculated numbers of pow(divide((divide($value, 255) + .055), 1.055), 2.4). (from 0 to 255) // stylelint-disable-next-line scss/dollar-variable-default, scss/dollar-variable-pattern -$_luminance-list: .0008 .001 .0011 .0013 .0015 .0017 .002 .0022 .0025 .0027 .003 .0033 .0037 .004 .0044 .0048 .0052 .0056 .006 .0065 .007 .0075 .008 .0086 .0091 .0097 .0103 .011 .0116 .0123 .013 .0137 .0144 .0152 .016 .0168 .0176 .0185 .0194 .0203 .0212 .0222 .0232 .0242 .0252 .0262 .0273 .0284 .0296 .0307 .0319 .0331 .0343 .0356 .0369 .0382 .0395 .0409 .0423 .0437 .0452 .0467 .0482 .0497 .0513 .0529 .0545 .0561 .0578 .0595 .0612 .063 .0648 .0666 .0685 .0704 .0723 .0742 .0762 .0782 .0802 .0823 .0844 .0865 .0887 .0908 .0931 .0953 .0976 .0999 .1022 .1046 .107 .1095 .1119 .1144 .117 .1195 .1221 .1248 .1274 .1301 .1329 .1356 .1384 .1413 .1441 .147 .15 .1529 .1559 .159 .162 .1651 .1683 .1714 .1746 .1779 .1812 .1845 .1878 .1912 .1946 .1981 .2016 .2051 .2086 .2122 .2159 .2195 .2232 .227 .2307 .2346 .2384 .2423 .2462 .2502 .2542 .2582 .2623 .2664 .2705 .2747 .2789 .2831 .2874 .2918 .2961 .3005 .305 .3095 .314 .3185 .3231 .3278 .3325 .3372 .3419 .3467 .3515 .3564 .3613 .3663 .3712 .3763 .3813 .3864 .3916 .3968 .402 .4072 .4125 .4179 .4233 .4287 .4342 .4397 .4452 .4508 .4564 .4621 .4678 .4735 .4793 .4851 .491 .4969 .5029 .5089 .5149 .521 .5271 .5333 .5395 .5457 .552 .5583 .5647 .5711 .5776 .5841 .5906 .5972 .6038 .6105 .6172 .624 .6308 .6376 .6445 .6514 .6584 .6654 .6724 .6795 .6867 .6939 .7011 .7084 .7157 .7231 .7305 .7379 .7454 .7529 .7605 .7682 .7758 .7835 .7913 .7991 .807 .8148 .8228 .8308 .8388 .8469 .855 .8632 .8714 .8796 .8879 .8963 .9047 .9131 .9216 .9301 .9387 .9473 .956 .9647 .9734 .9823 .9911 1; +$_luminance-list: 0.0008 0.001 0.0011 0.0013 0.0015 0.0017 0.002 0.0022 0.0025 0.0027 0.003 0.0033 0.0037 0.004 0.0044 0.0048 0.0052 0.0056 0.006 0.0065 0.007 + 0.0075 0.008 0.0086 0.0091 0.0097 0.0103 0.011 0.0116 0.0123 0.013 0.0137 0.0144 0.0152 0.016 0.0168 0.0176 0.0185 0.0194 0.0203 0.0212 0.0222 0.0232 0.0242 + 0.0252 0.0262 0.0273 0.0284 0.0296 0.0307 0.0319 0.0331 0.0343 0.0356 0.0369 0.0382 0.0395 0.0409 0.0423 0.0437 0.0452 0.0467 0.0482 0.0497 0.0513 0.0529 + 0.0545 0.0561 0.0578 0.0595 0.0612 0.063 0.0648 0.0666 0.0685 0.0704 0.0723 0.0742 0.0762 0.0782 0.0802 0.0823 0.0844 0.0865 0.0887 0.0908 0.0931 0.0953 + 0.0976 0.0999 0.1022 0.1046 0.107 0.1095 0.1119 0.1144 0.117 0.1195 0.1221 0.1248 0.1274 0.1301 0.1329 0.1356 0.1384 0.1413 0.1441 0.147 0.15 0.1529 0.1559 + 0.159 0.162 0.1651 0.1683 0.1714 0.1746 0.1779 0.1812 0.1845 0.1878 0.1912 0.1946 0.1981 0.2016 0.2051 0.2086 0.2122 0.2159 0.2195 0.2232 0.227 0.2307 0.2346 + 0.2384 0.2423 0.2462 0.2502 0.2542 0.2582 0.2623 0.2664 0.2705 0.2747 0.2789 0.2831 0.2874 0.2918 0.2961 0.3005 0.305 0.3095 0.314 0.3185 0.3231 0.3278 0.3325 + 0.3372 0.3419 0.3467 0.3515 0.3564 0.3613 0.3663 0.3712 0.3763 0.3813 0.3864 0.3916 0.3968 0.402 0.4072 0.4125 0.4179 0.4233 0.4287 0.4342 0.4397 0.4452 + 0.4508 0.4564 0.4621 0.4678 0.4735 0.4793 0.4851 0.491 0.4969 0.5029 0.5089 0.5149 0.521 0.5271 0.5333 0.5395 0.5457 0.552 0.5583 0.5647 0.5711 0.5776 0.5841 + 0.5906 0.5972 0.6038 0.6105 0.6172 0.624 0.6308 0.6376 0.6445 0.6514 0.6584 0.6654 0.6724 0.6795 0.6867 0.6939 0.7011 0.7084 0.7157 0.7231 0.7305 0.7379 + 0.7454 0.7529 0.7605 0.7682 0.7758 0.7835 0.7913 0.7991 0.807 0.8148 0.8228 0.8308 0.8388 0.8469 0.855 0.8632 0.8714 0.8796 0.8879 0.8963 0.9047 0.9131 0.9216 + 0.9301 0.9387 0.9473 0.956 0.9647 0.9734 0.9823 0.9911 1; -@function color-contrast($background, $color-contrast-dark: $color-contrast-dark, $color-contrast-light: $color-contrast-light, $min-contrast-ratio: $min-contrast-ratio) { +@function color-contrast( + $background, + $color-contrast-dark: $color-contrast-dark, + $color-contrast-light: $color-contrast-light, + $min-contrast-ratio: $min-contrast-ratio +) { $foregrounds: $color-contrast-light, $color-contrast-dark, $white, $black; $max-ratio: 0; $max-ratio-color: null; @@ -168,7 +194,7 @@ $_luminance-list: .0008 .001 .0011 .0013 .0015 .0017 .002 .0022 .0025 .0027 .003 $l1: luminance($background); $l2: luminance(opaque($background, $foreground)); - @return if($l1 > $l2, divide($l1 + .05, $l2 + .05), divide($l2 + .05, $l1 + .05)); + @return if($l1 > $l2, divide($l1 + 0.05, $l2 + 0.05), divide($l2 + 0.05, $l1 + 0.05)); } // Return WCAG2.0 relative luminance @@ -178,15 +204,20 @@ $_luminance-list: .0008 .001 .0011 .0013 .0015 .0017 .002 .0022 .0025 .0027 .003 $rgb: ( "r": red($color), "g": green($color), - "b": blue($color) + "b": blue($color), ); @each $name, $value in $rgb { - $value: if(divide($value, 255) < .03928, divide(divide($value, 255), 12.92), nth($_luminance-list, $value + 1)); - $rgb: map-merge($rgb, ($name: $value)); + $value: if(divide($value, 255) < 0.03928, divide(divide($value, 255), 12.92), nth($_luminance-list, $value + 1)); + $rgb: map-merge( + $rgb, + ( + $name: $value, + ) + ); } - @return (map-get($rgb, "r") * .2126) + (map-get($rgb, "g") * .7152) + (map-get($rgb, "b") * .0722); + @return (map-get($rgb, "r") * 0.2126) + (map-get($rgb, "g") * 0.7152) + (map-get($rgb, "b") * 0.0722); } // Return opaque color @@ -273,7 +304,7 @@ $_luminance-list: .0008 .001 .0011 .0013 .0015 .0017 .002 .0022 .0025 .0027 .003 $quotient: $quotient + 1; } $result: $result * 10 + $quotient; - $factor: $factor * .1; + $factor: $factor * 0.1; $remainder: $remainder * 10; $precision: $precision - 1; @if ($precision < 0 and $remainder >= $divisor * 5) { @@ -287,7 +318,7 @@ $_luminance-list: .0008 .001 .0011 .0013 .0015 .0017 .002 .0022 .0025 .0027 .003 "px": 1px, "rem": 1rem, "em": 1em, - "%": 1% + "%": 1%, ); @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) { $result: $result * map-get($unit-map, $dividend-unit); diff --git a/apps/frontend/src/assets/styles/bootstrap/_grid.scss b/apps/frontend/src/assets/styles/bootstrap/_grid.scss index 27fd558..57b5d7a 100644 --- a/apps/frontend/src/assets/styles/bootstrap/_grid.scss +++ b/apps/frontend/src/assets/styles/bootstrap/_grid.scss @@ -23,7 +23,6 @@ } } - // Columns // // Common styles for small and large grid columns diff --git a/apps/frontend/src/assets/styles/bootstrap/_images.scss b/apps/frontend/src/assets/styles/bootstrap/_images.scss index 3d6a101..61677ac 100644 --- a/apps/frontend/src/assets/styles/bootstrap/_images.scss +++ b/apps/frontend/src/assets/styles/bootstrap/_images.scss @@ -9,7 +9,6 @@ @include img-fluid(); } - // Image thumbnails .img-thumbnail { padding: $thumbnail-padding; @@ -32,7 +31,7 @@ } .figure-img { - margin-bottom: $spacer * .5; + margin-bottom: $spacer * 0.5; line-height: 1; } diff --git a/apps/frontend/src/assets/styles/bootstrap/_list-group.scss b/apps/frontend/src/assets/styles/bootstrap/_list-group.scss index dcd61d2..26ea2b9 100644 --- a/apps/frontend/src/assets/styles/bootstrap/_list-group.scss +++ b/apps/frontend/src/assets/styles/bootstrap/_list-group.scss @@ -23,7 +23,6 @@ } } - // Interactive list items // // Use anchor or button elements instead of `li`s or `div`s to create interactive @@ -49,7 +48,6 @@ } } - // Individual list items // // Use on `li`s or `div`s within the `.list-group` parent. @@ -96,7 +94,6 @@ } } - // Horizontal // // Change the layout of list group items from vertical (default) to horizontal. @@ -137,7 +134,6 @@ } } - // Flush list items // // Remove borders and border-radius to keep list group items edge-to-edge. Most @@ -155,7 +151,6 @@ } } - // scss-docs-start list-group-modifiers // List group contextual variants // diff --git a/apps/frontend/src/assets/styles/bootstrap/_modal.scss b/apps/frontend/src/assets/styles/bootstrap/_modal.scss index 21e1258..c94462a 100644 --- a/apps/frontend/src/assets/styles/bootstrap/_modal.scss +++ b/apps/frontend/src/assets/styles/bootstrap/_modal.scss @@ -3,7 +3,6 @@ // .modal-dialog - positioning shell for the actual modal // .modal-content - actual modal w/ bg and corners and stuff - // Container that the modal scrolls within .modal { position: fixed; @@ -100,8 +99,8 @@ @include border-top-radius($modal-content-inner-border-radius); .btn-close { - padding: ($modal-header-padding-y * .5) ($modal-header-padding-x * .5); - margin: ($modal-header-padding-y * -.5) ($modal-header-padding-x * -.5) ($modal-header-padding-y * -.5) auto; + padding: ($modal-header-padding-y * 0.5) ($modal-header-padding-x * 0.5); + margin: ($modal-header-padding-y * -0.5) ($modal-header-padding-x * -0.5) ($modal-header-padding-y * -0.5) auto; } } @@ -128,7 +127,7 @@ flex-shrink: 0; align-items: center; // vertically center justify-content: flex-end; // Right align buttons with flex property because text-align doesn't work on flex items - padding: $modal-inner-padding - $modal-footer-margin-between * .5; + padding: $modal-inner-padding - $modal-footer-margin-between * 0.5; border-top: $modal-footer-border-width solid $modal-footer-border-color; @include border-bottom-radius($modal-content-inner-border-radius); @@ -136,7 +135,7 @@ // This solution is far from ideal because of the universal selector usage, // but is needed to fix https://github.com/twbs/bootstrap/issues/24800 > * { - margin: $modal-footer-margin-between * .5; + margin: $modal-footer-margin-between * 0.5; } } @@ -160,7 +159,9 @@ @include box-shadow($modal-content-box-shadow-sm-up); } - .modal-sm { max-width: $modal-sm; } + .modal-sm { + max-width: $modal-sm; + } } @include media-breakpoint-up(lg) { @@ -171,7 +172,9 @@ } @include media-breakpoint-up(xl) { - .modal-xl { max-width: $modal-xl; } + .modal-xl { + max-width: $modal-xl; + } } // scss-docs-start modal-fullscreen-loop diff --git a/apps/frontend/src/assets/styles/bootstrap/_nav.scss b/apps/frontend/src/assets/styles/bootstrap/_nav.scss index cd1371d..365a143 100644 --- a/apps/frontend/src/assets/styles/bootstrap/_nav.scss +++ b/apps/frontend/src/assets/styles/bootstrap/_nav.scss @@ -4,37 +4,37 @@ // `