diff --git a/packages/api/src/nitro/session/IRoomUserData.ts b/packages/api/src/nitro/session/IRoomUserData.ts index 4e3e595..5b29c56 100644 --- a/packages/api/src/nitro/session/IRoomUserData.ts +++ b/packages/api/src/nitro/session/IRoomUserData.ts @@ -6,6 +6,7 @@ export interface IRoomUserData stand: number; overlay: number; cardBackground: number; + borderId: number; name: string; type: number; sex: string; diff --git a/packages/api/src/nitro/session/IUserDataManager.ts b/packages/api/src/nitro/session/IUserDataManager.ts index b854be0..960dac2 100644 --- a/packages/api/src/nitro/session/IUserDataManager.ts +++ b/packages/api/src/nitro/session/IUserDataManager.ts @@ -18,7 +18,7 @@ export interface IUserDataManager 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; - updateBackground(roomIndex: number, background: number, stand: number, overlay: number, cardBackground?: number): void; + updateBackground(roomIndex: number, background: number, stand: number, overlay: number, cardBackground?: number, borderId?: number): 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/messages/outgoing/room/unit/RoomUnitBackgroundComposer.ts b/packages/communication/src/messages/outgoing/room/unit/RoomUnitBackgroundComposer.ts index e86aed8..be83d4f 100644 --- a/packages/communication/src/messages/outgoing/room/unit/RoomUnitBackgroundComposer.ts +++ b/packages/communication/src/messages/outgoing/room/unit/RoomUnitBackgroundComposer.ts @@ -4,9 +4,9 @@ export class RoomUnitBackgroundComposer implements IMessageComposer; - constructor(backgroundImage: number, backgroundStand: number, backgroundOverlay: number, backgroundCard: number = 0) + constructor(backgroundImage: number, backgroundStand: number, backgroundOverlay: number, backgroundCard: number = 0, backgroundBorder: number = 0) { - this._data = [ backgroundImage, backgroundStand, backgroundOverlay, backgroundCard ]; + this._data = [ backgroundImage, backgroundStand, backgroundOverlay, backgroundCard, backgroundBorder ]; } public getMessageArray() diff --git a/packages/communication/src/messages/parser/room/unit/RoomUnitInfoParser.ts b/packages/communication/src/messages/parser/room/unit/RoomUnitInfoParser.ts index 9b128f0..868e368 100644 --- a/packages/communication/src/messages/parser/room/unit/RoomUnitInfoParser.ts +++ b/packages/communication/src/messages/parser/room/unit/RoomUnitInfoParser.ts @@ -11,6 +11,7 @@ export class RoomUnitInfoParser implements IMessageParser private _standId: number; private _overlayId: number; private _cardBackgroundId: number; + private _borderId: number; private _nickIcon: string; private _prefixText: string; private _prefixColor: string; @@ -30,6 +31,7 @@ export class RoomUnitInfoParser implements IMessageParser this._standId = 0; this._overlayId = 0; this._cardBackgroundId = 0; + this._borderId = 0; this._nickIcon = ''; this._prefixText = ''; this._prefixColor = ''; @@ -61,6 +63,7 @@ export class RoomUnitInfoParser implements IMessageParser this._prefixEffect = (wrapper.bytesAvailable ? wrapper.readString() : ''); this._prefixFont = (wrapper.bytesAvailable ? wrapper.readString() : ''); this._displayOrder = (wrapper.bytesAvailable ? wrapper.readString() : 'icon-prefix-name'); + this._borderId = (wrapper.bytesAvailable ? wrapper.readInt() : 0); return true; } @@ -110,6 +113,11 @@ export class RoomUnitInfoParser implements IMessageParser return this._cardBackgroundId; } + public get borderId(): number + { + return this._borderId; + } + public get nickIcon(): string { return this._nickIcon; diff --git a/packages/communication/src/messages/parser/room/unit/RoomUnitParser.ts b/packages/communication/src/messages/parser/room/unit/RoomUnitParser.ts index ab638c0..de703ae 100644 --- a/packages/communication/src/messages/parser/room/unit/RoomUnitParser.ts +++ b/packages/communication/src/messages/parser/room/unit/RoomUnitParser.ts @@ -146,6 +146,7 @@ export class RoomUnitParser implements IMessageParser user.roomEntryMethod = wrapper.readString(); user.roomEntryTeleportId = wrapper.readInt(); + user.borderId = (wrapper.bytesAvailable ? wrapper.readInt() : 0); i++; } diff --git a/packages/communication/src/messages/parser/room/unit/UserMessageData.ts b/packages/communication/src/messages/parser/room/unit/UserMessageData.ts index d720576..1531508 100644 --- a/packages/communication/src/messages/parser/room/unit/UserMessageData.ts +++ b/packages/communication/src/messages/parser/room/unit/UserMessageData.ts @@ -45,6 +45,7 @@ export class UserMessageData private _isModerator: boolean = false; private _roomEntryMethod: string = 'unknown'; private _roomEntryTeleportId: number = 0; + private _borderId: number = 0; private _isReadOnly: boolean = false; constructor(k: number) @@ -579,4 +580,17 @@ export class UserMessageData this._roomEntryTeleportId = k; } } + + public get borderId(): number + { + return this._borderId; + } + + public set borderId(k: number) + { + if(!this._isReadOnly) + { + this._borderId = k; + } + } } diff --git a/packages/events/src/session/RoomSessionUserFigureUpdateEvent.ts b/packages/events/src/session/RoomSessionUserFigureUpdateEvent.ts index 0fbea8a..7b2d0dd 100644 --- a/packages/events/src/session/RoomSessionUserFigureUpdateEvent.ts +++ b/packages/events/src/session/RoomSessionUserFigureUpdateEvent.ts @@ -20,6 +20,7 @@ export class RoomSessionUserFigureUpdateEvent extends RoomSessionEvent { private _prefixEffect: string; private _prefixFont: string; private _displayOrder: string; + private _borderId: number | null; constructor( session: IRoomSession, @@ -38,7 +39,8 @@ export class RoomSessionUserFigureUpdateEvent extends RoomSessionEvent { prefixIcon: string = '', prefixEffect: string = '', prefixFont: string = '', - displayOrder: string = 'icon-prefix-name' + displayOrder: string = 'icon-prefix-name', + borderId: number | null = 0 ) { super(RoomSessionUserFigureUpdateEvent.USER_FIGURE, session); @@ -58,6 +60,7 @@ export class RoomSessionUserFigureUpdateEvent extends RoomSessionEvent { this._prefixEffect = prefixEffect; this._prefixFont = prefixFont; this._displayOrder = displayOrder; + this._borderId = borderId; } public get roomIndex(): number { @@ -123,4 +126,8 @@ export class RoomSessionUserFigureUpdateEvent extends RoomSessionEvent { public get displayOrder(): string { return this._displayOrder; } + + public get borderId(): number | null { + return this._borderId; + } } diff --git a/packages/session/src/RoomSession.ts b/packages/session/src/RoomSession.ts index 3e70501..ae99b1d 100644 --- a/packages/session/src/RoomSession.ts +++ b/packages/session/src/RoomSession.ts @@ -97,9 +97,9 @@ export class RoomSession implements IRoomSession else GetCommunication().connection.send(new RoomUnitTypingStopComposer()); } - public sendBackgroundMessage(backgroundImage: number, backgroundStand: number, backgroundOverlay: number, backgroundCard: number = 0): void + public sendBackgroundMessage(backgroundImage: number, backgroundStand: number, backgroundOverlay: number, backgroundCard: number = 0, backgroundBorder: number = 0): void { - GetCommunication().connection.send(new RoomUnitBackgroundComposer(backgroundImage, backgroundStand, backgroundOverlay, backgroundCard)); + GetCommunication().connection.send(new RoomUnitBackgroundComposer(backgroundImage, backgroundStand, backgroundOverlay, backgroundCard, backgroundBorder)); } public sendMottoMessage(motto: string): void diff --git a/packages/session/src/RoomUserData.ts b/packages/session/src/RoomUserData.ts index b3220f4..75e6a2e 100644 --- a/packages/session/src/RoomUserData.ts +++ b/packages/session/src/RoomUserData.ts @@ -20,6 +20,7 @@ export class RoomUserData implements IRoomUserData private _stand: number; private _overlay: number; private _cardBackground: number; + private _borderId: number = 0; private _webID: number = 0; private _groupID: number = 0; private _groupStatus: number = 0; @@ -99,6 +100,16 @@ export class RoomUserData implements IRoomUserData this._cardBackground = k; } + public get borderId(): number + { + return this._borderId; + } + + public set borderId(k: number) + { + this._borderId = k; + } + public get name(): string { return this._name; diff --git a/packages/session/src/UserDataManager.ts b/packages/session/src/UserDataManager.ts index 374458c..b9864e2 100644 --- a/packages/session/src/UserDataManager.ts +++ b/packages/session/src/UserDataManager.ts @@ -169,7 +169,7 @@ export class UserDataManager implements IUserDataManager userData.displayOrder = displayOrder; } - public updateBackground(roomIndex: number, background: number, stand: number, overlay: number, cardBackground: number = 0): void + public updateBackground(roomIndex: number, background: number, stand: number, overlay: number, cardBackground: number = 0, borderId: number = 0): void { const userData = this.getUserDataByIndex(roomIndex); @@ -179,6 +179,7 @@ export class UserDataManager implements IUserDataManager userData.stand = stand; userData.overlay = overlay; userData.cardBackground = cardBackground; + userData.borderId = borderId; } public updateAchievementScore(roomIndex: number, score: number): void diff --git a/packages/session/src/handler/RoomUsersHandler.ts b/packages/session/src/handler/RoomUsersHandler.ts index f8ec5f6..659d506 100644 --- a/packages/session/src/handler/RoomUsersHandler.ts +++ b/packages/session/src/handler/RoomUsersHandler.ts @@ -66,6 +66,7 @@ export class RoomUsersHandler extends BaseHandler userData.stand = user.stand; userData.overlay = user.overlay; userData.cardBackground = user.cardBackground; + userData.borderId = user.borderId; userData.activityPoints = user.activityPoints; userData.figure = user.figure; userData.type = user.userType; @@ -115,9 +116,9 @@ export class RoomUsersHandler extends BaseHandler 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, parser.cardBackgroundId); + session.userDataManager.updateBackground(parser.unitId, parser.backgroundId, parser.standId, parser.overlayId, parser.cardBackgroundId, parser.borderId); - GetEventDispatcher().dispatchEvent(new RoomSessionUserFigureUpdateEvent(session, parser.unitId, parser.figure, parser.gender, parser.motto, parser.achievementScore, parser.backgroundId, parser.standId, parser.overlayId, parser.cardBackgroundId, parser.nickIcon || '', parser.prefixText || '', parser.prefixColor || '', parser.prefixIcon || '', parser.prefixEffect || '', parser.prefixFont || '', parser.displayOrder || 'icon-prefix-name')); + GetEventDispatcher().dispatchEvent(new RoomSessionUserFigureUpdateEvent(session, parser.unitId, parser.figure, parser.gender, parser.motto, parser.achievementScore, parser.backgroundId, parser.standId, parser.overlayId, parser.cardBackgroundId, parser.nickIcon || '', parser.prefixText || '', parser.prefixColor || '', parser.prefixIcon || '', parser.prefixEffect || '', parser.prefixFont || '', parser.displayOrder || 'icon-prefix-name', parser.borderId)); }