Skip to content

Commit c1e5609

Browse files
committed
billsonnn#28 - UseObjectMessageEvent added
1 parent 26741b7 commit c1e5609

File tree

11 files changed

+77
-2
lines changed

11 files changed

+77
-2
lines changed

src/api/nitro/room/IRoomCreator.ts

+1
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ export interface IRoomCreator
4545
updateRoomObjectUserPetGesture(roomId: number, objectId: number, gesture: string): boolean;
4646
updateRoomObjectUserPosture(roomId: number, objectId: number, type: string, parameter?: string): boolean;
4747
updateRoomObjectUserOwn(roomId: number, objectId: number): void;
48+
updateObjectUserAction(roomId: number, userId: number, figure: string, itemType: number): boolean;
4849
getPetTypeId(figure: string): number;
4950
refreshTileObjectMap(k: number, _arg_2: string): void;
5051
setRoomEngineGameMode(roomId: number, isPlaying: boolean): void;

src/nitro/communication/NitroMessages.ts

+4-1
Large diffs are not rendered by default.

src/nitro/communication/messages/incoming/IncomingHeader.ts

+1
Original file line numberDiff line numberDiff line change
@@ -414,4 +414,5 @@ export class IncomingHeader
414414
public static SHOW_ENFORCE_ROOM_CATEGORY = 3896;
415415
public static CUSTOM_USER_NOTIFICATION = 909;
416416
public static NEW_USER_EXPERIENCE_GIFT_OFFER = 3575;
417+
public static USE_OBJECT = 1774;
417418
}

src/nitro/communication/messages/incoming/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ export * from './room';
4545
export * from './room/access';
4646
export * from './room/access/doorbell';
4747
export * from './room/access/rights';
48+
export * from './room/action';
4849
export * from './room/bots';
4950
export * from './room/data';
5051
export * from './room/engine';
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { IMessageEvent } from '../../../../../../api';
2+
import { MessageEvent } from '../../../../../../events';
3+
import { UseObjectMessageParser } from '../../../parser';
4+
5+
export class UseObjectMessageEvent extends MessageEvent implements IMessageEvent
6+
{
7+
constructor(callBack: Function)
8+
{
9+
super(callBack, UseObjectMessageParser);
10+
}
11+
12+
public getParser(): UseObjectMessageParser
13+
{
14+
return this.parser as UseObjectMessageParser;
15+
}
16+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './UseObjectMessageEvent';

src/nitro/communication/messages/incoming/room/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
export * from './access';
22
export * from './access/doorbell';
33
export * from './access/rights';
4+
export * from './action';
45
export * from './bots';
56
export * from './data';
67
export * from './engine';
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import { IMessageDataWrapper, IMessageParser } from '../../../../../../api';
2+
3+
export class UseObjectMessageParser implements IMessageParser
4+
{
5+
private _userId: number;
6+
private _itemType: number;
7+
8+
public flush(): boolean
9+
{
10+
this._userId = 0;
11+
this._itemType = 0;
12+
13+
return true;
14+
}
15+
16+
public parse(wrapper: IMessageDataWrapper): boolean
17+
{
18+
if(!wrapper) return false;
19+
20+
this._userId = wrapper.readInt();
21+
this._itemType = wrapper.readInt();
22+
23+
return true;
24+
}
25+
26+
public get userId(): number
27+
{
28+
return this._userId;
29+
}
30+
31+
public get itemType(): number
32+
{
33+
return this._itemType;
34+
}
35+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './UseObjectMessageParser';

src/nitro/communication/messages/parser/room/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
export * from './access';
22
export * from './access/doorbell';
33
export * from './access/rights';
4+
export * from './action';
45
export * from './bots';
56
export * from './data';
67
export * from './engine';

src/nitro/room/RoomMessageHandler.ts

+15-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { AvatarGuideStatus, IConnection, IRoomCreator, IVector3D, LegacyDataType, ObjectRolling, PetType, RoomObjectType, RoomObjectUserType, RoomObjectVariable, Vector3d } from '../../api';
22
import { Disposable } from '../../core';
3-
import { DiceValueMessageEvent, FloorHeightMapEvent, FurnitureAliasesComposer, FurnitureAliasesEvent, FurnitureDataEvent, FurnitureFloorAddEvent, FurnitureFloorDataParser, FurnitureFloorEvent, FurnitureFloorRemoveEvent, FurnitureFloorUpdateEvent, FurnitureWallAddEvent, FurnitureWallDataParser, FurnitureWallEvent, FurnitureWallRemoveEvent, FurnitureWallUpdateEvent, GetRoomEntryDataMessageComposer, GuideSessionEndedMessageEvent, GuideSessionErrorMessageEvent, GuideSessionStartedMessageEvent, IgnoreResultEvent, ItemDataUpdateMessageEvent, ObjectsDataUpdateEvent, ObjectsRollingEvent, OneWayDoorStatusMessageEvent, PetExperienceEvent, PetFigureUpdateEvent, RoomEntryTileMessageEvent, RoomEntryTileMessageParser, RoomHeightMapEvent, RoomHeightMapUpdateEvent, RoomPaintEvent, RoomReadyMessageEvent, RoomUnitChatEvent, RoomUnitChatShoutEvent, RoomUnitChatWhisperEvent, RoomUnitDanceEvent, RoomUnitEffectEvent, RoomUnitEvent, RoomUnitExpressionEvent, RoomUnitHandItemEvent, RoomUnitIdleEvent, RoomUnitInfoEvent, RoomUnitNumberEvent, RoomUnitRemoveEvent, RoomUnitStatusEvent, RoomUnitTypingEvent, RoomVisualizationSettingsEvent, UserInfoEvent, YouArePlayingGameEvent } from '../communication';
3+
import { DiceValueMessageEvent, FloorHeightMapEvent, FurnitureAliasesComposer, FurnitureAliasesEvent, FurnitureDataEvent, FurnitureFloorAddEvent, FurnitureFloorDataParser, FurnitureFloorEvent, FurnitureFloorRemoveEvent, FurnitureFloorUpdateEvent, FurnitureWallAddEvent, FurnitureWallDataParser, FurnitureWallEvent, FurnitureWallRemoveEvent, FurnitureWallUpdateEvent, GetRoomEntryDataMessageComposer, GuideSessionEndedMessageEvent, GuideSessionErrorMessageEvent, GuideSessionStartedMessageEvent, IgnoreResultEvent, ItemDataUpdateMessageEvent, ObjectsDataUpdateEvent, ObjectsRollingEvent, OneWayDoorStatusMessageEvent, PetExperienceEvent, PetFigureUpdateEvent, RoomEntryTileMessageEvent, RoomEntryTileMessageParser, RoomHeightMapEvent, RoomHeightMapUpdateEvent, RoomPaintEvent, RoomReadyMessageEvent, RoomUnitChatEvent, RoomUnitChatShoutEvent, RoomUnitChatWhisperEvent, RoomUnitDanceEvent, RoomUnitEffectEvent, RoomUnitEvent, RoomUnitExpressionEvent, RoomUnitHandItemEvent, RoomUnitIdleEvent, RoomUnitInfoEvent, RoomUnitNumberEvent, RoomUnitRemoveEvent, RoomUnitStatusEvent, RoomUnitTypingEvent, RoomVisualizationSettingsEvent, UseObjectMessageEvent, UserInfoEvent, YouArePlayingGameEvent } from '../communication';
44
import { RoomPlaneParser } from './object/RoomPlaneParser';
55
import { RoomVariableEnum } from './RoomVariableEnum';
66
import { FurnitureStackingHeightMap, LegacyWallGeometry } from './utils';
@@ -100,6 +100,7 @@ export class RoomMessageHandler extends Disposable
100100
this._connection.addMessageEvent(new GuideSessionStartedMessageEvent(this.onGuideSessionStartedMessageEvent.bind(this)));
101101
this._connection.addMessageEvent(new GuideSessionEndedMessageEvent(this.onGuideSessionEndedMessageEvent.bind(this)));
102102
this._connection.addMessageEvent(new GuideSessionErrorMessageEvent(this.onGuideSessionErrorMessageEvent.bind(this)));
103+
this._connection.addMessageEvent(new UseObjectMessageEvent(this.onUseObjectMessageEvent.bind(this)));
103104
}
104105

105106
public setRoomId(id: number): void
@@ -929,6 +930,19 @@ export class RoomMessageHandler extends Disposable
929930
this.removeGuideMarker();
930931
}
931932

933+
private onUseObjectMessageEvent(event: UseObjectMessageEvent): void
934+
{
935+
if(!event) return;
936+
937+
const parser = event.getParser();
938+
939+
if(!parser) return;
940+
941+
if(!this._roomCreator) return;
942+
943+
this._roomCreator.updateObjectUserAction(this._currentRoomId, parser.userId, RoomObjectVariable.FIGURE_USE_OBJECT, parser.itemType);
944+
}
945+
932946
private updateGuideMarker(): void
933947
{
934948
const userId = this._roomCreator.sessionDataManager.userId;

0 commit comments

Comments
 (0)