feat: add room control rendering support

This commit is contained in:
Lorenzune
2026-04-03 12:09:16 +02:00
parent ba52f538de
commit 24f1d1278a
21 changed files with 670 additions and 10 deletions
@@ -272,6 +272,8 @@ export class IncomingHeader
public static WIRED_MONITOR_DATA = 5101;
public static WIRED_ROOM_SETTINGS_DATA = 5102;
public static WIRED_USER_VARIABLES_DATA = 5103;
public static CONF_INVIS_STATE = 5104;
public static HANDITEM_BLOCK_STATE = 5105;
public static WIRED_OPEN = 1830;
public static WIRED_REWARD = 178;
public static WIRED_SAVE = 1155;
@@ -0,0 +1,16 @@
import { IMessageEvent } from '@nitrots/api';
import { MessageEvent } from '@nitrots/events';
import { ConfInvisStateMessageParser } from '../../../parser';
export class ConfInvisStateMessageEvent extends MessageEvent implements IMessageEvent
{
constructor(callBack: Function)
{
super(callBack, ConfInvisStateMessageParser);
}
public getParser(): ConfInvisStateMessageParser
{
return this.parser as ConfInvisStateMessageParser;
}
}
@@ -0,0 +1,16 @@
import { IMessageEvent } from '@nitrots/api';
import { MessageEvent } from '@nitrots/events';
import { HanditemBlockStateMessageParser } from '../../../parser';
export class HanditemBlockStateMessageEvent extends MessageEvent implements IMessageEvent
{
constructor(callBack: Function)
{
super(callBack, HanditemBlockStateMessageParser);
}
public getParser(): HanditemBlockStateMessageParser
{
return this.parser as HanditemBlockStateMessageParser;
}
}
@@ -1,4 +1,5 @@
export * from './AreaHideMessageEvent';
export * from './ConfInvisStateMessageEvent';
export * from './CustomUserNotificationMessageEvent';
export * from './DiceValueMessageEvent';
export * from './FurniRentOrBuyoutOfferMessageEvent';
@@ -6,6 +7,7 @@ export * from './FurnitureAliasesEvent';
export * from './FurnitureDataEvent';
export * from './FurnitureStackHeightEvent';
export * from './GroupFurniContextMenuInfoMessageEvent';
export * from './HanditemBlockStateMessageEvent';
export * from './ItemDataUpdateMessageEvent';
export * from './LoveLockFurniFinishedEvent';
export * from './LoveLockFurniFriendConfirmedEvent';
@@ -9,6 +9,8 @@ export class AreaHideMessageData
private _width: number;
private _length: number;
private _invert: boolean;
private _wallItems: boolean;
private _invisibility: boolean;
constructor(wrapper: IMessageDataWrapper)
{
@@ -19,6 +21,8 @@ export class AreaHideMessageData
this._width = wrapper.readInt();
this._length = wrapper.readInt();
this._invert = wrapper.readBoolean();
this._wallItems = wrapper.readBoolean();
this._invisibility = wrapper.readBoolean();
}
public get furniId(): number
@@ -55,4 +59,14 @@ export class AreaHideMessageData
{
return this._invert;
}
public get wallItems(): boolean
{
return this._wallItems;
}
public get invisibility(): boolean
{
return this._invisibility;
}
}
@@ -0,0 +1,38 @@
import { IMessageDataWrapper } from '@nitrots/api';
export class ConfInvisStateMessageData
{
private _roomId: number;
private _active: boolean;
private _hiddenItemIds: number[];
constructor(wrapper: IMessageDataWrapper)
{
this._roomId = wrapper.readInt();
this._active = wrapper.readBoolean();
const totalHiddenItems = wrapper.readInt();
this._hiddenItemIds = [];
for(let index = 0; index < totalHiddenItems; index++)
{
this._hiddenItemIds.push(wrapper.readInt());
}
}
public get roomId(): number
{
return this._roomId;
}
public get hiddenItemIds(): number[]
{
return this._hiddenItemIds;
}
public get active(): boolean
{
return this._active;
}
}
@@ -0,0 +1,23 @@
import { IMessageDataWrapper } from '@nitrots/api';
export class HanditemBlockStateMessageData
{
private _roomId: number;
private _blocked: boolean;
constructor(wrapper: IMessageDataWrapper)
{
this._roomId = wrapper.readInt();
this._blocked = wrapper.readBoolean();
}
public get roomId(): number
{
return this._roomId;
}
public get blocked(): boolean
{
return this._blocked;
}
}
@@ -1,4 +1,6 @@
export * from './AreaHideMessageData';
export * from './ConfInvisStateMessageData';
export * from './HanditemBlockStateMessageData';
export * from './FavoriteMembershipUpdateMessageParser';
export * from './ObjectData';
export * from './ObjectsDataUpdateParser';
@@ -0,0 +1,28 @@
import { IMessageDataWrapper, IMessageParser } from '@nitrots/api';
import { ConfInvisStateMessageData } from '../engine';
export class ConfInvisStateMessageParser implements IMessageParser
{
private _stateData: ConfInvisStateMessageData;
public flush(): boolean
{
this._stateData = null;
return true;
}
public parse(wrapper: IMessageDataWrapper): boolean
{
if(!wrapper) return false;
this._stateData = new ConfInvisStateMessageData(wrapper);
return true;
}
public get stateData(): ConfInvisStateMessageData
{
return this._stateData;
}
}
@@ -0,0 +1,28 @@
import { IMessageDataWrapper, IMessageParser } from '@nitrots/api';
import { HanditemBlockStateMessageData } from '../engine';
export class HanditemBlockStateMessageParser implements IMessageParser
{
private _stateData: HanditemBlockStateMessageData;
public flush(): boolean
{
this._stateData = null;
return true;
}
public parse(wrapper: IMessageDataWrapper): boolean
{
if(!wrapper) return false;
this._stateData = new HanditemBlockStateMessageData(wrapper);
return true;
}
public get stateData(): HanditemBlockStateMessageData
{
return this._stateData;
}
}
@@ -1,4 +1,5 @@
export * from './AreaHideMessageParser';
export * from './ConfInvisStateMessageParser';
export * from './CustomUserNotificationMessageParser';
export * from './DiceValueMessageParser';
export * from './FurniRentOrBuyoutOfferMessageParser';
@@ -6,6 +7,7 @@ export * from './FurnitureAliasesParser';
export * from './FurnitureDataParser';
export * from './FurnitureStackHeightParser';
export * from './GroupFurniContextMenuInfoMessageParser';
export * from './HanditemBlockStateMessageParser';
export * from './ItemDataUpdateMessageParser';
export * from './LoveLockFurniFinishedParser';
export * from './LoveLockFurniFriendConfirmedParser';