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
49 lines
1.5 KiB
TypeScript
49 lines
1.5 KiB
TypeScript
import { IConnection, IRoomHandlerListener, RoomControllerLevel } from '@nitrots/api';
|
|
import { RoomRightsClearEvent, RoomRightsEvent, RoomRightsOwnerEvent } from '@nitrots/communication';
|
|
import { BaseHandler } from './BaseHandler';
|
|
|
|
export class RoomPermissionsHandler extends BaseHandler
|
|
{
|
|
constructor(connection: IConnection, listener: IRoomHandlerListener)
|
|
{
|
|
super(connection, listener);
|
|
|
|
connection.addMessageEvent(new RoomRightsEvent(this.onRoomRightsEvent.bind(this)));
|
|
connection.addMessageEvent(new RoomRightsClearEvent(this.onRoomRightsClearEvent.bind(this)));
|
|
connection.addMessageEvent(new RoomRightsOwnerEvent(this.onRoomRightsOwnerEvent.bind(this)));
|
|
}
|
|
|
|
private onRoomRightsEvent(event: RoomRightsEvent): void
|
|
{
|
|
if(!(event instanceof RoomRightsEvent)) return;
|
|
|
|
const session = this.listener.getSession(this.roomId);
|
|
|
|
if(!session) return;
|
|
|
|
session.setControllerLevel(event.getParser().controllerLevel);
|
|
}
|
|
|
|
private onRoomRightsClearEvent(event: RoomRightsClearEvent): void
|
|
{
|
|
if(!(event instanceof RoomRightsClearEvent)) return;
|
|
|
|
const session = this.listener.getSession(this.roomId);
|
|
|
|
if(!session) return;
|
|
|
|
session.setControllerLevel(RoomControllerLevel.NONE);
|
|
}
|
|
|
|
private onRoomRightsOwnerEvent(event: RoomRightsOwnerEvent): void
|
|
{
|
|
if(!(event instanceof RoomRightsOwnerEvent)) return;
|
|
|
|
const session = this.listener.getSession(this.roomId);
|
|
|
|
if(!session) return;
|
|
|
|
session.setRoomOwner();
|
|
}
|
|
}
|