From 2f7b80e8947590a0ecbedca682f7d7bd6c1783d2 Mon Sep 17 00:00:00 2001 From: duckietm Date: Mon, 4 May 2026 08:44:40 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=86=95=20Card=20Background?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/api/src/nitro/session/IRoomUserData.ts | 4 ++++ .../outgoing/room/unit/RoomUnitBackgroundComposer.ts | 4 ++-- .../messages/parser/room/unit/RoomUnitInfoParser.ts | 11 ++++++++++- .../src/messages/parser/room/unit/RoomUnitParser.ts | 2 ++ .../src/messages/parser/room/unit/UserMessageData.ts | 11 +++++++++++ .../messages/parser/user/data/UserProfileParser.ts | 9 +++++++++ .../src/session/RoomSessionUserFigureUpdateEvent.ts | 9 ++++++++- packages/session/src/RoomSession.ts | 4 ++-- packages/session/src/RoomUserData.ts | 11 +++++++++++ packages/session/src/UserDataManager.ts | 3 ++- packages/session/src/handler/RoomUsersHandler.ts | 7 ++++--- 11 files changed, 65 insertions(+), 10 deletions(-) diff --git a/packages/api/src/nitro/session/IRoomUserData.ts b/packages/api/src/nitro/session/IRoomUserData.ts index 4407449..2892305 100644 --- a/packages/api/src/nitro/session/IRoomUserData.ts +++ b/packages/api/src/nitro/session/IRoomUserData.ts @@ -2,6 +2,10 @@ export interface IRoomUserData { readonly roomIndex: number; activityPoints: number; + background: number; + stand: number; + overlay: number; + cardBackground: number; name: string; type: number; sex: string; diff --git a/packages/communication/src/messages/outgoing/room/unit/RoomUnitBackgroundComposer.ts b/packages/communication/src/messages/outgoing/room/unit/RoomUnitBackgroundComposer.ts index c283909..e86aed8 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) + constructor(backgroundImage: number, backgroundStand: number, backgroundOverlay: number, backgroundCard: number = 0) { - this._data = [ backgroundImage, backgroundStand, backgroundOverlay ]; + this._data = [ backgroundImage, backgroundStand, backgroundOverlay, backgroundCard ]; } 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 bdc78d6..8abdcf5 100644 --- a/packages/communication/src/messages/parser/room/unit/RoomUnitInfoParser.ts +++ b/packages/communication/src/messages/parser/room/unit/RoomUnitInfoParser.ts @@ -10,6 +10,7 @@ export class RoomUnitInfoParser implements IMessageParser private _backgroundId: number; private _standId: number; private _overlayId: number; + private _cardBackgroundId: number; public flush(): boolean { @@ -21,6 +22,7 @@ export class RoomUnitInfoParser implements IMessageParser this._backgroundId = 0; this._standId = 0; this._overlayId = 0; + this._cardBackgroundId = 0; return true; } @@ -36,7 +38,9 @@ export class RoomUnitInfoParser implements IMessageParser this._achievementScore = wrapper.readInt(); this._backgroundId = wrapper.readInt(); this._standId = wrapper.readInt(); - this._overlayId = wrapper.readInt(); + this._overlayId = wrapper.readInt(); + + if(wrapper.bytesAvailable >= 4) this._cardBackgroundId = wrapper.readInt(); return true; } @@ -80,4 +84,9 @@ export class RoomUnitInfoParser implements IMessageParser { return this._overlayId; } + + public get cardBackgroundId(): number + { + return this._cardBackgroundId; + } } \ No newline at end of file diff --git a/packages/communication/src/messages/parser/room/unit/RoomUnitParser.ts b/packages/communication/src/messages/parser/room/unit/RoomUnitParser.ts index 21a50a5..5322df8 100644 --- a/packages/communication/src/messages/parser/room/unit/RoomUnitParser.ts +++ b/packages/communication/src/messages/parser/room/unit/RoomUnitParser.ts @@ -37,6 +37,7 @@ export class RoomUnitParser implements IMessageParser const background = wrapper.readInt(); const stand = wrapper.readInt(); const overlay = wrapper.readInt(); + const cardBackground = wrapper.readInt(); let figure = wrapper.readString(); const roomIndex = wrapper.readInt(); const x = wrapper.readInt(); @@ -53,6 +54,7 @@ export class RoomUnitParser implements IMessageParser user.background = background; user.stand = stand; user.overlay = overlay; + user.cardBackground = cardBackground; user.x = x; user.y = y; user.z = z; diff --git a/packages/communication/src/messages/parser/room/unit/UserMessageData.ts b/packages/communication/src/messages/parser/room/unit/UserMessageData.ts index e4e2270..90c6bc1 100644 --- a/packages/communication/src/messages/parser/room/unit/UserMessageData.ts +++ b/packages/communication/src/messages/parser/room/unit/UserMessageData.ts @@ -17,6 +17,7 @@ export class UserMessageData private _background: number = 0; private _stand: number = 0; private _overlay: number = 0; + private _cardBackground: number = 0; private _webID: number = 0; private _groupID: number = 0; private _groupStatus: number = 0; @@ -214,6 +215,16 @@ export class UserMessageData this._overlay = k; } + public get cardBackground(): number + { + return this._cardBackground; + } + + public set cardBackground(k: number) + { + this._cardBackground = k; + } + public get webID(): number { return this._webID; diff --git a/packages/communication/src/messages/parser/user/data/UserProfileParser.ts b/packages/communication/src/messages/parser/user/data/UserProfileParser.ts index 497c300..da2d53d 100644 --- a/packages/communication/src/messages/parser/user/data/UserProfileParser.ts +++ b/packages/communication/src/messages/parser/user/data/UserProfileParser.ts @@ -19,6 +19,7 @@ export class UserProfileParser implements IMessageParser private _backgroundId: number; private _standId: number; private _overlayId: number; + private _cardBackgroundId: number; public flush(): boolean { @@ -38,6 +39,7 @@ export class UserProfileParser implements IMessageParser this._backgroundId = 0; this._standId = 0; this._overlayId = 0; + this._cardBackgroundId = 0; return true; } @@ -71,6 +73,8 @@ export class UserProfileParser implements IMessageParser this._backgroundId = wrapper.readInt(); this._standId = wrapper.readInt(); this._overlayId = wrapper.readInt(); + + if(wrapper.bytesAvailable >= 4) this._cardBackgroundId = wrapper.readInt(); } return true; @@ -155,4 +159,9 @@ export class UserProfileParser implements IMessageParser { return this._overlayId; } + + public get cardBackgroundId(): number + { + return this._cardBackgroundId; + } } diff --git a/packages/events/src/session/RoomSessionUserFigureUpdateEvent.ts b/packages/events/src/session/RoomSessionUserFigureUpdateEvent.ts index 6ba82e3..b273b3a 100644 --- a/packages/events/src/session/RoomSessionUserFigureUpdateEvent.ts +++ b/packages/events/src/session/RoomSessionUserFigureUpdateEvent.ts @@ -12,6 +12,7 @@ export class RoomSessionUserFigureUpdateEvent extends RoomSessionEvent { private _backgroundId: number | null; private _standId: number | null; private _overlayId: number | null; + private _cardBackgroundId: number | null; constructor( session: IRoomSession, @@ -22,7 +23,8 @@ export class RoomSessionUserFigureUpdateEvent extends RoomSessionEvent { achievementScore: number, backgroundId: number | null, standId: number | null, - overlayId: number | null + overlayId: number | null, + cardBackgroundId: number | null = 0 ) { super(RoomSessionUserFigureUpdateEvent.USER_FIGURE, session); @@ -34,6 +36,7 @@ export class RoomSessionUserFigureUpdateEvent extends RoomSessionEvent { this._backgroundId = backgroundId; this._standId = standId; this._overlayId = overlayId; + this._cardBackgroundId = cardBackgroundId; } public get roomIndex(): number { @@ -67,4 +70,8 @@ export class RoomSessionUserFigureUpdateEvent extends RoomSessionEvent { public get overlayId(): number | null { return this._overlayId; } + + public get cardBackgroundId(): number | null { + return this._cardBackgroundId; + } } \ No newline at end of file diff --git a/packages/session/src/RoomSession.ts b/packages/session/src/RoomSession.ts index 853bd41..3e70501 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): void + public sendBackgroundMessage(backgroundImage: number, backgroundStand: number, backgroundOverlay: number, backgroundCard: number = 0): void { - GetCommunication().connection.send(new RoomUnitBackgroundComposer(backgroundImage, backgroundStand, backgroundOverlay)); + GetCommunication().connection.send(new RoomUnitBackgroundComposer(backgroundImage, backgroundStand, backgroundOverlay, backgroundCard)); } public sendMottoMessage(motto: string): void diff --git a/packages/session/src/RoomUserData.ts b/packages/session/src/RoomUserData.ts index 201cca3..c135017 100644 --- a/packages/session/src/RoomUserData.ts +++ b/packages/session/src/RoomUserData.ts @@ -12,6 +12,7 @@ export class RoomUserData implements IRoomUserData private _background: number; private _stand: number; private _overlay: number; + private _cardBackground: number; private _webID: number = 0; private _groupID: number = 0; private _groupStatus: number = 0; @@ -81,6 +82,16 @@ export class RoomUserData implements IRoomUserData this._overlay = k; } + public get cardBackground(): number + { + return this._cardBackground; + } + + public set cardBackground(k: number) + { + this._cardBackground = k; + } + public get name(): string { return this._name; diff --git a/packages/session/src/UserDataManager.ts b/packages/session/src/UserDataManager.ts index e411144..af95750 100644 --- a/packages/session/src/UserDataManager.ts +++ b/packages/session/src/UserDataManager.ts @@ -145,7 +145,7 @@ export class UserDataManager implements IUserDataManager userData.custom = custom; } - public updateBackground(roomIndex: number, background: number, stand: number, overlay: number): void + public updateBackground(roomIndex: number, background: number, stand: number, overlay: number, cardBackground: number = 0): void { const userData = this.getUserDataByIndex(roomIndex); @@ -154,6 +154,7 @@ export class UserDataManager implements IUserDataManager userData.background = background; userData.stand = stand; userData.overlay = overlay; + userData.cardBackground = cardBackground; } public updateAchievementScore(roomIndex: number, score: number): void diff --git a/packages/session/src/handler/RoomUsersHandler.ts b/packages/session/src/handler/RoomUsersHandler.ts index 9d04153..acaf263 100644 --- a/packages/session/src/handler/RoomUsersHandler.ts +++ b/packages/session/src/handler/RoomUsersHandler.ts @@ -57,7 +57,8 @@ export class RoomUsersHandler extends BaseHandler userData.custom = user.custom; userData.background = user.background; userData.stand = user.stand; - userData.overlay = user.overlay; + userData.overlay = user.overlay; + userData.cardBackground = user.cardBackground; userData.activityPoints = user.activityPoints; userData.figure = user.figure; userData.type = user.userType; @@ -106,9 +107,9 @@ export class RoomUsersHandler extends BaseHandler session.userDataManager.updateMotto(parser.unitId, parser.motto); session.userDataManager.updateAchievementScore(parser.unitId, parser.achievementScore); - session.userDataManager.updateBackground(parser.unitId, parser.backgroundId, parser.standId, parser.overlayId); + session.userDataManager.updateBackground(parser.unitId, parser.backgroundId, parser.standId, parser.overlayId, parser.cardBackgroundId); - 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.cardBackgroundId)); }