You've already forked Nitro_Render_V3
mirror of
https://github.com/duckietm/Nitro_Render_V3.git
synced 2026-06-19 23:16:20 +00:00
🆙 added latest changes
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { IFurnitureStackingHeightMap, ILegacyWallGeometry, IObjectData, IRoomCanvasMouseListener, IRoomEngineServices, IRoomGeometry, IRoomObject, IRoomObjectController, IRoomObjectEventManager, ISelectedRoomObjectData, IVector3D, MouseEventType, RoomObjectCategory, RoomObjectOperationType, RoomObjectPlacementSource, RoomObjectType, RoomObjectUserType, RoomObjectVariable } from '@nitrots/api';
|
||||
import { BotPlaceComposer, FurnitureColorWheelComposer, FurnitureDiceActivateComposer, FurnitureDiceDeactivateComposer, FurnitureFloorUpdateComposer, FurnitureGroupInfoComposer, FurnitureMultiStateComposer, FurnitureOneWayDoorComposer, FurniturePickupComposer, FurniturePlaceComposer, FurniturePostItPlaceComposer, FurnitureRandomStateComposer, FurnitureWallMultiStateComposer, FurnitureWallUpdateComposer, GetCommunication, GetItemDataComposer, GetResolutionAchievementsMessageComposer, PetMoveComposer, PetPlaceComposer, RemoveWallItemComposer, RoomUnitLookComposer, RoomUnitWalkComposer, SetItemDataMessageComposer, SetObjectDataMessageComposer } from '@nitrots/communication';
|
||||
import { BotPlaceComposer, ClickFurniMessageComposer, FurnitureColorWheelComposer, FurnitureDiceActivateComposer, FurnitureDiceDeactivateComposer, FurnitureFloorUpdateComposer, FurnitureGroupInfoComposer, FurnitureMultiStateComposer, FurnitureOneWayDoorComposer, FurniturePickupComposer, FurniturePlaceComposer, FurniturePostItPlaceComposer, FurnitureRandomStateComposer, FurnitureWallMultiStateComposer, FurnitureWallUpdateComposer, GetCommunication, GetItemDataComposer, GetResolutionAchievementsMessageComposer, PetMoveComposer, PetPlaceComposer, RemoveWallItemComposer, RoomUnitLookComposer, RoomUnitWalkComposer, SetItemDataMessageComposer, SetObjectDataMessageComposer } from '@nitrots/communication';
|
||||
import { GetConfiguration } from '@nitrots/configuration';
|
||||
import { GetEventDispatcher, RoomEngineDimmerStateEvent, RoomEngineObjectEvent, RoomEngineObjectPlacedEvent, RoomEngineObjectPlacedOnUserEvent, RoomEngineObjectPlaySoundEvent, RoomEngineRoomAdEvent, RoomEngineSamplePlaybackEvent, RoomEngineTriggerWidgetEvent, RoomEngineUseProductEvent, RoomObjectBadgeAssetEvent, RoomObjectDataRequestEvent, RoomObjectDimmerStateUpdateEvent, RoomObjectEvent, RoomObjectFloorHoleEvent, RoomObjectFurnitureActionEvent, RoomObjectHSLColorEnableEvent, RoomObjectHSLColorEnabledEvent, RoomObjectMouseEvent, RoomObjectMoveEvent, RoomObjectPlaySoundIdEvent, RoomObjectRoomAdEvent, RoomObjectSamplePlaybackEvent, RoomObjectSoundMachineEvent, RoomObjectStateChangedEvent, RoomObjectTileMouseEvent, RoomObjectWallMouseEvent, RoomObjectWidgetRequestEvent, RoomSpriteMouseEvent } from '@nitrots/events';
|
||||
import { GetRoomSessionManager, GetSessionDataManager } from '@nitrots/session';
|
||||
@@ -185,6 +185,7 @@ export class RoomObjectEventHandler implements IRoomCanvasMouseListener, IRoomOb
|
||||
case RoomObjectWidgetRequestEvent.MONSTERPLANT_SEED_PLANT_CONFIRMATION_DIALOG:
|
||||
case RoomObjectWidgetRequestEvent.PURCHASABLE_CLOTHING_CONFIRMATION_DIALOG:
|
||||
case RoomObjectWidgetRequestEvent.BACKGROUND_COLOR:
|
||||
case RoomObjectWidgetRequestEvent.AREA_HIDE:
|
||||
case RoomObjectWidgetRequestEvent.MYSTERYBOX_OPEN_DIALOG:
|
||||
case RoomObjectWidgetRequestEvent.EFFECTBOX_OPEN_DIALOG:
|
||||
case RoomObjectWidgetRequestEvent.MYSTERYTROPHY_OPEN_DIALOG:
|
||||
@@ -265,6 +266,11 @@ export class RoomObjectEventHandler implements IRoomCanvasMouseListener, IRoomOb
|
||||
{
|
||||
if(!event || !event.type) return;
|
||||
|
||||
if(event instanceof RoomObjectTileMouseEvent)
|
||||
{
|
||||
this._roomEngine.areaSelectionManager.handleTileMouseEvent(event);
|
||||
}
|
||||
|
||||
switch(event.type)
|
||||
{
|
||||
case RoomObjectMouseEvent.CLICK:
|
||||
@@ -291,10 +297,36 @@ export class RoomObjectEventHandler implements IRoomCanvasMouseListener, IRoomOb
|
||||
}
|
||||
}
|
||||
|
||||
private clickRoomObject(event: RoomObjectMouseEvent): void
|
||||
{
|
||||
if(!event || event.altKey || event.ctrlKey || event.shiftKey) return;
|
||||
|
||||
const objectId = event.objectId;
|
||||
const objectType = event.objectType;
|
||||
const category = this._roomEngine.getRoomObjectCategoryForType(objectType);
|
||||
|
||||
if(category === RoomObjectCategory.FLOOR)
|
||||
{
|
||||
GetCommunication().connection.send(new ClickFurniMessageComposer(objectId, category));
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if(category === RoomObjectCategory.WALL)
|
||||
{
|
||||
// This packet only sends a negative number to tell the server that its a wall item
|
||||
GetCommunication().connection.send(new ClickFurniMessageComposer(-Math.abs(objectId), category));
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
private handleRoomObjectMouseClickEvent(event: RoomObjectMouseEvent, roomId: number): void
|
||||
{
|
||||
if(!event) return;
|
||||
|
||||
this.clickRoomObject(event);
|
||||
|
||||
let operation = RoomObjectOperationType.OBJECT_UNDEFINED;
|
||||
|
||||
const selectedData = this.getSelectedRoomObjectData(roomId);
|
||||
@@ -304,7 +336,7 @@ export class RoomObjectEventHandler implements IRoomCanvasMouseListener, IRoomOb
|
||||
let didWalk = false;
|
||||
let didMove = false;
|
||||
|
||||
if(this._whereYouClickIsWhereYouGo)
|
||||
if(this.whereYouClickIsWhereYouGo())
|
||||
{
|
||||
if(!operation || (operation === RoomObjectOperationType.OBJECT_UNDEFINED))
|
||||
{
|
||||
@@ -370,11 +402,20 @@ export class RoomObjectEventHandler implements IRoomCanvasMouseListener, IRoomOb
|
||||
case RoomObjectOperationType.OBJECT_UNDEFINED:
|
||||
if(category === RoomObjectCategory.ROOM)
|
||||
{
|
||||
if(!didWalk && (event instanceof RoomObjectTileMouseEvent)) this.onRoomObjectTileMouseEvent(roomId, event);
|
||||
if(!didWalk && (event instanceof RoomObjectTileMouseEvent)) this.handleClickOnTile(roomId, event);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.setSelectedObject(roomId, event.objectId, category);
|
||||
if(!this._roomEngine.isAreaSelectionMode() || (category === RoomObjectCategory.UNIT))
|
||||
{
|
||||
this.setSelectedObject(roomId, event.objectId, category);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.deselectObject(roomId);
|
||||
|
||||
GetEventDispatcher().dispatchEvent(new RoomEngineObjectEvent(RoomEngineObjectEvent.DESELECTED, roomId, -1, RoomObjectCategory.MINIMUM));
|
||||
}
|
||||
|
||||
didMove = false;
|
||||
|
||||
@@ -507,7 +548,7 @@ export class RoomObjectEventHandler implements IRoomCanvasMouseListener, IRoomOb
|
||||
|
||||
else if(event.object && (event.object.id !== -1))
|
||||
{
|
||||
if(this._whereYouClickIsWhereYouGo)
|
||||
if(this.whereYouClickIsWhereYouGo())
|
||||
{
|
||||
newEvent = this.handleMouseOverObject(category, roomId, event);
|
||||
}
|
||||
@@ -758,6 +799,9 @@ export class RoomObjectEventHandler implements IRoomCanvasMouseListener, IRoomOb
|
||||
case RoomObjectWidgetRequestEvent.BACKGROUND_COLOR:
|
||||
GetEventDispatcher().dispatchEvent(new RoomEngineTriggerWidgetEvent(RoomEngineTriggerWidgetEvent.REQUEST_BACKGROUND_COLOR, roomId, objectId, objectCategory));
|
||||
return;
|
||||
case RoomObjectWidgetRequestEvent.AREA_HIDE:
|
||||
GetEventDispatcher().dispatchEvent(new RoomEngineTriggerWidgetEvent(RoomEngineTriggerWidgetEvent.REQUEST_AREA_HIDE, roomId, objectId, objectCategory));
|
||||
return;
|
||||
case RoomObjectWidgetRequestEvent.MYSTERYBOX_OPEN_DIALOG:
|
||||
GetEventDispatcher().dispatchEvent(new RoomEngineTriggerWidgetEvent(RoomEngineTriggerWidgetEvent.REQUEST_MYSTERYBOX_OPEN_DIALOG, roomId, objectId, objectCategory));
|
||||
return;
|
||||
@@ -1017,13 +1061,15 @@ export class RoomObjectEventHandler implements IRoomCanvasMouseListener, IRoomOb
|
||||
}
|
||||
}
|
||||
|
||||
private onRoomObjectTileMouseEvent(roomId: number, event: RoomObjectTileMouseEvent): void
|
||||
private handleClickOnTile(roomId: number, event: RoomObjectTileMouseEvent): void
|
||||
{
|
||||
if(!this._roomEngine || this._roomEngine.isDecorating) return;
|
||||
|
||||
const session = GetRoomSessionManager().getSession(roomId);
|
||||
|
||||
if(!session || session.isSpectator) return;
|
||||
|
||||
this.sendWalkUpdate(event.tileXAsInt, event.tileYAsInt);
|
||||
if(!this._roomEngine.moveBlocked) this.sendWalkUpdate(event.tileXAsInt, event.tileYAsInt);
|
||||
}
|
||||
|
||||
private handleObjectMove(event: RoomObjectMouseEvent, roomId: number): void
|
||||
@@ -1480,14 +1526,12 @@ export class RoomObjectEventHandler implements IRoomCanvasMouseListener, IRoomOb
|
||||
|
||||
private handleMoveTargetFurni(k: number, _arg_2: RoomObjectMouseEvent): boolean
|
||||
{
|
||||
if((_arg_2.objectType === RoomObjectUserType.USER) || (_arg_2.objectType === RoomObjectUserType.PET) || (_arg_2.objectType === RoomObjectUserType.BOT) || (_arg_2.objectType === RoomObjectUserType.RENTABLE_BOT) || (_arg_2.objectType === RoomObjectUserType.MONSTER_PLANT)) return;
|
||||
const roomObject = this._roomEngine.getRoomObject(k, _arg_2.objectId, RoomObjectCategory.FLOOR);
|
||||
const point = this.getActiveSurfaceLocation(roomObject, _arg_2);
|
||||
|
||||
const _local_3 = this._roomEngine.getRoomObject(k, _arg_2.objectId, RoomObjectCategory.FLOOR);
|
||||
const _local_4 = this.getActiveSurfaceLocation(_local_3, _arg_2);
|
||||
|
||||
if(_local_4)
|
||||
if(point && !this._roomEngine.moveBlocked)
|
||||
{
|
||||
this.sendWalkUpdate(_local_4.x, _local_4.y);
|
||||
this.sendWalkUpdate(point.x, point.y);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -1548,7 +1592,7 @@ export class RoomObjectEventHandler implements IRoomCanvasMouseListener, IRoomOb
|
||||
|
||||
private handleMouseOverTile(k: RoomObjectTileMouseEvent, roomId: number): ObjectTileCursorUpdateMessage
|
||||
{
|
||||
if(this._whereYouClickIsWhereYouGo)
|
||||
if(this.whereYouClickIsWhereYouGo())
|
||||
{
|
||||
return new ObjectTileCursorUpdateMessage(new Vector3d(k.tileXAsInt, k.tileYAsInt, k.tileZAsInt), 0, true, k.eventId);
|
||||
}
|
||||
@@ -1955,17 +1999,17 @@ export class RoomObjectEventHandler implements IRoomCanvasMouseListener, IRoomOb
|
||||
|
||||
private placeObjectOnUser(roomId: number, objectId: number, category: number): void
|
||||
{
|
||||
const _local_4 = this.getSelectedRoomObjectData(roomId);
|
||||
const objectData = this.getSelectedRoomObjectData(roomId);
|
||||
|
||||
if(!_local_4) return;
|
||||
if(!objectData) return;
|
||||
|
||||
const _local_5 = (this._roomEngine.getRoomObject(roomId, objectId, category) as IRoomObjectController);
|
||||
const roomObjectController = this._roomEngine.getRoomObject(roomId, objectId, category);
|
||||
|
||||
if(!_local_5) return;
|
||||
if(!roomObjectController) return;
|
||||
|
||||
if(!this._roomEngine || !GetEventDispatcher()) return;
|
||||
|
||||
GetEventDispatcher().dispatchEvent(new RoomEngineObjectPlacedOnUserEvent(RoomEngineObjectEvent.PLACED_ON_USER, roomId, objectId, category, _local_4.id, _local_4.category));
|
||||
GetEventDispatcher().dispatchEvent(new RoomEngineObjectPlacedOnUserEvent(RoomEngineObjectEvent.PLACED_ON_USER, roomId, objectId, category, objectData.id, objectData.category));
|
||||
}
|
||||
|
||||
public setSelectedObject(roomId: number, objectId: number, category: number): void
|
||||
@@ -2187,4 +2231,9 @@ export class RoomObjectEventHandler implements IRoomCanvasMouseListener, IRoomOb
|
||||
{
|
||||
return this._selectedAvatarId;
|
||||
}
|
||||
|
||||
public whereYouClickIsWhereYouGo(): boolean
|
||||
{
|
||||
return this._roomEngine.whereYouClickIsWhereYouGo();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user