diff --git a/packages/api/src/nitro/localization/ILocalizationManager.ts b/packages/api/src/nitro/localization/ILocalizationManager.ts index 86070d0..d709957 100644 --- a/packages/api/src/nitro/localization/ILocalizationManager.ts +++ b/packages/api/src/nitro/localization/ILocalizationManager.ts @@ -8,6 +8,8 @@ getValueWithParameter(key: string, parameter: string, replacement: string): string; getValueWithParameters(key: string, parameters: string[], replacements: string[]): string; setValue(key: string, value: string): void; + setOverrideValues(values: Map): void; + clearOverrideValues(): void; registerParameter(key: string, parameter: string, value: string): void; getBadgeName(key: string): string; getBadgeDesc(key: string): string; diff --git a/packages/api/src/nitro/session/IRoomUserData.ts b/packages/api/src/nitro/session/IRoomUserData.ts index 4407449..1108114 100644 --- a/packages/api/src/nitro/session/IRoomUserData.ts +++ b/packages/api/src/nitro/session/IRoomUserData.ts @@ -7,6 +7,13 @@ export interface IRoomUserData sex: string; figure: string; custom: string; + nickIcon: string; + prefixText: string; + prefixColor: string; + prefixIcon: string; + prefixEffect: string; + prefixFont: string; + displayOrder: string; webID: number; groupId: number; groupName: string; diff --git a/packages/api/src/nitro/session/ISessionDataManager.ts b/packages/api/src/nitro/session/ISessionDataManager.ts index 9529473..26947e6 100644 --- a/packages/api/src/nitro/session/ISessionDataManager.ts +++ b/packages/api/src/nitro/session/ISessionDataManager.ts @@ -8,6 +8,8 @@ export interface ISessionDataManager { init(): Promise; getAllFurnitureData(): IFurnitureData[]; + applyFurnitureDataOverrides(url: string): Promise; + clearFurnitureDataOverrides(): void; getFloorItemData(id: number): IFurnitureData; getFloorItemDataByName(name: string): IFurnitureData; getWallItemData(id: number): IFurnitureData; diff --git a/packages/api/src/nitro/session/IUserDataManager.ts b/packages/api/src/nitro/session/IUserDataManager.ts index a16e793..c5af0ab 100644 --- a/packages/api/src/nitro/session/IUserDataManager.ts +++ b/packages/api/src/nitro/session/IUserDataManager.ts @@ -16,6 +16,8 @@ export interface IUserDataManager updateFigure(roomIndex: number, figure: string, sex: string, hasSaddle: boolean, isRiding: boolean): void; updateName(roomIndex: number, name: string): void; updateMotto(roomIndex: number, custom: string): void; + updateNickIcon(roomIndex: number, nickIcon: string): void; + updateCustomization(roomIndex: number, nickIcon: string, prefixText: string, prefixColor: string, prefixIcon: string, prefixEffect: string, prefixFont: string, displayOrder: string): void; updateAchievementScore(roomIndex: number, score: number): void; updatePetLevel(roomIndex: number, level: number): void; updatePetBreedingStatus(roomIndex: number, canBreed: boolean, canHarvest: boolean, canRevive: boolean, hasBreedingPermission: boolean): void; diff --git a/packages/communication/src/NitroMessages.ts b/packages/communication/src/NitroMessages.ts index 400bdb7..a1ad95f 100644 --- a/packages/communication/src/NitroMessages.ts +++ b/packages/communication/src/NitroMessages.ts @@ -1,9 +1,11 @@ import { IMessageConfiguration } from '@nitrots/api'; import { AcceptFriendMessageComposer, AcceptFriendResultEvent, AcceptGameInviteMessageComposer, AcceptQuestMessageComposer, AccountSafetyLockStatusChangeMessageEvent, AchievementEvent, AchievementNotificationMessageEvent, AchievementResolutionCompletedMessageEvent, AchievementResolutionProgressMessageEvent, AchievementResolutionsMessageEvent, AchievementsEvent, AchievementsScoreEvent, ActivateQuestMessageComposer, ActivityPointNotificationMessageEvent, AddFavouriteRoomMessageComposer, AddJukeboxDiskComposer, AddSpamWallPostItMessageComposer, ApplySnapshotMessageComposer, ApplyTonerComposer, ApproveAllMembershipRequestsMessageComposer, ApproveNameMessageComposer, ApproveNameMessageEvent, AreaHideMessageEvent, AuthenticatedEvent, AuthenticationMessageComposer, AvailabilityStatusMessageEvent, AvailabilityTimeMessageEvent, AvailableCommandsEvent, AvatarEffectActivatedComposer, AvatarEffectActivatedEvent, AvatarEffectAddedEvent, AvatarEffectExpiredEvent, AvatarEffectSelectedComposer, AvatarEffectSelectedEvent, AvatarEffectsEvent, BadgePointLimitsEvent, BadgeReceivedEvent, BadgesEvent, BannedUsersFromRoomEvent, BonusRareInfoMessageEvent, BotAddedToInventoryEvent, BotCommandConfigurationEvent, BotErrorEvent, BotForceOpenContextMenuEvent, BotInventoryMessageEvent, BotPlaceComposer, BotReceivedMessageEvent, BotRemoveComposer, BotRemovedFromInventoryEvent, BotSkillListUpdateEvent, BotSkillSaveComposer, BreedPetsMessageComposer, BuildersClubFurniCountMessageEvent, BuildersClubPlaceRoomItemMessageComposer, BuildersClubPlaceWallItemMessageComposer, BuildersClubQueryFurniCountMessageComposer, BuildersClubSubscriptionStatusMessageEvent, BundleDiscountRulesetMessageEvent, BuyMarketplaceOfferMessageComposer, BuyMarketplaceTokensMessageComposer, CallForHelpDisabledNotifyMessageEvent, CallForHelpFromForumMessageMessageComposer, CallForHelpFromForumThreadMessageComposer, CallForHelpFromIMMessageComposer, CallForHelpFromPhotoMessageComposer, CallForHelpFromSelfieMessageComposer, CallForHelpMessageComposer, CallForHelpPendingCallsDeletedMessageEvent, CallForHelpPendingCallsMessageEvent, CallForHelpReplyMessageEvent, CallForHelpResultMessageEvent, CameraPublishStatusMessageEvent, CameraPurchaseOKMessageEvent, CameraSnapshotMessageEvent, CameraStorageUrlMessageEvent, CampaignCalendarDataMessageEvent, CampaignCalendarDoorOpenedMessageEvent, CancelEventMessageComposer, CancelMarketplaceOfferMessageComposer, CancelMysteryBoxWaitMessageEvent, CancelPetBreedingComposer, CancelQuestMessageComposer, CanCreateRoomEvent, CanCreateRoomEventEvent, CanCreateRoomMessageComposer, CatalogAdminCreateOfferComposer, CatalogAdminCreatePageComposer, CatalogAdminDeleteOfferComposer, CatalogAdminDeletePageComposer, CatalogAdminMoveOfferComposer, CatalogAdminMovePageComposer, CatalogAdminPublishComposer, CatalogAdminResultEvent, CatalogAdminSaveOfferComposer, CatalogAdminSavePageComposer, CatalogGroupsComposer, CatalogPageExpirationEvent, CatalogPageMessageEvent, CatalogPagesListEvent, CatalogPageWithEarliestExpiryMessageEvent, CatalogPublishedMessageEvent, CategoriesWithVisitorCountEvent, CfhChatlogEvent, CfhSanctionMessageEvent, CfhTopicsInitEvent, ChangeEmailComposer, ChangeEmailResultEvent, ChangeQueueMessageComposer, ChangeUserNameMessageComposer, ChangeUserNameResultMessageEvent, ChatReviewGuideDecidesOnOfferMessageComposer, ChatReviewGuideDetachedMessageComposer, ChatReviewGuideVoteMessageComposer, ChatReviewSessionCreateMessageComposer, ChatReviewSessionDetachedMessageEvent, ChatReviewSessionOfferedToGuideMessageEvent, ChatReviewSessionResultsMessageEvent, ChatReviewSessionStartedMessageEvent, ChatReviewSessionVotingStatusMessageEvent, CheckUserNameMessageComposer, CheckUserNameResultMessageEvent, ClickFurniMessageComposer, ClientHelloMessageComposer, ClientPingEvent, CloseIssueDefaultActionMessageComposer, CloseIssuesMessageComposer, ClubGiftInfoEvent, ClubGiftNotificationEvent, ClubGiftSelectedEvent, CommunityGoalEarnedPrizesMessageEvent, CommunityGoalHallOfFameMessageEvent, CommunityGoalProgressMessageEvent, CommunityGoalVoteMessageComposer, CommunityGoalVoteMessageEvent, CompetitionEntrySubmitResultEvent, CompetitionRoomsDataMessageEvent, CompetitionRoomsSearchMessageComposer, CompetitionStatusMessageEvent, CompetitionVotingInfoMessageEvent, CompleteDiffieHandshakeEvent, CompleteDiffieHandshakeMessageComposer, CompostPlantMessageComposer, ConcurrentUsersGoalProgressMessageEvent, ConfirmPetBreedingComposer, ConnectionErrorEvent, ControlYoutubeDisplayPlaybackMessageComposer, ConvertedRoomIdEvent, ConvertGlobalRoomIdMessageComposer, CraftableProductsEvent, CraftComposer, CraftingRecipeEvent, CraftingRecipesAvailableEvent, CraftingResultEvent, CraftSecretComposer, CreateFlatMessageComposer, CurrentTimingCodeMessageEvent, CustomUserNotificationMessageEvent, DeclineFriendMessageComposer, DefaultSanctionMessageComposer, DeleteBadgeMessageComposer, DeleteFavouriteRoomMessageComposer, DeleteItemMessageComposer, DeletePendingCallsForHelpMessageComposer, DeletePetMessageComposer, DesktopViewComposer, DesktopViewEvent, DiceValueMessageEvent, DirectSMSClubBuyAvailableMessageEvent, DisconnectMessageComposer, DisconnectReasonEvent, DoorbellMessageEvent, EditEventMessageComposer, ElementPointerMessageEvent, EmailStatusResultEvent, EpicPopupMessageEvent, ExtendedProfileChangedMessageEvent, ExtendRentOrBuyoutFurniMessageComposer, ExtendRentOrBuyoutStripItemMessageComposer, FavoriteMembershipUpdateMessageEvent, FavouriteChangedEvent, FavouritesEvent, FigureSetIdsMessageEvent, FigureUpdateEvent, FindFriendsProcessResultEvent, FindNewFriendsMessageComposer, FireworkChargeDataEvent, FlatAccessDeniedMessageEvent, FlatControllerAddedEvent, FlatControllerRemovedEvent, FlatControllersEvent, FlatCreatedEvent, FloodControlEvent, FloorHeightMapEvent, FollowFriendFailedEvent, FollowFriendMessageComposer, ForumDataMessageEvent, ForumsListMessageEvent, ForwardToACompetitionRoomMessageComposer, ForwardToARandomPromotedRoomMessageComposer, ForwardToASubmittableRoomMessageComposer, ForwardToRandomCompetitionRoomMessageComposer, ForwardToSomeRoomMessageComposer, FriendFurniConfirmLockMessageComposer, FriendListFragmentEvent, FriendListUpdateComposer, FriendListUpdateEvent, FriendNotificationEvent, FriendRequestQuestCompleteMessageComposer, FriendRequestsEvent, FurniRentOrBuyoutOfferMessageEvent, FurnitureAliasesComposer, FurnitureAliasesEvent, FurnitureColorWheelComposer, FurnitureDataEvent, FurnitureDiceActivateComposer, FurnitureDiceDeactivateComposer, FurnitureExchangeComposer, FurnitureFloorAddEvent, FurnitureFloorEvent, FurnitureFloorRemoveEvent, FurnitureFloorUpdateComposer, FurnitureFloorUpdateEvent, FurnitureGroupInfoComposer, FurnitureListAddOrUpdateEvent, FurnitureListComposer, FurnitureListEvent, FurnitureListInvalidateEvent, FurnitureListRemovedEvent, FurnitureMannequinSaveLookComposer, FurnitureMannequinSaveNameComposer, FurnitureMultiStateComposer, FurnitureOneWayDoorComposer, FurniturePickupAllComposer, FurniturePickupComposer, FurniturePlaceComposer, FurniturePlacePaintComposer, FurniturePostItPlaceComposer, FurniturePostItPlacedEvent, FurnitureRandomStateComposer, FurnitureStackHeightComposer, FurnitureStackHeightEvent, FurnitureWallAddEvent, FurnitureWallEvent, FurnitureWallMultiStateComposer, FurnitureWallRemoveEvent, FurnitureWallUpdateComposer, FurnitureWallUpdateEvent, FurniEditorBySpriteComposer, FurniEditorDeleteComposer, FurniEditorDetailComposer, FurniEditorDetailResultEvent, FurniEditorInteractionsComposer, FurniEditorInteractionsResultEvent, FurniEditorResultEvent, FurniEditorSearchComposer, FurniEditorSearchResultEvent, FurniEditorUpdateComposer, Game2AccountGameStatusMessageEvent, Game2CheckGameDirectoryStatusMessageComposer, Game2ExitGameMessageComposer, Game2GameChatMessageComposer, Game2GameDirectoryStatusMessageEvent, Game2GetAccountGameStatusMessageComposer, Game2GetWeeklyFriendsLeaderboardComposer, Game2GetWeeklyLeaderboardComposer, Game2InArenaQueueMessageEvent, Game2JoiningGameFailedMessageEvent, Game2LoadStageReadyMessageComposer, Game2PlayAgainMessageComposer, Game2RequestFullStatusUpdateMessageComposer, Game2StartingGameFailedMessageEvent, Game2StopCounterMessageEvent, Game2UserLeftGameMessageEvent, Game2WeeklyFriendsLeaderboardEvent, Game2WeeklyLeaderboardEvent, GameAchievementsMessageEvent, GameInviteMessageEvent, GameListMessageEvent, GameStatusMessageEvent, GameUnloadedMessageComposer, GenericErrorEvent, GetBadgePointLimitsComposer, GetBonusRareInfoMessageComposer, GetBotInventoryComposer, GetBundleDiscountRulesetComposer, GetCatalogIndexComposer, GetCatalogPageComposer, GetCatalogPageExpirationComposer, GetCatalogPageWithEarliestExpiryComposer, GetCategoriesWithUserCountMessageComposer, GetCfhChatlogMessageComposer, GetCfhStatusMessageComposer, GetClubGiftInfo, GetClubOffersMessageComposer, GetCommunityGoalEarnedPrizesMessageComposer, GetCommunityGoalHallOfFameMessageComposer, GetCommunityGoalProgressMessageComposer, GetConcurrentUsersGoalProgressMessageComposer, GetConcurrentUsersRewardMessageComposer, GetCraftableProductsComposer, GetCraftingRecipeComposer, GetCraftingRecipesAvailableComposer, GetCurrentTimingCodeMessageComposer, GetCustomRoomFilterMessageComposer, GetDailyQuestMessageComposer, GetDirectClubBuyAvailableComposer, GetEmailStatusComposer, GetExtendedProfileByNameMessageComposer, GetFaqCategoryMessageComposer, GetFaqTextMessageComposer, GetForumsListMessageComposer, GetForumStatsMessageComposer, GetFriendRequestsComposer, GetGameAchievementsMessageComposer, GetGameListMessageComposer, GetGameStatusMessageComposer, GetGiftMessageComposer, GetGiftWrappingConfigurationComposer, GetGuestRoomMessageComposer, GetGuestRoomResultEvent, GetGuideReportingStatusMessageComposer, GetHabboBasicMembershipExtendOfferComposer, GetHabboClubExtendOfferMessageComposer, GetHabboGroupBadgesMessageComposer, GetIgnoredUsersComposer, GetInterstitialMessageComposer, GetIsBadgeRequestFulfilledComposer, GetIsOfferGiftableComposer, GetIsUserPartOfCompetitionMessageComposer, GetItemDataComposer, GetJukeboxPlayListMessageComposer, GetLimitedOfferAppearingNextComposer, GetMarketplaceCanMakeOfferComposer, GetMarketplaceConfigurationMessageComposer, GetMarketplaceItemStatsComposer, GetMarketplaceOffersMessageComposer, GetMarketplaceOwnOffersMessageComposer, GetMessagesMessageComposer, GetModeratorRoomInfoMessageComposer, GetModeratorUserInfoMessageComposer, GetNextTargetedOfferComposer, GetNowPlayingMessageComposer, GetOccupiedTilesMessageComposer, GetOfficialRoomsMessageComposer, GetOfficialSongIdMessageComposer, GetPendingCallsForHelpMessageComposer, GetPetCommandsComposer, GetPopularRoomTagsMessageComposer, GetProductOfferComposer, GetPromoArticlesComposer, GetQuestsMessageComposer, GetQuizQuestionsComposer, GetRecyclerStatusMessageComposer, GetRentOrBuyoutOfferMessageComposer, GetResolutionAchievementsMessageComposer, GetRoomAdPurchaseInfoComposer, GetRoomChatlogMessageComposer, GetRoomEntryDataMessageComposer, GetRoomEntryTileMessageComposer, GetRoomVisitsMessageComposer, GetSeasonalCalendarDailyOfferComposer, GetSeasonalQuestsOnlyMessageComposer, GetSecondsUntilMessageComposer, GetSellablePetPalettesComposer, GetSongInfoMessageComposer, GetSoundMachinePlayListMessageComposer, GetSoundSettingsComposer, GetTalentTrackLevelMessageComposer, GetTargetedOfferComposer, GetThreadMessageComposer, GetThreadsMessageComposer, GetUnreadForumsCountMessageComposer, GetUserChatlogMessageComposer, GetUserEventCatsMessageComposer, GetUserFlatCatsMessageComposer, GetUserGameAchievementsMessageComposer, GetUserSongDisksMessageComposer, GetUserTagsComposer, GetWardrobeMessageComposer, GetWeeklyGameRewardComposer, GetWeeklyGameRewardWinnersComposer, GetYoutubeDisplayStatusMessageComposer, GiftReceiverNotFoundEvent, GiftWrappingConfigurationEvent, GotMysteryBoxPrizeMessageEvent, GoToFlatMessageComposer, GroupAdminGiveComposer, GroupAdminTakeComposer, GroupBadgePartsComposer, GroupBadgePartsEvent, GroupBuyComposer, GroupBuyDataComposer, GroupBuyDataEvent, GroupConfirmMemberRemoveEvent, GroupConfirmRemoveMemberComposer, GroupDeleteComposer, GroupDetailsChangedMessageEvent, GroupFavoriteComposer, GroupFurniContextMenuInfoMessageEvent, GroupInformationComposer, GroupInformationEvent, GroupJoinComposer, GroupMembersComposer, GroupMembersEvent, GroupMembershipAcceptComposer, GroupMembershipDeclineComposer, GroupMembershipRequestedMessageEvent, GroupPurchasedEvent, GroupRemoveMemberComposer, GroupSaveBadgeComposer, GroupSaveColorsComposer, GroupSaveInformationComposer, GroupSavePreferencesComposer, GroupSettingsComposer, GroupSettingsEvent, GroupUnfavoriteComposer, GuestRoomSearchResultEvent, GuideOnDutyStatusMessageEvent, GuideReportingStatusMessageEvent, GuideSessionAttachedMessageEvent, GuideSessionCreateMessageComposer, GuideSessionDetachedMessageEvent, GuideSessionEndedMessageEvent, GuideSessionErrorMessageEvent, GuideSessionFeedbackMessageComposer, GuideSessionGetRequesterRoomMessageComposer, GuideSessionGuideDecidesMessageComposer, GuideSessionInvitedToGuideRoomMessageEvent, GuideSessionInviteRequesterMessageComposer, GuideSessionIsTypingMessageComposer, GuideSessionMessageMessageComposer, GuideSessionMessageMessageEvent, GuideSessionOnDutyUpdateMessageComposer, GuideSessionPartnerIsTypingMessageEvent, GuideSessionReportMessageComposer, GuideSessionRequesterCancelsMessageComposer, GuideSessionRequesterRoomMessageEvent, GuideSessionResolvedMessageComposer, GuideSessionStartedMessageEvent, GuideTicketCreationResultMessageEvent, GuideTicketResolutionMessageEvent, GuildBaseSearchMessageComposer, GuildEditFailedMessageEvent, GuildForumThreadsEvent, GuildMemberMgmtFailedMessageEvent, GuildMembershipsMessageEvent, HabboBroadcastMessageEvent, HabboClubExtendOfferMessageEvent, HabboClubOffersMessageEvent, HabboGroupBadgesMessageEvent, HabboGroupDeactivatedMessageEvent, HabboGroupJoinFailedMessageEvent, HabboSearchComposer, HabboSearchResultEvent, HarvestPetMessageComposer, HotelClosedAndOpensEvent, HotelClosesAndWillOpenAtEvent, HotelMergeNameChangeEvent, HotelWillCloseInMinutesEvent, IdentityAccountsEvent, IgnoredUsersEvent, IgnoreResultEvent, IgnoreUserComposer, IgnoreUserIdComposer, InClientLinkEvent, IncomingHeader, InfoFeedEnableMessageEvent, InfoRetrieveMessageComposer, InitCameraMessageEvent, InitDiffieHandshakeEvent, InitDiffieHandshakeMessageComposer, InstantMessageErrorEvent, InterstitialMessageEvent, InterstitialShownMessageComposer, IsBadgeRequestFulfilledEvent, IsOfferGiftableMessageEvent, IssueCloseNotificationMessageEvent, IssueDeletedMessageEvent, IssueInfoMessageEvent, IssuePickFailedMessageEvent, IsUserPartOfCompetitionMessageEvent, ItemDataUpdateMessageEvent, JoinedQueueMessageEvent, JoiningQueueFailedMessageEvent, JoinQueueMessageComposer, JukeboxPlayListFullMessageEvent, JukeboxSongDisksMessageEvent, LagWarningReportMessageComposer, LeaveQueueMessageComposer, LeftQueueMessageEvent, LimitedEditionSoldOutEvent, LimitedOfferAppearingNextMessageEvent, LoadGameMessageEvent, LoadGameUrlEvent, LoveLockFurniFinishedEvent, LoveLockFurniFriendConfirmedEvent, LoveLockFurniStartEvent, MaintenanceStatusMessageEvent, MakeOfferMessageComposer, MarkCatalogNewAdditionsPageOpenedComposer, MarketplaceBuyOfferResultEvent, MarketplaceCancelOfferResultEvent, MarketplaceCanMakeOfferResult, MarketplaceConfigurationEvent, MarketplaceItemStatsEvent, MarketplaceMakeOfferResult, MarketPlaceOffersEvent, MarketplaceOwnOffersEvent, MessageErrorEvent, MessengerInitComposer, MessengerInitEvent, MiniMailNewMessageEvent, MiniMailUnreadCountEvent, ModAlertMessageComposer, ModBanMessageComposer, ModerateMessageMessageComposer, ModerateRoomMessageComposer, ModerateThreadMessageComposer, ModeratorActionMessageComposer, ModeratorActionResultMessageEvent, ModeratorCautionEvent, ModeratorInitMessageEvent, ModeratorMessageEvent, ModeratorRoomInfoEvent, ModeratorToolPreferencesEvent, ModeratorUserInfoEvent, ModKickMessageComposer, ModMessageMessageComposer, ModMuteMessageComposer, ModToolPreferencesComposer, ModToolSanctionComposer, ModTradingLockMessageComposer, MoodlightSettingsComposer, MoodlightSettingsSaveComposer, MoodlightTogggleStateComposer, MOTDNotificationEvent, MuteAllInRoomEvent, MyFavouriteRoomsSearchMessageComposer, MyFrequentRoomHistorySearchMessageComposer, MyFriendsRoomsSearchMessageComposer, MyGuildBasesSearchMessageComposer, MyRecommendedRoomsMessageComposer, MyRoomHistorySearchMessageComposer, MyRoomRightsSearchMessageComposer, MyRoomsSearchMessageComposer, MysteryBoxKeysEvent, MysteryBoxWaitingCanceledMessageComposer, NavigatorCategoryListModeComposer, NavigatorCollapsedEvent, NavigatorDeleteSavedSearchComposer, NavigatorHomeRoomEvent, NavigatorInitComposer, NavigatorLiftedEvent, NavigatorMetadataEvent, NavigatorOpenRoomCreatorEvent, NavigatorSearchCloseComposer, NavigatorSearchComposer, NavigatorSearchesEvent, NavigatorSearchEvent, NavigatorSearchOpenComposer, NavigatorSearchSaveComposer, NavigatorSettingsEvent, NavigatorSettingsSaveComposer, NewConsoleMessageEvent, NewFriendRequestEvent, NewUserExperienceGetGiftsComposer, NewUserExperienceGiftOfferMessageEvent, NewUserExperienceNotCompleteEvent, NewUserExperienceScriptProceedComposer, NoobnessLevelMessageEvent, NoOwnedRoomsAlertMessageEvent, NoSuchFlatEvent, NotEnoughBalanceMessageEvent, NotificationDialogMessageEvent, NowPlayingMessageEvent, ObjectsDataUpdateEvent, ObjectsRollingEvent, OfferRewardDeliveredMessageEvent, OfficialSongIdMessageEvent, OneWayDoorStatusMessageEvent, OpenCampaignCalendarDoorAsStaffComposer, OpenCampaignCalendarDoorComposer, OpenMessageComposer, OpenMysteryTrophyMessageComposer, OpenPetPackageMessageComposer, OpenPetPackageRequestedMessageEvent, OpenPetPackageResultMessageEvent, OpenPresentComposer, OpenQuestTrackerMessageComposer, OpenWelcomeGiftComposer, OutgoingHeader, PeerUsersClassificationMessageComposer, PerformanceLogMessageComposer, PerkAllowancesMessageEvent, PetAddedToInventoryEvent, PetBreedingResultEvent, PetExperienceEvent, PetFigureUpdateEvent, PetInfoEvent, PetInventoryEvent, PetLevelNotificationEvent, PetLevelUpdateMessageEvent, PetMountComposer, PetMoveComposer, PetPlaceComposer, PetPlacingErrorEvent, PetReceivedMessageEvent, PetRemoveComposer, PetRemovedFromInventory, PetRespectComposer, PetRespectNoficationEvent, PetScratchFailedMessageEvent, PetSelectedMessageComposer, PetStatusUpdateEvent, PetSupplementComposer, PetSupplementedNotificationEvent, PetTrainingPanelMessageEvent, PhoneCollectionStateMessageEvent, PhotoCompetitionMessageComposer, PickIssuesMessageComposer, PlayListMessageEvent, PlayListSongAddedMessageEvent, PollAnswerComposer, PollContentsEvent, PollErrorEvent, PollOfferEvent, PollRejectComposer, PollStartComposer, PongMessageComposer, PopularRoomsSearchMessageComposer, PopularRoomTagsResultEvent, PostMessageMessageComposer, PostMessageMessageEvent, PostQuizAnswersComposer, PostThreadMessageEvent, PresentOpenedMessageEvent, ProductOfferEvent, PromoArticlesMessageEvent, PublishPhotoMessageComposer, PurchaseBasicMembershipExtensionComposer, PurchaseErrorMessageEvent, PurchaseFromCatalogAsGiftComposer, PurchaseFromCatalogComposer, PurchaseNotAllowedMessageEvent, PurchaseOKMessageEvent, PurchasePhotoMessageComposer, PurchaseRoomAdMessageComposer, PurchaseTargetedOfferComposer, PurchaseVipMembershipExtensionComposer, QuestCancelledMessageEvent, QuestCompletedMessageEvent, QuestDailyMessageEvent, QuestionAnsweredEvent, QuestionEvent, QuestionFinishedEvent, QuestMessageEvent, QuestsMessageEvent, QuizDataMessageEvent, QuizResultsMessageEvent, RateFlatMessageComposer, RecycleItemsMessageComposer, RecyclerFinishedMessageEvent, RecyclerStatusMessageEvent, RedeemCommunityGoalPrizeMessageComposer, RedeemItemClothingComposer, RedeemMarketplaceOfferCreditsMessageComposer, RedeemVoucherMessageComposer, RejectQuestMessageComposer, RelationshipStatusInfoEvent, ReleaseIssuesMessageComposer, RemainingMuteEvent, RemoveAllRightsMessageComposer, RemoveFriendComposer, RemoveJukeboxDiskComposer, RemoveOwnRoomRightsRoomMessageComposer, RemovePetSaddleComposer, RemoveWallItemComposer, RenderRoomMessageComposer, RenderRoomThumbnailMessageComposer, RentableSpaceCancelRentMessageComposer, RentableSpaceRentFailedMessageEvent, RentableSpaceRentMessageComposer, RentableSpaceRentOkMessageEvent, RentableSpaceStatusMessageComposer, RentableSpaceStatusMessageEvent, RequestABadgeComposer, RequestAchievementsMessageComposer, RequestBadgesComposer, RequestBotCommandConfigurationComposer, RequestCameraConfigurationComposer, RequestFriendComposer, RequestFurniInventoryWhenNotInRoomComposer, RequestPetInfoComposer, RequestPetsComposer, RequestSpamWallPostItMessageEvent, ResetPhoneNumberStateMessageComposer, ResetResolutionAchievementMessageComposer, RespectReceivedEvent, RestoreClientMessageEvent, RoomAdErrorEvent, RoomAdEventTabAdClickedComposer, RoomAdEventTabViewedComposer, RoomAdPurchaseInfoEvent, RoomAdPurchaseInitiatedComposer, RoomAdSearchMessageComposer, RoomAmbassadorAlertComposer, RoomBannedUsersComposer, RoomBanUserComposer, RoomChatlogEvent, RoomChatSettingsEvent, RoomCompetitionInitMessageComposer, RoomDeleteComposer, RoomDimmerPresetsEvent, RoomDoorbellAcceptedEvent, RoomDoorbellAccessComposer, RoomEnterComposer, RoomEnterErrorEvent, RoomEnterEvent, RoomEntryInfoMessageEvent, RoomEntryTileMessageEvent, RoomEventCancelEvent, RoomEventEvent, RoomFilterSettingsMessageEvent, RoomForwardEvent, RoomGiveRightsComposer, RoomHeightMapEvent, RoomHeightMapUpdateEvent, RoomInviteErrorEvent, RoomInviteEvent, RoomKickUserComposer, RoomMessageNotificationMessageEvent, RoomMuteComposer, RoomMuteUserComposer, RoomNetworkOpenConnectionMessageComposer, RoomOccupiedTilesMessageEvent, RoomPaintEvent, RoomPollResultEvent, RoomReadyMessageEvent, RoomRightsClearEvent, RoomRightsEvent, RoomRightsOwnerEvent, RoomScoreEvent, RoomSettingsComposer, RoomSettingsDataEvent, RoomSettingsErrorEvent, RoomSettingsSavedEvent, RoomSettingsSaveErrorEvent, RoomSettingsUpdatedEvent, RoomsWhereMyFriendsAreSearchMessageComposer, RoomsWithHighestScoreSearchMessageComposer, RoomTakeRightsComposer, RoomTextSearchMessageComposer, RoomThumbnailUpdateResultEvent, RoomUnbanUserComposer, RoomUnitActionComposer, RoomUnitBackgroundComposer, RoomUnitChatComposer, RoomUnitChatEvent, RoomUnitChatShoutComposer, RoomUnitChatShoutEvent, RoomUnitChatStyleComposer, RoomUnitChatWhisperComposer, RoomUnitChatWhisperEvent, RoomUnitDanceComposer, RoomUnitDanceEvent, RoomUnitDropHandItemComposer, RoomUnitEffectEvent, RoomUnitEvent, RoomUnitExpressionEvent, RoomUnitGiveHandItemComposer, RoomUnitGiveHandItemPetComposer, RoomUnitHandItemEvent, RoomUnitHandItemReceivedEvent, RoomUnitIdleEvent, RoomUnitInfoEvent, RoomUnitLookComposer, RoomUnitNumberEvent, RoomUnitPostureComposer, RoomUnitRemoveEvent, RoomUnitSignComposer, RoomUnitStatusEvent, RoomUnitTypingEvent, RoomUnitTypingStartComposer, RoomUnitTypingStopComposer, RoomUnitWalkComposer, RoomUsersClassificationMessageComposer, RoomUsersWithRightsComposer, RoomVisitsEvent, RoomVisualizationSettingsEvent, SanctionStatusEvent, SaveRoomSettingsComposer, SaveWardrobeOutfitMessageComposer, ScrGetKickbackInfoMessageComposer, ScrSendKickbackInfoMessageEvent, SearchFaqsMessageComposer, SeasonalCalendarDailyOfferMessageEvent, SeasonalQuestsMessageEvent, SecondsUntilMessageEvent, SelectClubGiftComposer, SellablePetPalettesMessageEvent, SendMessageComposer, SendRoomInviteComposer, SetActivatedBadgesComposer, SetClothingChangeDataMessageComposer, SetItemDataMessageComposer, SetObjectDataMessageComposer, SetPhoneNumberVerificationStatusMessageComposer, SetRelationshipStatusComposer, SetRoomSessionTagsMessageComposer, SetTargetedOfferStateComposer, SetYoutubeDisplayPlaylistMessageComposer, ShopTargetedOfferViewedComposer, ShowEnforceRoomCategoryDialogEvent, ShowMysteryBoxWaitMessageEvent, SimpleAlertMessageEvent, SSOTicketMessageComposer, StartCampaignMessageComposer, StartRoomPollEvent, SubmitRoomToCompetitionMessageComposer, TalentLevelUpEvent, TalentTrackComposer, TalentTrackLevelMessageEvent, TalentTrackMessageEvent, TargetedOfferEvent, TargetedOfferNotFoundEvent, ThreadMessagesMessageEvent, ThumbnailStatusMessageEvent, TogglePetBreedingComposer, TogglePetRidingComposer, ToggleStaffPickMessageComposer, TradingAcceptComposer, TradingAcceptEvent, TradingCancelComposer, TradingCloseComposer, TradingCloseEvent, TradingCompletedEvent, TradingConfirmationComposer, TradingConfirmationEvent, TradingListAddItemComposer, TradingListAddItemsComposer, TradingListItemEvent, TradingListItemRemoveComposer, TradingNoSuchItemEvent, TradingNotOpenEvent, TradingOpenComposer, TradingOpenEvent, TradingOpenFailedEvent, TradingOtherNotAllowedEvent, TradingUnacceptComposer, TradingYouAreNotAllowedEvent, TraxSongInfoMessageEvent, TryPhoneNumberMessageComposer, TryPhoneNumberResultMessageEvent, TryVerificationCodeResultMessageEvent, UnblockGroupMemberMessageComposer, UnignoreUserComposer, UniqueIDMessageComposer, UnloadGameMessageEvent, UnreadForumsCountMessageEvent, UnseenItemsEvent, UnseenResetCategoryComposer, UnseenResetItemsComposer, UpdateActionMessageComposer, UpdateConditionMessageComposer, UpdateFloorPropertiesMessageComposer, UpdateForumReadMarkerMessageComposer, UpdateForumSettingsMessageComposer, UpdateFurniturePositionComposer, UpdateHomeRoomMessageComposer, UpdateMessageMessageEvent, UpdateRoomCategoryAndTradeSettingsComposer, UpdateRoomFilterMessageComposer, UpdateRoomThumbnailMessageComposer, UpdateThreadMessageComposer, UpdateThreadMessageEvent, UpdateTriggerMessageComposer, UsePetProductComposer, UserBannedMessageEvent, UserChatlogEvent, UserClassificationMessageEvent, UserCreditsEvent, UserCurrencyComposer, UserCurrencyEvent, UserCurrentBadgesComposer, UserCurrentBadgesEvent, UserEventCatsEvent, UserFigureComposer, UserFlatCatsEvent, UserGameAchievementsMessageEvent, UserInfoEvent, UserMottoComposer, UserNameChangeMessageEvent, UserPermissionsEvent, UserProfileComposer, UserProfileEvent, UserRelationshipsComposer, UserRespectComposer, UserSettingsCameraFollowComposer, UserSettingsEvent, UserSettingsOldChatComposer, UserSettingsRoomInvitesComposer, UserSettingsSoundComposer, UserSongDisksInventoryMessageEvent, UserSubscriptionComposer, UserSubscriptionEvent, UserTagsMessageEvent, UserUnbannedFromRoomEvent, UserWardrobePageEvent, VerifyCodeMessageComposer, VersionCheckMessageComposer, VisitUserComposer, VoteForRoomMessageComposer, VotePollCounterMessageComposer, VoucherRedeemErrorMessageEvent, VoucherRedeemOkMessageEvent, WardrobeMessageEvent, WeeklyCompetitiveFriendsLeaderboardEvent, WeeklyCompetitiveLeaderboardEvent, WeeklyGameRewardEvent, WeeklyGameRewardWinnersEvent, WelcomeGiftChangeEmailComposer, WelcomeGiftChangeEmailResultEvent, WelcomeGiftStatusEvent, WiredFurniActionEvent, WiredFurniConditionEvent, WiredFurniTriggerEvent, WiredOpenEvent, WiredRewardResultMessageEvent, WiredSaveSuccessEvent, WiredValidationErrorEvent, YouArePlayingGameEvent, YouAreSpectatorMessageEvent, YoutubeControlVideoMessageEvent, YoutubeDisplayPlaylistsEvent, YoutubeDisplayVideoMessageEvent, ClickUserMessageComposer } from './messages'; +import { PurchaseCatalogPrefixComposer, PurchaseNickIconComposer, PurchasePrefixComposer, RequestNickIconsComposer, SetActiveNickIconComposer, SetActivePrefixComposer, SetDisplayOrderComposer, UserNickIconsEvent } from './messages'; import { WiredMonitorDataEvent, WiredMonitorRequestComposer, WiredRoomSettingsDataEvent, WiredRoomSettingsRequestComposer, WiredRoomSettingsSaveComposer, WiredUserInspectMoveComposer, WiredUserVariableManageComposer, WiredUserVariableUpdateComposer, WiredUserVariablesDataEvent, WiredUserVariablesRequestComposer } from './messages'; import { WiredMovementsEvent } from './messages'; import { ConfInvisStateMessageEvent } from './messages'; import { HanditemBlockStateMessageEvent } from './messages'; +import { TranslationLanguagesEvent, TranslationLanguagesRequestComposer, TranslationResultEvent, TranslationTextRequestComposer } from './messages'; export class NitroMessages implements IMessageConfiguration { private _events: Map; @@ -497,6 +499,8 @@ export class NitroMessages implements IMessageConfiguration this._events.set(IncomingHeader.WIRED_USER_VARIABLES_DATA, WiredUserVariablesDataEvent); this._events.set(IncomingHeader.CONF_INVIS_STATE, ConfInvisStateMessageEvent); this._events.set(IncomingHeader.HANDITEM_BLOCK_STATE, HanditemBlockStateMessageEvent); + this._events.set(IncomingHeader.TRANSLATION_LANGUAGES, TranslationLanguagesEvent); + this._events.set(IncomingHeader.TRANSLATION_RESULT, TranslationResultEvent); this._events.set(IncomingHeader.WIRED_REWARD, WiredRewardResultMessageEvent); this._events.set(IncomingHeader.WIRED_SAVE, WiredSaveSuccessEvent); this._events.set(IncomingHeader.WIRED_ERROR, WiredValidationErrorEvent); @@ -595,10 +599,8 @@ export class NitroMessages implements IMessageConfiguration // Custom packets this._events.set(IncomingHeader.AREA_HIDE, AreaHideMessageEvent); - // Custom Prefixes - // this._events.set(IncomingHeader.USER_PREFIXES, UserPrefixesEvent); - // this._events.set(IncomingHeader.PREFIX_RECEIVED, PrefixReceivedEvent); - // this._events.set(IncomingHeader.ACTIVE_PREFIX_UPDATED, ActivePrefixUpdatedEvent); + // Nick Icons + this._events.set(IncomingHeader.USER_NICK_ICONS, UserNickIconsEvent); } private registerComposers(): void @@ -1074,6 +1076,8 @@ export class NitroMessages implements IMessageConfiguration this._composers.set(OutgoingHeader.WIRED_USER_VARIABLE_UPDATE, WiredUserVariableUpdateComposer); this._composers.set(OutgoingHeader.WIRED_USER_VARIABLE_MANAGE, WiredUserVariableManageComposer); this._composers.set(OutgoingHeader.WIRED_USER_INSPECT_MOVE, WiredUserInspectMoveComposer); + this._composers.set(OutgoingHeader.TRANSLATION_LANGUAGES_REQUEST, TranslationLanguagesRequestComposer); + this._composers.set(OutgoingHeader.TRANSLATION_TEXT_REQUEST, TranslationTextRequestComposer); this._composers.set(OutgoingHeader.WIRED_OPEN, OpenMessageComposer); this._composers.set(OutgoingHeader.WIRED_ACTION_SAVE, UpdateActionMessageComposer); this._composers.set(OutgoingHeader.WIRED_CONDITION_SAVE, UpdateConditionMessageComposer); @@ -1236,11 +1240,14 @@ export class NitroMessages implements IMessageConfiguration this._composers.set(OutgoingHeader.RENTABLE_EXTEND_RENT_OR_BUYOUT_FURNI, ExtendRentOrBuyoutFurniMessageComposer); this._composers.set(OutgoingHeader.RENTABLE_GET_RENT_OR_BUYOUT_OFFER, GetRentOrBuyoutOfferMessageComposer); - // Custom Prefixes - // this._composers.set(OutgoingHeader.REQUEST_PREFIXES, RequestPrefixesComposer); - // this._composers.set(OutgoingHeader.SET_ACTIVE_PREFIX, SetActivePrefixComposer); - // this._composers.set(OutgoingHeader.DELETE_PREFIX, DeletePrefixComposer); - // this._composers.set(OutgoingHeader.PURCHASE_PREFIX, PurchasePrefixComposer); + // Nick Icons + this._composers.set(OutgoingHeader.REQUEST_NICK_ICONS, RequestNickIconsComposer); + this._composers.set(OutgoingHeader.PURCHASE_NICK_ICON, PurchaseNickIconComposer); + this._composers.set(OutgoingHeader.SET_ACTIVE_NICK_ICON, SetActiveNickIconComposer); + this._composers.set(OutgoingHeader.SET_ACTIVE_PREFIX, SetActivePrefixComposer); + this._composers.set(OutgoingHeader.PURCHASE_PREFIX, PurchasePrefixComposer); + this._composers.set(OutgoingHeader.PURCHASE_CATALOG_PREFIX, PurchaseCatalogPrefixComposer); + this._composers.set(OutgoingHeader.SET_DISPLAY_ORDER, SetDisplayOrderComposer); } public get events(): Map diff --git a/packages/communication/src/index.ts b/packages/communication/src/index.ts index 916eaf1..9d63e66 100644 --- a/packages/communication/src/index.ts +++ b/packages/communication/src/index.ts @@ -76,6 +76,7 @@ export * from './messages/incoming/roomsettings'; export * from './messages/incoming/security'; export * from './messages/incoming/sound'; export * from './messages/incoming/talent'; +export * from './messages/incoming/translation'; export * from './messages/incoming/user'; export * from './messages/incoming/user/access'; export * from './messages/incoming/user/data'; @@ -153,6 +154,7 @@ export * from './messages/outgoing/roomsettings'; export * from './messages/outgoing/sound'; export * from './messages/outgoing/talent'; export * from './messages/outgoing/tracking'; +export * from './messages/outgoing/translation'; export * from './messages/outgoing/user'; export * from './messages/outgoing/user/data'; export * from './messages/outgoing/user/inventory'; @@ -233,6 +235,7 @@ export * from './messages/parser/roomsettings'; export * from './messages/parser/security'; export * from './messages/parser/sound'; export * from './messages/parser/talent'; +export * from './messages/parser/translation'; export * from './messages/parser/user'; export * from './messages/parser/user/access'; export * from './messages/parser/user/data'; diff --git a/packages/communication/src/messages/incoming/IncomingHeader.ts b/packages/communication/src/messages/incoming/IncomingHeader.ts index 88760a1..d87a735 100644 --- a/packages/communication/src/messages/incoming/IncomingHeader.ts +++ b/packages/communication/src/messages/incoming/IncomingHeader.ts @@ -274,6 +274,8 @@ export class IncomingHeader public static WIRED_USER_VARIABLES_DATA = 5103; public static CONF_INVIS_STATE = 5104; public static HANDITEM_BLOCK_STATE = 5105; + public static TRANSLATION_LANGUAGES = 5106; + public static TRANSLATION_RESULT = 5107; public static WIRED_OPEN = 1830; public static WIRED_REWARD = 178; public static WIRED_SAVE = 1155; @@ -495,4 +497,5 @@ export class IncomingHeader public static USER_PREFIXES = 7001; public static PREFIX_RECEIVED = 7002; public static ACTIVE_PREFIX_UPDATED = 7003; + public static USER_NICK_ICONS = 7004; } diff --git a/packages/communication/src/messages/incoming/index.ts b/packages/communication/src/messages/incoming/index.ts index ff6445c..a61a7ed 100644 --- a/packages/communication/src/messages/incoming/index.ts +++ b/packages/communication/src/messages/incoming/index.ts @@ -68,6 +68,7 @@ export * from './roomsettings'; export * from './security'; export * from './sound'; export * from './talent'; +export * from './translation'; export * from './user'; export * from './user/access'; export * from './user/data'; diff --git a/packages/communication/src/messages/incoming/inventory/index.ts b/packages/communication/src/messages/incoming/inventory/index.ts index 9109eb5..b23d7fa 100644 --- a/packages/communication/src/messages/incoming/inventory/index.ts +++ b/packages/communication/src/messages/incoming/inventory/index.ts @@ -4,6 +4,7 @@ export * from './badges'; export * from './clothes'; export * from './furni'; export * from './furni/gifts'; +export * from './nickicons'; export * from './pets'; export * from './prefixes'; export * from './trading'; diff --git a/packages/communication/src/messages/incoming/inventory/nickicons/UserNickIconsEvent.ts b/packages/communication/src/messages/incoming/inventory/nickicons/UserNickIconsEvent.ts new file mode 100644 index 0000000..1efed58 --- /dev/null +++ b/packages/communication/src/messages/incoming/inventory/nickicons/UserNickIconsEvent.ts @@ -0,0 +1,16 @@ +import { IMessageEvent } from '@nitrots/api'; +import { MessageEvent } from '@nitrots/events'; +import { UserNickIconsParser } from '../../../parser'; + +export class UserNickIconsEvent extends MessageEvent implements IMessageEvent +{ + constructor(callBack: Function) + { + super(callBack, UserNickIconsParser); + } + + public getParser(): UserNickIconsParser + { + return this.parser as UserNickIconsParser; + } +} diff --git a/packages/communication/src/messages/incoming/inventory/nickicons/index.ts b/packages/communication/src/messages/incoming/inventory/nickicons/index.ts new file mode 100644 index 0000000..f9f0ba9 --- /dev/null +++ b/packages/communication/src/messages/incoming/inventory/nickicons/index.ts @@ -0,0 +1 @@ +export * from './UserNickIconsEvent'; diff --git a/packages/communication/src/messages/incoming/translation/TranslationLanguagesEvent.ts b/packages/communication/src/messages/incoming/translation/TranslationLanguagesEvent.ts new file mode 100644 index 0000000..28937a9 --- /dev/null +++ b/packages/communication/src/messages/incoming/translation/TranslationLanguagesEvent.ts @@ -0,0 +1,16 @@ +import { IMessageEvent } from '@nitrots/api'; +import { MessageEvent } from '@nitrots/events'; +import { TranslationLanguagesParser } from '../../parser'; + +export class TranslationLanguagesEvent extends MessageEvent implements IMessageEvent +{ + constructor(callBack: Function) + { + super(callBack, TranslationLanguagesParser); + } + + public getParser(): TranslationLanguagesParser + { + return this.parser as TranslationLanguagesParser; + } +} diff --git a/packages/communication/src/messages/incoming/translation/TranslationResultEvent.ts b/packages/communication/src/messages/incoming/translation/TranslationResultEvent.ts new file mode 100644 index 0000000..96984ed --- /dev/null +++ b/packages/communication/src/messages/incoming/translation/TranslationResultEvent.ts @@ -0,0 +1,16 @@ +import { IMessageEvent } from '@nitrots/api'; +import { MessageEvent } from '@nitrots/events'; +import { TranslationResultParser } from '../../parser'; + +export class TranslationResultEvent extends MessageEvent implements IMessageEvent +{ + constructor(callBack: Function) + { + super(callBack, TranslationResultParser); + } + + public getParser(): TranslationResultParser + { + return this.parser as TranslationResultParser; + } +} diff --git a/packages/communication/src/messages/incoming/translation/index.ts b/packages/communication/src/messages/incoming/translation/index.ts new file mode 100644 index 0000000..0258019 --- /dev/null +++ b/packages/communication/src/messages/incoming/translation/index.ts @@ -0,0 +1,2 @@ +export * from './TranslationLanguagesEvent'; +export * from './TranslationResultEvent'; diff --git a/packages/communication/src/messages/outgoing/OutgoingHeader.ts b/packages/communication/src/messages/outgoing/OutgoingHeader.ts index 3393578..52599f2 100644 --- a/packages/communication/src/messages/outgoing/OutgoingHeader.ts +++ b/packages/communication/src/messages/outgoing/OutgoingHeader.ts @@ -278,6 +278,8 @@ export class OutgoingHeader public static WIRED_USER_VARIABLE_UPDATE = 10025; public static WIRED_USER_VARIABLE_MANAGE = 10026; public static WIRED_USER_INSPECT_MOVE = 10027; + public static TRANSLATION_LANGUAGES_REQUEST = 10032; + public static TRANSLATION_TEXT_REQUEST = 10033; public static WIRED_OPEN = 768; public static WIRED_TRIGGER_SAVE = 1520; public static GET_ITEM_DATA = 3964; @@ -510,4 +512,9 @@ export class OutgoingHeader public static SET_ACTIVE_PREFIX = 7012; public static DELETE_PREFIX = 7013; public static PURCHASE_PREFIX = 7014; + public static REQUEST_NICK_ICONS = 7015; + public static PURCHASE_NICK_ICON = 7016; + public static SET_ACTIVE_NICK_ICON = 7017; + public static PURCHASE_CATALOG_PREFIX = 7018; + public static SET_DISPLAY_ORDER = 7019; } diff --git a/packages/communication/src/messages/outgoing/index.ts b/packages/communication/src/messages/outgoing/index.ts index 894d96d..dfea14d 100644 --- a/packages/communication/src/messages/outgoing/index.ts +++ b/packages/communication/src/messages/outgoing/index.ts @@ -66,6 +66,7 @@ export * from './roomsettings'; export * from './sound'; export * from './talent'; export * from './tracking'; +export * from './translation'; export * from './user'; export * from './user/data'; export * from './user/inventory'; diff --git a/packages/communication/src/messages/outgoing/inventory/index.ts b/packages/communication/src/messages/outgoing/inventory/index.ts index 59aebf7..0df4fd5 100644 --- a/packages/communication/src/messages/outgoing/inventory/index.ts +++ b/packages/communication/src/messages/outgoing/inventory/index.ts @@ -2,6 +2,7 @@ export * from './avatareffect'; export * from './badges'; export * from './bots'; export * from './furni'; +export * from './nickicons'; export * from './pets'; export * from './prefixes'; export * from './trading'; diff --git a/packages/communication/src/messages/outgoing/inventory/nickicons/PurchaseNickIconComposer.ts b/packages/communication/src/messages/outgoing/inventory/nickicons/PurchaseNickIconComposer.ts new file mode 100644 index 0000000..6cf6f91 --- /dev/null +++ b/packages/communication/src/messages/outgoing/inventory/nickicons/PurchaseNickIconComposer.ts @@ -0,0 +1,21 @@ +import { IMessageComposer } from '@nitrots/api'; + +export class PurchaseNickIconComposer implements IMessageComposer> +{ + private _data: ConstructorParameters; + + constructor(iconKey: string) + { + this._data = [ iconKey ]; + } + + public getMessageArray() + { + return this._data; + } + + public dispose(): void + { + return; + } +} diff --git a/packages/communication/src/messages/outgoing/inventory/nickicons/RequestNickIconsComposer.ts b/packages/communication/src/messages/outgoing/inventory/nickicons/RequestNickIconsComposer.ts new file mode 100644 index 0000000..a241f87 --- /dev/null +++ b/packages/communication/src/messages/outgoing/inventory/nickicons/RequestNickIconsComposer.ts @@ -0,0 +1,21 @@ +import { IMessageComposer } from '@nitrots/api'; + +export class RequestNickIconsComposer implements IMessageComposer> +{ + private _data: ConstructorParameters; + + constructor() + { + this._data = []; + } + + public getMessageArray() + { + return this._data; + } + + public dispose(): void + { + return; + } +} diff --git a/packages/communication/src/messages/outgoing/inventory/nickicons/SetActiveNickIconComposer.ts b/packages/communication/src/messages/outgoing/inventory/nickicons/SetActiveNickIconComposer.ts new file mode 100644 index 0000000..8c74343 --- /dev/null +++ b/packages/communication/src/messages/outgoing/inventory/nickicons/SetActiveNickIconComposer.ts @@ -0,0 +1,21 @@ +import { IMessageComposer } from '@nitrots/api'; + +export class SetActiveNickIconComposer implements IMessageComposer> +{ + private _data: ConstructorParameters; + + constructor(iconId: number) + { + this._data = [ iconId ]; + } + + public getMessageArray() + { + return this._data; + } + + public dispose(): void + { + return; + } +} diff --git a/packages/communication/src/messages/outgoing/inventory/nickicons/index.ts b/packages/communication/src/messages/outgoing/inventory/nickicons/index.ts new file mode 100644 index 0000000..d52be18 --- /dev/null +++ b/packages/communication/src/messages/outgoing/inventory/nickicons/index.ts @@ -0,0 +1,3 @@ +export * from './PurchaseNickIconComposer'; +export * from './RequestNickIconsComposer'; +export * from './SetActiveNickIconComposer'; diff --git a/packages/communication/src/messages/outgoing/inventory/prefixes/PurchaseCatalogPrefixComposer.ts b/packages/communication/src/messages/outgoing/inventory/prefixes/PurchaseCatalogPrefixComposer.ts new file mode 100644 index 0000000..d2210b5 --- /dev/null +++ b/packages/communication/src/messages/outgoing/inventory/prefixes/PurchaseCatalogPrefixComposer.ts @@ -0,0 +1,21 @@ +import { IMessageComposer } from '../../../../../api'; + +export class PurchaseCatalogPrefixComposer implements IMessageComposer> +{ + private _data: ConstructorParameters; + + constructor(prefixId: number) + { + this._data = [ prefixId ]; + } + + public getMessageArray() + { + return this._data; + } + + public dispose(): void + { + this._data = null; + } +} diff --git a/packages/communication/src/messages/outgoing/inventory/prefixes/PurchasePrefixComposer.ts b/packages/communication/src/messages/outgoing/inventory/prefixes/PurchasePrefixComposer.ts index 29e5ec9..e040c3f 100644 --- a/packages/communication/src/messages/outgoing/inventory/prefixes/PurchasePrefixComposer.ts +++ b/packages/communication/src/messages/outgoing/inventory/prefixes/PurchasePrefixComposer.ts @@ -4,9 +4,9 @@ export class PurchasePrefixComposer implements IMessageComposer; - constructor(text: string, color: string, icon: string = '', effect: string = '') + constructor(text: string, color: string, icon: string = '', effect: string = '', font: string = '') { - this._data = [ text, color, icon, effect ]; + this._data = [ text, color, icon, effect, font ]; } public getMessageArray() diff --git a/packages/communication/src/messages/outgoing/inventory/prefixes/SetDisplayOrderComposer.ts b/packages/communication/src/messages/outgoing/inventory/prefixes/SetDisplayOrderComposer.ts new file mode 100644 index 0000000..afcb9f9 --- /dev/null +++ b/packages/communication/src/messages/outgoing/inventory/prefixes/SetDisplayOrderComposer.ts @@ -0,0 +1,21 @@ +import { IMessageComposer } from '../../../../../api'; + +export class SetDisplayOrderComposer implements IMessageComposer> +{ + private _data: ConstructorParameters; + + constructor(displayOrder: string) + { + this._data = [ displayOrder ]; + } + + public getMessageArray() + { + return this._data; + } + + public dispose(): void + { + this._data = null; + } +} diff --git a/packages/communication/src/messages/outgoing/inventory/prefixes/index.ts b/packages/communication/src/messages/outgoing/inventory/prefixes/index.ts index e4c2b5c..e51de8a 100644 --- a/packages/communication/src/messages/outgoing/inventory/prefixes/index.ts +++ b/packages/communication/src/messages/outgoing/inventory/prefixes/index.ts @@ -1,4 +1,6 @@ export * from './DeletePrefixComposer'; +export * from './PurchaseCatalogPrefixComposer'; export * from './PurchasePrefixComposer'; export * from './RequestPrefixesComposer'; +export * from './SetDisplayOrderComposer'; export * from './SetActivePrefixComposer'; diff --git a/packages/communication/src/messages/outgoing/translation/TranslationLanguagesRequestComposer.ts b/packages/communication/src/messages/outgoing/translation/TranslationLanguagesRequestComposer.ts new file mode 100644 index 0000000..c4a0143 --- /dev/null +++ b/packages/communication/src/messages/outgoing/translation/TranslationLanguagesRequestComposer.ts @@ -0,0 +1,21 @@ +import { IMessageComposer } from '@nitrots/api'; + +export class TranslationLanguagesRequestComposer implements IMessageComposer> +{ + private _data: ConstructorParameters; + + constructor(displayLanguage: string = 'en') + { + this._data = [displayLanguage]; + } + + public getMessageArray() + { + return this._data; + } + + public dispose(): void + { + return; + } +} diff --git a/packages/communication/src/messages/outgoing/translation/TranslationTextRequestComposer.ts b/packages/communication/src/messages/outgoing/translation/TranslationTextRequestComposer.ts new file mode 100644 index 0000000..e2ac718 --- /dev/null +++ b/packages/communication/src/messages/outgoing/translation/TranslationTextRequestComposer.ts @@ -0,0 +1,21 @@ +import { IMessageComposer } from '@nitrots/api'; + +export class TranslationTextRequestComposer implements IMessageComposer> +{ + private _data: ConstructorParameters; + + constructor(requestId: number, text: string, targetLanguage: string) + { + this._data = [requestId, text, targetLanguage]; + } + + public getMessageArray() + { + return this._data; + } + + public dispose(): void + { + return; + } +} diff --git a/packages/communication/src/messages/outgoing/translation/index.ts b/packages/communication/src/messages/outgoing/translation/index.ts new file mode 100644 index 0000000..542943a --- /dev/null +++ b/packages/communication/src/messages/outgoing/translation/index.ts @@ -0,0 +1,2 @@ +export * from './TranslationLanguagesRequestComposer'; +export * from './TranslationTextRequestComposer'; diff --git a/packages/communication/src/messages/parser/index.ts b/packages/communication/src/messages/parser/index.ts index aa25b8f..b9898dc 100644 --- a/packages/communication/src/messages/parser/index.ts +++ b/packages/communication/src/messages/parser/index.ts @@ -69,6 +69,7 @@ export * from './roomsettings'; export * from './security'; export * from './sound'; export * from './talent'; +export * from './translation'; export * from './user'; export * from './user/access'; export * from './user/data'; diff --git a/packages/communication/src/messages/parser/inventory/index.ts b/packages/communication/src/messages/parser/inventory/index.ts index 58cb9a2..eaaeba2 100644 --- a/packages/communication/src/messages/parser/inventory/index.ts +++ b/packages/communication/src/messages/parser/inventory/index.ts @@ -3,6 +3,7 @@ export * from './avatareffect'; export * from './badges'; export * from './clothing'; export * from './furniture'; +export * from './nickicons'; export * from './pets'; export * from './prefixes'; export * from './purse'; diff --git a/packages/communication/src/messages/parser/inventory/nickicons/UserNickIconsParser.ts b/packages/communication/src/messages/parser/inventory/nickicons/UserNickIconsParser.ts new file mode 100644 index 0000000..78d2dba --- /dev/null +++ b/packages/communication/src/messages/parser/inventory/nickicons/UserNickIconsParser.ts @@ -0,0 +1,222 @@ +import { IMessageDataWrapper, IMessageParser } from '@nitrots/api'; + +export interface INickIconData +{ + iconKey: string; + displayName: string; + points: number; + pointsType: number; + owned: boolean; + active: boolean; + id: number; +} + +export interface ICustomizePrefixCatalogData +{ + id: number; + displayName: string; + text: string; + color: string; + icon: string; + effect: string; + font: string; + points: number; + pointsType: number; + owned: boolean; + active: boolean; + ownedPrefixId: number; +} + +export interface ICustomizeOwnedPrefixData +{ + id: number; + displayName: string; + text: string; + color: string; + icon: string; + effect: string; + font: string; + active: boolean; + isCustom: boolean; + points: number; + pointsType: number; + catalogPrefixId: number; +} + +export class UserNickIconsParser implements IMessageParser +{ + private _nickIcons: INickIconData[]; + private _displayOrder: string; + private _customPrefixMaxLength: number; + private _customPrefixPriceCredits: number; + private _customPrefixPricePoints: number; + private _customPrefixPointsType: number; + private _customPrefixFontPriceCredits: number; + private _customPrefixFontPricePoints: number; + private _customPrefixFontPointsType: number; + private _prefixCatalog: ICustomizePrefixCatalogData[]; + private _ownedPrefixes: ICustomizeOwnedPrefixData[]; + + public flush(): boolean + { + this._nickIcons = []; + this._displayOrder = 'icon-prefix-name'; + this._customPrefixMaxLength = 15; + this._customPrefixPriceCredits = 0; + this._customPrefixPricePoints = 0; + this._customPrefixPointsType = 0; + this._customPrefixFontPriceCredits = 0; + this._customPrefixFontPricePoints = 0; + this._customPrefixFontPointsType = 0; + this._prefixCatalog = []; + this._ownedPrefixes = []; + return true; + } + + public parse(wrapper: IMessageDataWrapper): boolean + { + if(!wrapper) return false; + + this._nickIcons = []; + this._displayOrder = 'icon-prefix-name'; + this._customPrefixMaxLength = 15; + this._customPrefixPriceCredits = 0; + this._customPrefixPricePoints = 0; + this._customPrefixPointsType = 0; + this._customPrefixFontPriceCredits = 0; + this._customPrefixFontPricePoints = 0; + this._customPrefixFontPointsType = 0; + this._prefixCatalog = []; + this._ownedPrefixes = []; + + let count = wrapper.readInt(); + + while(count > 0) + { + this._nickIcons.push({ + iconKey: wrapper.readString(), + displayName: wrapper.readString(), + points: wrapper.readInt(), + pointsType: wrapper.readInt(), + owned: (wrapper.readInt() === 1), + active: (wrapper.readInt() === 1), + id: wrapper.readInt() + }); + + count--; + } + + if(wrapper.bytesAvailable) + { + this._displayOrder = wrapper.readString(); + this._customPrefixMaxLength = wrapper.readInt(); + this._customPrefixPriceCredits = wrapper.readInt(); + this._customPrefixPricePoints = wrapper.readInt(); + this._customPrefixPointsType = wrapper.readInt(); + this._customPrefixFontPriceCredits = wrapper.readInt(); + this._customPrefixFontPricePoints = wrapper.readInt(); + this._customPrefixFontPointsType = wrapper.readInt(); + + let catalogCount = wrapper.readInt(); + + while(catalogCount > 0) + { + this._prefixCatalog.push({ + id: wrapper.readInt(), + displayName: wrapper.readString(), + text: wrapper.readString(), + color: wrapper.readString(), + icon: wrapper.readString(), + effect: wrapper.readString(), + font: wrapper.readString(), + points: wrapper.readInt(), + pointsType: wrapper.readInt(), + owned: (wrapper.readInt() === 1), + active: (wrapper.readInt() === 1), + ownedPrefixId: wrapper.readInt() + }); + + catalogCount--; + } + + let ownedCount = wrapper.readInt(); + + while(ownedCount > 0) + { + this._ownedPrefixes.push({ + id: wrapper.readInt(), + displayName: wrapper.readString(), + text: wrapper.readString(), + color: wrapper.readString(), + icon: wrapper.readString(), + effect: wrapper.readString(), + font: wrapper.readString(), + active: (wrapper.readInt() === 1), + isCustom: (wrapper.readInt() === 1), + points: wrapper.readInt(), + pointsType: wrapper.readInt(), + catalogPrefixId: wrapper.readInt() + }); + + ownedCount--; + } + } + + return true; + } + + public get nickIcons(): INickIconData[] + { + return this._nickIcons; + } + + public get displayOrder(): string + { + return this._displayOrder; + } + + public get customPrefixMaxLength(): number + { + return this._customPrefixMaxLength; + } + + public get customPrefixPriceCredits(): number + { + return this._customPrefixPriceCredits; + } + + public get customPrefixPricePoints(): number + { + return this._customPrefixPricePoints; + } + + public get customPrefixPointsType(): number + { + return this._customPrefixPointsType; + } + + public get customPrefixFontPriceCredits(): number + { + return this._customPrefixFontPriceCredits; + } + + public get customPrefixFontPricePoints(): number + { + return this._customPrefixFontPricePoints; + } + + public get customPrefixFontPointsType(): number + { + return this._customPrefixFontPointsType; + } + + public get prefixCatalog(): ICustomizePrefixCatalogData[] + { + return this._prefixCatalog; + } + + public get ownedPrefixes(): ICustomizeOwnedPrefixData[] + { + return this._ownedPrefixes; + } +} diff --git a/packages/communication/src/messages/parser/inventory/nickicons/index.ts b/packages/communication/src/messages/parser/inventory/nickicons/index.ts new file mode 100644 index 0000000..8a17588 --- /dev/null +++ b/packages/communication/src/messages/parser/inventory/nickicons/index.ts @@ -0,0 +1 @@ +export * from './UserNickIconsParser'; diff --git a/packages/communication/src/messages/parser/inventory/prefixes/ActivePrefixUpdatedParser.ts b/packages/communication/src/messages/parser/inventory/prefixes/ActivePrefixUpdatedParser.ts index 26ce917..f7ec1bf 100644 --- a/packages/communication/src/messages/parser/inventory/prefixes/ActivePrefixUpdatedParser.ts +++ b/packages/communication/src/messages/parser/inventory/prefixes/ActivePrefixUpdatedParser.ts @@ -7,6 +7,7 @@ export class ActivePrefixUpdatedParser implements IMessageParser private _color: string; private _icon: string; private _effect: string; + private _font: string; public flush(): boolean { @@ -15,6 +16,7 @@ export class ActivePrefixUpdatedParser implements IMessageParser this._color = ''; this._icon = ''; this._effect = ''; + this._font = ''; return true; } @@ -27,6 +29,7 @@ export class ActivePrefixUpdatedParser implements IMessageParser this._color = wrapper.readString(); this._icon = wrapper.readString(); this._effect = wrapper.readString(); + this._font = wrapper.readString(); return true; } @@ -36,4 +39,5 @@ export class ActivePrefixUpdatedParser implements IMessageParser public get color(): string { return this._color; } public get icon(): string { return this._icon; } public get effect(): string { return this._effect; } + public get font(): string { return this._font; } } diff --git a/packages/communication/src/messages/parser/inventory/prefixes/PrefixReceivedParser.ts b/packages/communication/src/messages/parser/inventory/prefixes/PrefixReceivedParser.ts index a286a2d..f304764 100644 --- a/packages/communication/src/messages/parser/inventory/prefixes/PrefixReceivedParser.ts +++ b/packages/communication/src/messages/parser/inventory/prefixes/PrefixReceivedParser.ts @@ -7,6 +7,7 @@ export class PrefixReceivedParser implements IMessageParser private _color: string; private _icon: string; private _effect: string; + private _font: string; public flush(): boolean { @@ -15,6 +16,7 @@ export class PrefixReceivedParser implements IMessageParser this._color = ''; this._icon = ''; this._effect = ''; + this._font = ''; return true; } @@ -27,6 +29,7 @@ export class PrefixReceivedParser implements IMessageParser this._color = wrapper.readString(); this._icon = wrapper.readString(); this._effect = wrapper.readString(); + this._font = wrapper.readString(); return true; } @@ -36,4 +39,5 @@ export class PrefixReceivedParser implements IMessageParser public get color(): string { return this._color; } public get icon(): string { return this._icon; } public get effect(): string { return this._effect; } + public get font(): string { return this._font; } } diff --git a/packages/communication/src/messages/parser/inventory/prefixes/UserPrefixesParser.ts b/packages/communication/src/messages/parser/inventory/prefixes/UserPrefixesParser.ts index 26d4342..96d08f2 100644 --- a/packages/communication/src/messages/parser/inventory/prefixes/UserPrefixesParser.ts +++ b/packages/communication/src/messages/parser/inventory/prefixes/UserPrefixesParser.ts @@ -7,6 +7,7 @@ export interface IPrefixData color: string; icon: string; effect: string; + font: string; active: boolean; } @@ -36,6 +37,7 @@ export class UserPrefixesParser implements IMessageParser color: wrapper.readString(), icon: wrapper.readString(), effect: wrapper.readString(), + font: wrapper.readString(), active: wrapper.readInt() === 1 }); diff --git a/packages/communication/src/messages/parser/room/unit/RoomUnitInfoParser.ts b/packages/communication/src/messages/parser/room/unit/RoomUnitInfoParser.ts index bdc78d6..402811a 100644 --- a/packages/communication/src/messages/parser/room/unit/RoomUnitInfoParser.ts +++ b/packages/communication/src/messages/parser/room/unit/RoomUnitInfoParser.ts @@ -7,9 +7,16 @@ export class RoomUnitInfoParser implements IMessageParser private _gender: string; private _motto: string; private _achievementScore: number; - private _backgroundId: number; + private _backgroundId: number; private _standId: number; private _overlayId: number; + private _nickIcon: string; + private _prefixText: string; + private _prefixColor: string; + private _prefixIcon: string; + private _prefixEffect: string; + private _prefixFont: string; + private _displayOrder: string; public flush(): boolean { @@ -18,9 +25,16 @@ export class RoomUnitInfoParser implements IMessageParser this._gender = 'M'; this._motto = null; this._achievementScore = 0; - this._backgroundId = 0; + this._backgroundId = 0; this._standId = 0; this._overlayId = 0; + this._nickIcon = ''; + this._prefixText = ''; + this._prefixColor = ''; + this._prefixIcon = ''; + this._prefixEffect = ''; + this._prefixFont = ''; + this._displayOrder = 'icon-prefix-name'; return true; } @@ -34,9 +48,16 @@ export class RoomUnitInfoParser implements IMessageParser this._gender = wrapper.readString().toLocaleUpperCase(); this._motto = wrapper.readString(); this._achievementScore = wrapper.readInt(); - this._backgroundId = wrapper.readInt(); + this._backgroundId = wrapper.readInt(); this._standId = wrapper.readInt(); - this._overlayId = wrapper.readInt(); + this._overlayId = wrapper.readInt(); + this._nickIcon = (wrapper.bytesAvailable ? wrapper.readString() : ''); + this._prefixText = (wrapper.bytesAvailable ? wrapper.readString() : ''); + this._prefixColor = (wrapper.bytesAvailable ? wrapper.readString() : ''); + this._prefixIcon = (wrapper.bytesAvailable ? wrapper.readString() : ''); + this._prefixEffect = (wrapper.bytesAvailable ? wrapper.readString() : ''); + this._prefixFont = (wrapper.bytesAvailable ? wrapper.readString() : ''); + this._displayOrder = (wrapper.bytesAvailable ? wrapper.readString() : 'icon-prefix-name'); return true; } @@ -80,4 +101,39 @@ export class RoomUnitInfoParser implements IMessageParser { return this._overlayId; } -} \ No newline at end of file + + public get nickIcon(): string + { + return this._nickIcon; + } + + public get prefixText(): string + { + return this._prefixText; + } + + public get prefixColor(): string + { + return this._prefixColor; + } + + public get prefixIcon(): string + { + return this._prefixIcon; + } + + public get prefixEffect(): string + { + return this._prefixEffect; + } + + public get prefixFont(): string + { + return this._prefixFont; + } + + public get displayOrder(): string + { + return this._displayOrder; + } +} diff --git a/packages/communication/src/messages/parser/room/unit/RoomUnitParser.ts b/packages/communication/src/messages/parser/room/unit/RoomUnitParser.ts index 21a50a5..437f4af 100644 --- a/packages/communication/src/messages/parser/room/unit/RoomUnitParser.ts +++ b/packages/communication/src/messages/parser/room/unit/RoomUnitParser.ts @@ -75,6 +75,13 @@ export class RoomUnitParser implements IMessageParser user.figure = figure; user.activityPoints = wrapper.readInt(); user.isModerator = wrapper.readBoolean(); + user.nickIcon = wrapper.readString(); + user.prefixText = wrapper.readString(); + user.prefixColor = wrapper.readString(); + user.prefixIcon = wrapper.readString(); + user.prefixEffect = wrapper.readString(); + user.prefixFont = wrapper.readString(); + user.displayOrder = wrapper.readString(); } else if(type === 2) diff --git a/packages/communication/src/messages/parser/room/unit/UserMessageData.ts b/packages/communication/src/messages/parser/room/unit/UserMessageData.ts index e4e2270..e3964bc 100644 --- a/packages/communication/src/messages/parser/room/unit/UserMessageData.ts +++ b/packages/communication/src/messages/parser/room/unit/UserMessageData.ts @@ -13,6 +13,13 @@ export class UserMessageData private _sex: string = ''; private _figure: string = ''; private _custom: string = ''; + private _nickIcon: string = ''; + private _prefixText: string = ''; + private _prefixColor: string = ''; + private _prefixIcon: string = ''; + private _prefixEffect: string = ''; + private _prefixFont: string = ''; + private _displayOrder: string = 'icon-prefix-name'; private _activityPoints: number = 0; private _background: number = 0; private _stand: number = 0; @@ -437,6 +444,97 @@ export class UserMessageData return this._isModerator; } + public get nickIcon(): string + { + return this._nickIcon; + } + + public set nickIcon(k: string) + { + if(!this._isReadOnly) + { + this._nickIcon = k; + } + } + + public get prefixText(): string + { + return this._prefixText; + } + + public set prefixText(k: string) + { + if(!this._isReadOnly) + { + this._prefixText = k; + } + } + + public get prefixColor(): string + { + return this._prefixColor; + } + + public set prefixColor(k: string) + { + if(!this._isReadOnly) + { + this._prefixColor = k; + } + } + + public get prefixIcon(): string + { + return this._prefixIcon; + } + + public set prefixIcon(k: string) + { + if(!this._isReadOnly) + { + this._prefixIcon = k; + } + } + + public get prefixEffect(): string + { + return this._prefixEffect; + } + + public set prefixEffect(k: string) + { + if(!this._isReadOnly) + { + this._prefixEffect = k; + } + } + + public get prefixFont(): string + { + return this._prefixFont; + } + + public set prefixFont(k: string) + { + if(!this._isReadOnly) + { + this._prefixFont = k; + } + } + + public get displayOrder(): string + { + return this._displayOrder; + } + + public set displayOrder(k: string) + { + if(!this._isReadOnly) + { + this._displayOrder = k; + } + } + public set isModerator(k: boolean) { if(!this._isReadOnly) diff --git a/packages/communication/src/messages/parser/room/unit/chat/RoomUnitChatParser.ts b/packages/communication/src/messages/parser/room/unit/chat/RoomUnitChatParser.ts index 09a30ec..1c47e9f 100644 --- a/packages/communication/src/messages/parser/room/unit/chat/RoomUnitChatParser.ts +++ b/packages/communication/src/messages/parser/room/unit/chat/RoomUnitChatParser.ts @@ -13,6 +13,9 @@ export class RoomUnitChatParser implements IMessageParser private _prefixColor: string; private _prefixIcon: string; private _prefixEffect: string; + private _prefixFont: string; + private _nickIcon: string; + private _displayOrder: string; public flush(): boolean { @@ -27,6 +30,9 @@ export class RoomUnitChatParser implements IMessageParser this._prefixColor = ''; this._prefixIcon = ''; this._prefixEffect = ''; + this._prefixFont = ''; + this._nickIcon = ''; + this._displayOrder = 'icon-prefix-name'; return true; } @@ -48,6 +54,9 @@ export class RoomUnitChatParser implements IMessageParser this._prefixColor = wrapper.readString(); this._prefixIcon = wrapper.readString(); this._prefixEffect = wrapper.readString(); + this._prefixFont = wrapper.readString(); + this._nickIcon = wrapper.readString(); + this._displayOrder = (wrapper.bytesAvailable ? wrapper.readString() : 'icon-prefix-name'); return true; } @@ -124,4 +133,19 @@ export class RoomUnitChatParser implements IMessageParser { return this._prefixEffect; } + + public get prefixFont(): string + { + return this._prefixFont; + } + + public get nickIcon(): string + { + return this._nickIcon; + } + + public get displayOrder(): string + { + return this._displayOrder; + } } diff --git a/packages/communication/src/messages/parser/translation/TranslationLanguagesParser.ts b/packages/communication/src/messages/parser/translation/TranslationLanguagesParser.ts new file mode 100644 index 0000000..f000e7b --- /dev/null +++ b/packages/communication/src/messages/parser/translation/TranslationLanguagesParser.ts @@ -0,0 +1,59 @@ +import { IMessageDataWrapper, IMessageParser } from '@nitrots/api'; + +export interface ITranslationLanguageData +{ + code: string; + name: string; +} + +export class TranslationLanguagesParser implements IMessageParser +{ + private _success: boolean; + private _errorMessage: string; + private _languages: ITranslationLanguageData[]; + + public flush(): boolean + { + this._success = false; + this._errorMessage = ''; + this._languages = []; + + return true; + } + + public parse(wrapper: IMessageDataWrapper): boolean + { + if(!wrapper) return false; + + this._success = wrapper.readBoolean(); + this._errorMessage = wrapper.readString(); + this._languages = []; + + const totalLanguages = wrapper.readInt(); + + for(let index = 0; index < totalLanguages; index++) + { + this._languages.push({ + code: wrapper.readString(), + name: wrapper.readString() + }); + } + + return true; + } + + public get success(): boolean + { + return this._success; + } + + public get errorMessage(): string + { + return this._errorMessage; + } + + public get languages(): ITranslationLanguageData[] + { + return this._languages; + } +} diff --git a/packages/communication/src/messages/parser/translation/TranslationResultParser.ts b/packages/communication/src/messages/parser/translation/TranslationResultParser.ts new file mode 100644 index 0000000..fe38178 --- /dev/null +++ b/packages/communication/src/messages/parser/translation/TranslationResultParser.ts @@ -0,0 +1,75 @@ +import { IMessageDataWrapper, IMessageParser } from '@nitrots/api'; + +export class TranslationResultParser implements IMessageParser +{ + private _requestId: number; + private _success: boolean; + private _errorMessage: string; + private _originalText: string; + private _translatedText: string; + private _detectedLanguage: string; + private _targetLanguage: string; + + public flush(): boolean + { + this._requestId = 0; + this._success = false; + this._errorMessage = ''; + this._originalText = ''; + this._translatedText = ''; + this._detectedLanguage = ''; + this._targetLanguage = ''; + + return true; + } + + public parse(wrapper: IMessageDataWrapper): boolean + { + if(!wrapper) return false; + + this._requestId = wrapper.readInt(); + this._success = wrapper.readBoolean(); + this._errorMessage = wrapper.readString(); + this._originalText = wrapper.readString(); + this._translatedText = wrapper.readString(); + this._detectedLanguage = wrapper.readString(); + this._targetLanguage = wrapper.readString(); + + return true; + } + + public get requestId(): number + { + return this._requestId; + } + + public get success(): boolean + { + return this._success; + } + + public get errorMessage(): string + { + return this._errorMessage; + } + + public get originalText(): string + { + return this._originalText; + } + + public get translatedText(): string + { + return this._translatedText; + } + + public get detectedLanguage(): string + { + return this._detectedLanguage; + } + + public get targetLanguage(): string + { + return this._targetLanguage; + } +} diff --git a/packages/communication/src/messages/parser/translation/index.ts b/packages/communication/src/messages/parser/translation/index.ts new file mode 100644 index 0000000..659a213 --- /dev/null +++ b/packages/communication/src/messages/parser/translation/index.ts @@ -0,0 +1,2 @@ +export * from './TranslationLanguagesParser'; +export * from './TranslationResultParser'; diff --git a/packages/communication/src/messages/parser/user/data/UserProfileParser.ts b/packages/communication/src/messages/parser/user/data/UserProfileParser.ts index 497c300..92139c3 100644 --- a/packages/communication/src/messages/parser/user/data/UserProfileParser.ts +++ b/packages/communication/src/messages/parser/user/data/UserProfileParser.ts @@ -19,6 +19,13 @@ export class UserProfileParser implements IMessageParser private _backgroundId: number; private _standId: number; private _overlayId: number; + private _nickIcon: string; + private _prefixText: string; + private _prefixColor: string; + private _prefixIcon: string; + private _prefixEffect: string; + private _prefixFont: string; + private _displayOrder: string; public flush(): boolean { @@ -38,6 +45,13 @@ export class UserProfileParser implements IMessageParser this._backgroundId = 0; this._standId = 0; this._overlayId = 0; + this._nickIcon = ''; + this._prefixText = ''; + this._prefixColor = ''; + this._prefixIcon = ''; + this._prefixEffect = ''; + this._prefixFont = ''; + this._displayOrder = 'icon-prefix-name'; return true; } @@ -71,6 +85,21 @@ export class UserProfileParser implements IMessageParser this._backgroundId = wrapper.readInt(); this._standId = wrapper.readInt(); this._overlayId = wrapper.readInt(); + + if(wrapper.bytesAvailable) + { + this._nickIcon = wrapper.readString(); + + if(wrapper.bytesAvailable) + { + this._prefixText = wrapper.readString(); + this._prefixColor = wrapper.readString(); + this._prefixIcon = wrapper.readString(); + this._prefixEffect = wrapper.readString(); + this._prefixFont = wrapper.readString(); + this._displayOrder = wrapper.readString(); + } + } } return true; @@ -155,4 +184,39 @@ export class UserProfileParser implements IMessageParser { return this._overlayId; } + + public get nickIcon(): string + { + return this._nickIcon; + } + + public get prefixText(): string + { + return this._prefixText; + } + + public get prefixColor(): string + { + return this._prefixColor; + } + + public get prefixIcon(): string + { + return this._prefixIcon; + } + + public get prefixEffect(): string + { + return this._prefixEffect; + } + + public get prefixFont(): string + { + return this._prefixFont; + } + + public get displayOrder(): string + { + return this._displayOrder; + } } diff --git a/packages/configuration/src/ConfigurationManager.ts b/packages/configuration/src/ConfigurationManager.ts index 8a2de97..457adab 100644 --- a/packages/configuration/src/ConfigurationManager.ts +++ b/packages/configuration/src/ConfigurationManager.ts @@ -129,6 +129,11 @@ export class ConfigurationManager implements IConfigurationManager } } + if(value.indexOf('%timestamp%') >= 0) + { + value = value.replace(/%timestamp%/gi, Date.now().toString()); + } + return value; } diff --git a/packages/events/src/session/RoomSessionChatEvent.ts b/packages/events/src/session/RoomSessionChatEvent.ts index 1f3e0ad..59b493a 100644 --- a/packages/events/src/session/RoomSessionChatEvent.ts +++ b/packages/events/src/session/RoomSessionChatEvent.ts @@ -21,6 +21,7 @@ export class RoomSessionChatEvent extends RoomSessionEvent private _objectId: number; private _message: string; private _chatType: number; + private _chatColours: string; private _links: string[]; private _extraParam: number; private _style: number; @@ -28,8 +29,11 @@ export class RoomSessionChatEvent extends RoomSessionEvent private _prefixColor: string; private _prefixIcon: string; private _prefixEffect: string; + private _prefixFont: string; + private _nickIcon: string; + private _displayOrder: string; - constructor(type: string, session: IRoomSession, objectId: number, message: string, chatType: number, style: number = 0, chatColours: string[], links: string[] = null, extraParam: number = -1, prefixText: string = '', prefixColor: string = '', prefixIcon: string = '', prefixEffect: string = '') + constructor(type: string, session: IRoomSession, objectId: number, message: string, chatType: number, style: number = 0, chatColours: string = '', links: string[] = null, extraParam: number = -1, prefixText: string = '', prefixColor: string = '', prefixIcon: string = '', prefixEffect: string = '', prefixFont: string = '', nickIcon: string = '', displayOrder: string = 'icon-prefix-name') { super(type, session); @@ -44,6 +48,9 @@ export class RoomSessionChatEvent extends RoomSessionEvent this._prefixColor = prefixColor; this._prefixIcon = prefixIcon; this._prefixEffect = prefixEffect; + this._prefixFont = prefixFont; + this._nickIcon = nickIcon; + this._displayOrder = displayOrder; } public get objectId(): number @@ -76,7 +83,7 @@ export class RoomSessionChatEvent extends RoomSessionEvent return this._style; } - public get chatColours(): string[] + public get chatColours(): string { return this._chatColours; } @@ -100,4 +107,19 @@ export class RoomSessionChatEvent extends RoomSessionEvent { return this._prefixEffect; } + + public get prefixFont(): string + { + return this._prefixFont; + } + + public get nickIcon(): string + { + return this._nickIcon; + } + + public get displayOrder(): string + { + return this._displayOrder; + } } diff --git a/packages/events/src/session/RoomSessionUserFigureUpdateEvent.ts b/packages/events/src/session/RoomSessionUserFigureUpdateEvent.ts index 6ba82e3..dfa3d15 100644 --- a/packages/events/src/session/RoomSessionUserFigureUpdateEvent.ts +++ b/packages/events/src/session/RoomSessionUserFigureUpdateEvent.ts @@ -12,6 +12,13 @@ export class RoomSessionUserFigureUpdateEvent extends RoomSessionEvent { private _backgroundId: number | null; private _standId: number | null; private _overlayId: number | null; + private _nickIcon: string; + private _prefixText: string; + private _prefixColor: string; + private _prefixIcon: string; + private _prefixEffect: string; + private _prefixFont: string; + private _displayOrder: string; constructor( session: IRoomSession, @@ -22,7 +29,14 @@ export class RoomSessionUserFigureUpdateEvent extends RoomSessionEvent { achievementScore: number, backgroundId: number | null, standId: number | null, - overlayId: number | null + overlayId: number | null, + nickIcon: string = '', + prefixText: string = '', + prefixColor: string = '', + prefixIcon: string = '', + prefixEffect: string = '', + prefixFont: string = '', + displayOrder: string = 'icon-prefix-name' ) { super(RoomSessionUserFigureUpdateEvent.USER_FIGURE, session); @@ -34,6 +48,13 @@ export class RoomSessionUserFigureUpdateEvent extends RoomSessionEvent { this._backgroundId = backgroundId; this._standId = standId; this._overlayId = overlayId; + this._nickIcon = nickIcon; + this._prefixText = prefixText; + this._prefixColor = prefixColor; + this._prefixIcon = prefixIcon; + this._prefixEffect = prefixEffect; + this._prefixFont = prefixFont; + this._displayOrder = displayOrder; } public get roomIndex(): number { @@ -67,4 +88,32 @@ export class RoomSessionUserFigureUpdateEvent extends RoomSessionEvent { public get overlayId(): number | null { return this._overlayId; } -} \ No newline at end of file + + public get nickIcon(): string { + return this._nickIcon; + } + + public get prefixText(): string { + return this._prefixText; + } + + public get prefixColor(): string { + return this._prefixColor; + } + + public get prefixIcon(): string { + return this._prefixIcon; + } + + public get prefixEffect(): string { + return this._prefixEffect; + } + + public get prefixFont(): string { + return this._prefixFont; + } + + public get displayOrder(): string { + return this._displayOrder; + } +} diff --git a/packages/localization/src/LocalizationManager.ts b/packages/localization/src/LocalizationManager.ts index b3ffc92..1acb949 100644 --- a/packages/localization/src/LocalizationManager.ts +++ b/packages/localization/src/LocalizationManager.ts @@ -6,6 +6,7 @@ import { BadgeBaseAndLevel } from './BadgeBaseAndLevel'; export class LocalizationManager implements ILocalizationManager { private _definitions: Map = new Map(); + private _overrideDefinitions: Map = new Map(); private _parameters: Map> = new Map(); private _badgePointLimits: Map = new Map(); private _romanNumerals: string[] = [ 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', 'X', 'XI', 'XII', 'XIII', 'XIV', 'XV', 'XVI', 'XVII', 'XVIII', 'XIX', 'XX', 'XXI', 'XXII', 'XXIII', 'XXIV', 'XXV', 'XXVI', 'XXVII', 'XXVIII', 'XXIX', 'XXX' ]; @@ -102,7 +103,7 @@ export class LocalizationManager implements ILocalizationManager public hasValue(key: string): boolean { - return this._definitions.has(key); + return (this._overrideDefinitions.has(key) || this._definitions.has(key)); } public getValue(key: string, doParams: boolean = true): string @@ -116,7 +117,7 @@ export class LocalizationManager implements ILocalizationManager for(const splitKey of keys) key = key.replace(splitKey, this.getValue(splitKey.slice(2, -1), doParams)); } - let value = (this._definitions.get(key) || null); + let value = (this._overrideDefinitions.get(key) || this._definitions.get(key) || null); if(!value) { @@ -260,6 +261,16 @@ export class LocalizationManager implements ILocalizationManager this._definitions.set(key, value); } + public setOverrideValues(values: Map): void + { + this._overrideDefinitions = (values || new Map()); + } + + public clearOverrideValues(): void + { + this._overrideDefinitions.clear(); + } + public registerParameter(key: string, parameter: string, value: string): void { if(!key || (key.length === 0) || !parameter || (parameter.length === 0)) return; diff --git a/packages/room/src/object/visualization/avatar/AvatarVisualization.ts b/packages/room/src/object/visualization/avatar/AvatarVisualization.ts index ff2cbf6..7372730 100644 --- a/packages/room/src/object/visualization/avatar/AvatarVisualization.ts +++ b/packages/room/src/object/visualization/avatar/AvatarVisualization.ts @@ -314,10 +314,6 @@ export class AvatarVisualization extends RoomObjectSpriteVisualization implement // }) // ]; } - else - { - sprite.filters = []; - } } if(sprite.texture) diff --git a/packages/session/src/RoomUserData.ts b/packages/session/src/RoomUserData.ts index 201cca3..3829cbb 100644 --- a/packages/session/src/RoomUserData.ts +++ b/packages/session/src/RoomUserData.ts @@ -8,6 +8,13 @@ export class RoomUserData implements IRoomUserData private _sex: string = ''; private _figure: string = ''; private _custom: string = ''; + private _nickIcon: string = ''; + private _prefixText: string = ''; + private _prefixColor: string = ''; + private _prefixIcon: string = ''; + private _prefixEffect: string = ''; + private _prefixFont: string = ''; + private _displayOrder: string = 'icon-prefix-name'; private _activityPoints: number; private _background: number; private _stand: number; @@ -286,6 +293,76 @@ export class RoomUserData implements IRoomUserData return this._isModerator; } + public get nickIcon(): string + { + return this._nickIcon; + } + + public set nickIcon(k: string) + { + this._nickIcon = k; + } + + public get prefixText(): string + { + return this._prefixText; + } + + public set prefixText(k: string) + { + this._prefixText = k; + } + + public get prefixColor(): string + { + return this._prefixColor; + } + + public set prefixColor(k: string) + { + this._prefixColor = k; + } + + public get prefixIcon(): string + { + return this._prefixIcon; + } + + public set prefixIcon(k: string) + { + this._prefixIcon = k; + } + + public get prefixEffect(): string + { + return this._prefixEffect; + } + + public set prefixEffect(k: string) + { + this._prefixEffect = k; + } + + public get prefixFont(): string + { + return this._prefixFont; + } + + public set prefixFont(k: string) + { + this._prefixFont = k; + } + + public get displayOrder(): string + { + return this._displayOrder; + } + + public set displayOrder(k: string) + { + this._displayOrder = k; + } + public set isModerator(k: boolean) { this._isModerator = k; diff --git a/packages/session/src/SessionDataManager.ts b/packages/session/src/SessionDataManager.ts index f690ea0..9d3c07f 100644 --- a/packages/session/src/SessionDataManager.ts +++ b/packages/session/src/SessionDataManager.ts @@ -1,6 +1,7 @@ import { IFurnitureData, IGroupInformationManager, IMessageComposer, IMessageEvent, IProductData, ISessionDataManager, NoobnessLevelEnum, SecurityLevel } from '@nitrots/api'; import { AccountSafetyLockStatusChangeMessageEvent, AccountSafetyLockStatusChangeParser, AvailabilityStatusMessageEvent, ChangeUserNameResultMessageEvent, EmailStatusResultEvent, FigureUpdateEvent, GetCommunication, GetUserTagsComposer, InClientLinkEvent, MysteryBoxKeysEvent, NoobnessLevelMessageEvent, PetRespectComposer, PetScratchFailedMessageEvent, RoomReadyMessageEvent, RoomUnitChatComposer, UserInfoEvent, UserNameChangeMessageEvent, UserPermissionsEvent, UserRespectComposer, UserTagsMessageEvent } from '@nitrots/communication'; import { GetConfiguration } from '@nitrots/configuration'; +import { GetLocalizationManager } from '@nitrots/localization'; import { GetEventDispatcher, MysteryBoxKeysUpdateEvent, NitroSettingsEvent, SessionDataPreferencesEvent, UserNameUpdateEvent } from '@nitrots/events'; import { CreateLinkEvent, HabboWebTools } from '@nitrots/utils'; import { Texture } from 'pixi.js'; @@ -42,6 +43,8 @@ export class SessionDataManager implements ISessionDataManager private _floorItems: Map = new Map(); private _wallItems: Map = new Map(); + private _floorItemOverrides: Map> = new Map(); + private _wallItemOverrides: Map> = new Map(); private _products: Map = new Map(); private _furnitureData: FurnitureDataLoader = new FurnitureDataLoader(this._floorItems, this._wallItems); private _productData: ProductDataLoader = new ProductDataLoader(this._products); @@ -130,7 +133,38 @@ export class SessionDataManager implements ISessionDataManager public getAllFurnitureData(): IFurnitureData[] { - return [ ...Array.from(this._floorItems.values()), ...Array.from(this._wallItems.values()) ]; + return [ + ...Array.from(this._floorItems.values()).map(item => this.applyFurnitureOverrides(item, this._floorItemOverrides)), + ...Array.from(this._wallItems.values()).map(item => this.applyFurnitureOverrides(item, this._wallItemOverrides)) + ]; + } + + public async applyFurnitureDataOverrides(url: string): Promise + { + if(!url || !url.length) + { + this.clearFurnitureDataOverrides(); + + return; + } + + const response = await fetch(url); + + if(response.status !== 200) throw new Error(`Unable to load ${ url }`); + + const data = await response.json(); + + this._floorItemOverrides = this.parseFurnitureOverrides(data?.roomitemtypes?.furnitype || []); + this._wallItemOverrides = this.parseFurnitureOverrides(data?.wallitemtypes?.furnitype || []); + + this.refreshFurnitureLocalizations(); + } + + public clearFurnitureDataOverrides(): void + { + this._floorItemOverrides.clear(); + this._wallItemOverrides.clear(); + this.refreshFurnitureLocalizations(); } private onUserInfoEvent(event: UserInfoEvent): void @@ -290,7 +324,7 @@ export class SessionDataManager implements ISessionDataManager if(!existing) return null; - return existing; + return this.applyFurnitureOverrides(existing, this._floorItemOverrides); } public getFloorItemDataByName(name: string): IFurnitureData @@ -301,7 +335,7 @@ export class SessionDataManager implements ISessionDataManager { if(!item || (item.className !== name)) continue; - return item; + return this.applyFurnitureOverrides(item, this._floorItemOverrides); } return null; @@ -313,7 +347,7 @@ export class SessionDataManager implements ISessionDataManager if(!existing) return null; - return existing; + return this.applyFurnitureOverrides(existing, this._wallItemOverrides); } public getWallItemDataByName(name: string): IFurnitureData @@ -324,7 +358,7 @@ export class SessionDataManager implements ISessionDataManager { if(!item || (item.className !== name)) continue; - return item; + return this.applyFurnitureOverrides(item, this._wallItemOverrides); } return null; @@ -335,6 +369,64 @@ export class SessionDataManager implements ISessionDataManager return this._products.get(type); } + private parseFurnitureOverrides(items: any[]): Map> + { + const overrides = new Map>(); + + for(const item of items) + { + if(!item?.classname) continue; + + const className = ((item.classname as string).split('*')[0] || '').trim(); + + if(!className.length) continue; + + overrides.set(className, { + name: item.name || '', + description: item.description || '' + }); + } + + return overrides; + } + + private applyFurnitureOverrides(item: IFurnitureData, overrides: Map>): IFurnitureData + { + if(!item) return null; + + const override = overrides.get(item.className); + + if(!override) return item; + + const clonedItem = Object.assign(Object.create(Object.getPrototypeOf(item)), item) as any; + + if(override.name !== undefined) clonedItem._localizedName = override.name; + if(override.description !== undefined) clonedItem._description = override.description; + + return clonedItem as IFurnitureData; + } + + private refreshFurnitureLocalizations(): void + { + const localizationManager = GetLocalizationManager(); + + for(const item of this._floorItems.values()) + { + const resolvedItem = this.applyFurnitureOverrides(item, this._floorItemOverrides); + + localizationManager.setValue(('roomItem.name.' + item.id), resolvedItem.name); + localizationManager.setValue(('roomItem.desc.' + item.id), resolvedItem.description); + } + + for(const item of this._wallItems.values()) + { + const resolvedItem = this.applyFurnitureOverrides(item, this._wallItemOverrides); + + localizationManager.setValue(('wallItem.name.' + item.id), resolvedItem.name); + localizationManager.setValue(('wallItem.desc.' + item.id), resolvedItem.description); + } + } + public getBadgeUrl(name: string): string { return this._badgeImageManager.getBadgeUrl(name); @@ -544,4 +636,4 @@ export class SessionDataManager implements ISessionDataManager { return this._tags; } -} \ No newline at end of file +} diff --git a/packages/session/src/UserDataManager.ts b/packages/session/src/UserDataManager.ts index e411144..5e53eb0 100644 --- a/packages/session/src/UserDataManager.ts +++ b/packages/session/src/UserDataManager.ts @@ -144,6 +144,30 @@ export class UserDataManager implements IUserDataManager userData.custom = custom; } + + public updateNickIcon(roomIndex: number, nickIcon: string): void + { + const userData = this.getUserDataByIndex(roomIndex); + + if(!userData) return; + + userData.nickIcon = nickIcon; + } + + public updateCustomization(roomIndex: number, nickIcon: string, prefixText: string, prefixColor: string, prefixIcon: string, prefixEffect: string, prefixFont: string, displayOrder: string): void + { + const userData = this.getUserDataByIndex(roomIndex); + + if(!userData) return; + + userData.nickIcon = nickIcon; + userData.prefixText = prefixText; + userData.prefixColor = prefixColor; + userData.prefixIcon = prefixIcon; + userData.prefixEffect = prefixEffect; + userData.prefixFont = prefixFont; + userData.displayOrder = displayOrder; + } public updateBackground(roomIndex: number, background: number, stand: number, overlay: number): void { diff --git a/packages/session/src/handler/RoomChatHandler.ts b/packages/session/src/handler/RoomChatHandler.ts index e515ae5..f901ef3 100644 --- a/packages/session/src/handler/RoomChatHandler.ts +++ b/packages/session/src/handler/RoomChatHandler.ts @@ -37,7 +37,7 @@ export class RoomChatHandler extends BaseHandler if(event instanceof RoomUnitChatShoutEvent) chatType = RoomSessionChatEvent.CHAT_TYPE_SHOUT; else if(event instanceof RoomUnitChatWhisperEvent) chatType = RoomSessionChatEvent.CHAT_TYPE_WHISPER; - const chatEvent = new RoomSessionChatEvent(RoomSessionChatEvent.CHAT_EVENT, session, parser.roomIndex, parser.message, chatType, parser.bubble, parser.chatColours, null, -1, parser.prefixText, parser.prefixColor, parser.prefixIcon, parser.prefixEffect); + const chatEvent = new RoomSessionChatEvent(RoomSessionChatEvent.CHAT_EVENT, session, parser.roomIndex, parser.message, chatType, parser.bubble, parser.chatColours, null, -1, parser.prefixText, parser.prefixColor, parser.prefixIcon, parser.prefixEffect, parser.prefixFont, parser.nickIcon, parser.displayOrder); GetEventDispatcher().dispatchEvent(chatEvent); } @@ -54,7 +54,7 @@ export class RoomChatHandler extends BaseHandler if(!parser) return; - GetEventDispatcher().dispatchEvent(new RoomSessionChatEvent(RoomSessionChatEvent.CHAT_EVENT, session, parser.giverUserId, '', RoomSessionChatEvent.CHAT_TYPE_HAND_ITEM_RECEIVED, SystemChatStyleEnum.GENERIC, [], null, parser.handItemType)); + GetEventDispatcher().dispatchEvent(new RoomSessionChatEvent(RoomSessionChatEvent.CHAT_EVENT, session, parser.giverUserId, '', RoomSessionChatEvent.CHAT_TYPE_HAND_ITEM_RECEIVED, SystemChatStyleEnum.GENERIC, '', null, parser.handItemType)); } private onRespectReceivedEvent(event: RespectReceivedEvent): void @@ -136,7 +136,7 @@ export class RoomChatHandler extends BaseHandler break; } - GetEventDispatcher().dispatchEvent(new RoomSessionChatEvent(RoomSessionChatEvent.CHAT_EVENT, session, petData.roomIndex, '', chatType, SystemChatStyleEnum.GENERIC, [], null, userRoomIndex)); + GetEventDispatcher().dispatchEvent(new RoomSessionChatEvent(RoomSessionChatEvent.CHAT_EVENT, session, petData.roomIndex, '', chatType, SystemChatStyleEnum.GENERIC, '', null, userRoomIndex)); } private onFloodControlEvent(event: FloodControlEvent): void diff --git a/packages/session/src/handler/RoomUsersHandler.ts b/packages/session/src/handler/RoomUsersHandler.ts index 9d04153..a3e1abc 100644 --- a/packages/session/src/handler/RoomUsersHandler.ts +++ b/packages/session/src/handler/RoomUsersHandler.ts @@ -55,6 +55,13 @@ export class RoomUsersHandler extends BaseHandler userData.name = user.name; userData.custom = user.custom; + userData.nickIcon = user.nickIcon; + userData.prefixText = user.prefixText; + userData.prefixColor = user.prefixColor; + userData.prefixIcon = user.prefixIcon; + userData.prefixEffect = user.prefixEffect; + userData.prefixFont = user.prefixFont; + userData.displayOrder = user.displayOrder; userData.background = user.background; userData.stand = user.stand; userData.overlay = user.overlay; @@ -104,11 +111,12 @@ export class RoomUsersHandler extends BaseHandler session.userDataManager.updateFigure(parser.unitId, parser.figure, parser.gender, false, false); session.userDataManager.updateMotto(parser.unitId, parser.motto); + session.userDataManager.updateCustomization(parser.unitId, parser.nickIcon || '', parser.prefixText || '', parser.prefixColor || '', parser.prefixIcon || '', parser.prefixEffect || '', parser.prefixFont || '', parser.displayOrder || 'icon-prefix-name'); session.userDataManager.updateAchievementScore(parser.unitId, parser.achievementScore); session.userDataManager.updateBackground(parser.unitId, parser.backgroundId, parser.standId, parser.overlayId); - GetEventDispatcher().dispatchEvent(new RoomSessionUserFigureUpdateEvent(session, parser.unitId, parser.figure, parser.gender, parser.motto, parser.achievementScore, parser.backgroundId, parser.standId, parser.overlayId)); + GetEventDispatcher().dispatchEvent(new RoomSessionUserFigureUpdateEvent(session, parser.unitId, parser.figure, parser.gender, parser.motto, parser.achievementScore, parser.backgroundId, parser.standId, parser.overlayId, parser.nickIcon || '', parser.prefixText || '', parser.prefixColor || '', parser.prefixIcon || '', parser.prefixEffect || '', parser.prefixFont || '', parser.displayOrder || 'icon-prefix-name')); }