🆙 added Backgrounds to the renderer

This commit is contained in:
duckietm 2025-05-20 14:16:05 +02:00
parent e0c0c06c99
commit 7c40e69c75
10 changed files with 157 additions and 3 deletions

View File

@ -0,0 +1,21 @@
import { IMessageComposer } from '@nitrots/api';
export class RoomUnitBackgroundComposer implements IMessageComposer<ConstructorParameters<typeof RoomUnitBackgroundComposer>>
{
private _data: ConstructorParameters<typeof RoomUnitBackgroundComposer>;
constructor(backgroundImage: number, backgroundStand: number, backgroundOverlay: number)
{
this._data = [ backgroundImage, backgroundStand, backgroundOverlay ];
}
public getMessageArray()
{
return this._data;
}
public dispose(): void
{
return;
}
}

View File

@ -1,5 +1,6 @@
export * from './chat';
export * from './RoomUnitActionComposer';
export * from './RoomUnitBackgroundComposer';
export * from './RoomUnitDanceComposer';
export * from './RoomUnitDropHandItemComposer';
export * from './RoomUnitGiveHandItemComposer';

View File

@ -7,6 +7,9 @@ export class RoomUnitInfoParser implements IMessageParser
private _gender: string;
private _motto: string;
private _achievementScore: number;
private _backgroundId: number;
private _standId: number;
private _overlayId: number;
public flush(): boolean
{
@ -15,6 +18,9 @@ export class RoomUnitInfoParser implements IMessageParser
this._gender = 'M';
this._motto = null;
this._achievementScore = 0;
this._backgroundId = 0;
this._standId = 0;
this._overlayId = 0;
return true;
}
@ -56,4 +62,19 @@ export class RoomUnitInfoParser implements IMessageParser
{
return this._achievementScore;
}
public get backgroundId(): number
{
return this._backgroundId;
}
public get standId(): number
{
return this._standId;
}
public get overlayId(): number
{
return this._overlayId;
}
}

View File

@ -27,6 +27,9 @@ export class RoomUnitParser implements IMessageParser
const id = wrapper.readInt();
const username = wrapper.readString();
const custom = wrapper.readString();
const background = wrapper.readInt();
const stand = wrapper.readInt();
const overlay = wrapper.readInt();
let figure = wrapper.readString();
const roomIndex = wrapper.readInt();
const x = wrapper.readInt();
@ -40,6 +43,9 @@ export class RoomUnitParser implements IMessageParser
user.dir = direction;
user.name = username;
user.custom = custom;
user.background = background;
user.stand = stand;
user.overlay = overlay;
user.x = x;
user.y = y;
user.z = z;

View File

@ -14,6 +14,9 @@ export class UserMessageData
private _figure: string = '';
private _custom: string = '';
private _activityPoints: number = 0;
private _background: number = 0;
private _stand: number = 0;
private _overlay: number = 0
private _webID: number = 0;
private _groupID: number = 0;
private _groupStatus: number = 0;
@ -179,6 +182,36 @@ export class UserMessageData
}
}
public get background(): number
{
return this._background;
}
public set background(k: number)
{
this._background = k;
}
public get stand(): number
{
return this._stand;
}
public set stand(k: number)
{
this._stand = k;
}
public get overlay(): number
{
return this._overlay;
}
public set overlay(k: number)
{
this._overlay = k;
}
public get webID(): number
{
return this._webID;

View File

@ -1809,6 +1809,27 @@ export class RoomEngine implements IRoomEngine, IRoomCreator, IRoomEngineService
return true;
}
public getFurniLocation(roomId: number, objectId: number, isWallItem: boolean): string
{
return isWallItem
? this.getRoomObjectWall(roomId, objectId).getLocation().toString()
: this.getRoomObjectFloor(roomId, objectId).getLocation().toString();
}
public getFurniDirection(roomId: number, objectId: number, isWallItem: boolean): string
{
return isWallItem
? this.getRoomObjectWall(roomId, objectId).getDirection().toString()
: this.getRoomObjectFloor(roomId, objectId).getDirection().toString();
}
public getFurniState(roomId: number, objectId: number, isWallItem: boolean): number
{
return isWallItem
? this.getRoomObjectWall(roomId, objectId).getState()
: this.getRoomObjectFloor(roomId, objectId).getState();
}
public addRoomObjectUser(roomId: number, objectId: number, location: IVector3D, direction: IVector3D, headDirection: number, type: number, figure: string): boolean
{
const existing = this.getRoomObjectUser(roomId, objectId);

View File

@ -1,5 +1,5 @@
import { IRoomSession, IUserDataManager, RoomControllerLevel, RoomTradingLevelEnum } from '@nitrots/api';
import { BotRemoveComposer, ChangeQueueMessageComposer, CompostPlantMessageComposer, FurnitureMultiStateComposer, GetCommunication, GetPetCommandsComposer, HarvestPetMessageComposer, MoodlightSettingsComposer, MoodlightSettingsSaveComposer, MoodlightTogggleStateComposer, NewUserExperienceScriptProceedComposer, OpenPetPackageMessageComposer, OpenPresentComposer, PeerUsersClassificationMessageComposer, PetMountComposer, PetRemoveComposer, PollAnswerComposer, PollRejectComposer, PollStartComposer, RemovePetSaddleComposer, RoomAmbassadorAlertComposer, RoomBanUserComposer, RoomDoorbellAccessComposer, RoomEnterComposer, RoomGiveRightsComposer, RoomKickUserComposer, RoomModerationSettings, RoomMuteUserComposer, RoomTakeRightsComposer, RoomUnitActionComposer, RoomUnitChatComposer, RoomUnitChatShoutComposer, RoomUnitChatWhisperComposer, RoomUnitDanceComposer, RoomUnitPostureComposer, RoomUnitSignComposer, RoomUnitTypingStartComposer, RoomUnitTypingStopComposer, RoomUsersClassificationMessageComposer, SetClothingChangeDataMessageComposer, TogglePetBreedingComposer, TogglePetRidingComposer, UsePetProductComposer, UserMottoComposer, VotePollCounterMessageComposer } from '@nitrots/communication';
import { BotRemoveComposer, ChangeQueueMessageComposer, CompostPlantMessageComposer, FurnitureMultiStateComposer, GetCommunication, GetPetCommandsComposer, HarvestPetMessageComposer, MoodlightSettingsComposer, MoodlightSettingsSaveComposer, MoodlightTogggleStateComposer, NewUserExperienceScriptProceedComposer, OpenPetPackageMessageComposer, OpenPresentComposer, PeerUsersClassificationMessageComposer, PetMountComposer, PetRemoveComposer, PollAnswerComposer, PollRejectComposer, PollStartComposer, RemovePetSaddleComposer, RoomAmbassadorAlertComposer, RoomBanUserComposer, RoomDoorbellAccessComposer, RoomEnterComposer, RoomGiveRightsComposer, RoomKickUserComposer, RoomModerationSettings, RoomMuteUserComposer, RoomTakeRightsComposer, RoomUnitActionComposer, RoomUnitBackgroundComposer, RoomUnitChatComposer, RoomUnitChatShoutComposer, RoomUnitChatWhisperComposer, RoomUnitDanceComposer, RoomUnitPostureComposer, RoomUnitSignComposer, RoomUnitTypingStartComposer, RoomUnitTypingStopComposer, RoomUsersClassificationMessageComposer, SetClothingChangeDataMessageComposer, TogglePetBreedingComposer, TogglePetRidingComposer, UsePetProductComposer, UserMottoComposer, VotePollCounterMessageComposer } from '@nitrots/communication';
import { RoomSessionEvent } from '@nitrots/events';
import { UserDataManager } from './UserDataManager';
@ -90,6 +90,11 @@ export class RoomSession implements IRoomSession
else GetCommunication().connection.send(new RoomUnitTypingStopComposer());
}
public sendBackgroundMessage(backgroundImage: number, backgroundStand: number, backgroundOverlay: number): void
{
GetCommunication().connection.send(new RoomUnitBackgroundComposer(backgroundImage, backgroundStand, backgroundOverlay));
}
public sendMottoMessage(motto: string): void
{
GetCommunication().connection.send(new UserMottoComposer(motto));

View File

@ -9,6 +9,9 @@ export class RoomUserData implements IRoomUserData
private _figure: string = '';
private _custom: string = '';
private _activityPoints: number;
private _background: number;
private _stand: number;
private _overlay: number;
private _webID: number = 0;
private _groupID: number = 0;
private _groupStatus: number = 0;
@ -46,6 +49,36 @@ export class RoomUserData implements IRoomUserData
this._activityPoints = k;
}
public get background(): number
{
return this._background;
}
public set background(k: number)
{
this._background = k;
}
public get stand(): number
{
return this._stand;
}
public set stand(k: number)
{
this._stand = k;
}
public get overlay(): number
{
return this._overlay;
}
public set overlay(k: number)
{
this._overlay = k;
}
public get name(): string
{
return this._name;

View File

@ -145,6 +145,17 @@ export class UserDataManager implements IUserDataManager
userData.custom = custom;
}
public updateBackground(roomIndex: number, background: number, stand: number, overlay: number): void
{
const userData = this.getUserDataByIndex(roomIndex);
if(!userData) return;
userData.background = background;
userData.stand = stand;
userData.overlay = overlay;
}
public updateAchievementScore(roomIndex: number, score: number): void
{
const userData = this.getUserDataByIndex(roomIndex);

View File

@ -101,7 +101,9 @@ export class RoomUsersHandler extends BaseHandler
session.userDataManager.updateMotto(parser.unitId, parser.motto);
session.userDataManager.updateAchievementScore(parser.unitId, parser.achievementScore);
GetEventDispatcher().dispatchEvent(new RoomSessionUserFigureUpdateEvent(session, parser.unitId, parser.figure, parser.gender, parser.motto, 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));
}