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
Move to Renderer V2
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
import { IConnection, IRoomHandlerListener } from '@nitrots/api';
|
||||
|
||||
export class BaseHandler
|
||||
{
|
||||
private _connection: IConnection;
|
||||
private _listener: IRoomHandlerListener;
|
||||
private _roomId: number;
|
||||
|
||||
constructor(connection: IConnection, listener: IRoomHandlerListener)
|
||||
{
|
||||
this._connection = connection;
|
||||
this._listener = listener;
|
||||
this._roomId = 0;
|
||||
}
|
||||
|
||||
public dispose(): void
|
||||
{
|
||||
this._connection = null;
|
||||
this._listener = null;
|
||||
}
|
||||
|
||||
public setRoomId(id: number): void
|
||||
{
|
||||
this._roomId = id;
|
||||
}
|
||||
|
||||
public get connection(): IConnection
|
||||
{
|
||||
return this._connection;
|
||||
}
|
||||
|
||||
public get listener(): IRoomHandlerListener
|
||||
{
|
||||
return this._listener;
|
||||
}
|
||||
|
||||
public get roomId(): number
|
||||
{
|
||||
return this._roomId;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
import { GenericErrorEnum, IConnection, IRoomHandlerListener } from '@nitrots/api';
|
||||
import { GenericErrorEvent } from '@nitrots/communication';
|
||||
import { GetEventDispatcher, RoomSessionErrorMessageEvent } from '@nitrots/events';
|
||||
import { BaseHandler } from './BaseHandler';
|
||||
|
||||
export class GenericErrorHandler extends BaseHandler
|
||||
{
|
||||
constructor(connection: IConnection, listener: IRoomHandlerListener)
|
||||
{
|
||||
super(connection, listener);
|
||||
|
||||
connection.addMessageEvent(new GenericErrorEvent(this.onRoomGenericError.bind(this)));
|
||||
}
|
||||
|
||||
private onRoomGenericError(event: GenericErrorEvent): void
|
||||
{
|
||||
if(!(event instanceof GenericErrorEvent)) return;
|
||||
|
||||
const parser = event.getParser();
|
||||
|
||||
if(!parser) return;
|
||||
|
||||
const roomSession = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!roomSession) return;
|
||||
|
||||
let type: string = '';
|
||||
|
||||
switch(parser.errorCode)
|
||||
{
|
||||
case GenericErrorEnum.KICKED_OUT_OF_ROOM:
|
||||
type = RoomSessionErrorMessageEvent.RSEME_KICKED;
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
if(!type || type.length == 0) return;
|
||||
|
||||
GetEventDispatcher().dispatchEvent(new RoomSessionErrorMessageEvent(type, roomSession));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
import { IConnection, IRoomHandlerListener } from '@nitrots/api';
|
||||
import { GetCommunication, OpenPetPackageRequestedMessageEvent, OpenPetPackageResultMessageEvent } from '@nitrots/communication';
|
||||
import { GetEventDispatcher, RoomSessionPetPackageEvent } from '@nitrots/events';
|
||||
import { BaseHandler } from './BaseHandler';
|
||||
|
||||
export class PetPackageHandler extends BaseHandler
|
||||
{
|
||||
constructor(connection: IConnection, listener: IRoomHandlerListener)
|
||||
{
|
||||
super(connection, listener);
|
||||
|
||||
GetCommunication().registerMessageEvent(new OpenPetPackageRequestedMessageEvent(this.onOpenPetPackageRequested.bind(this)));
|
||||
GetCommunication().registerMessageEvent(new OpenPetPackageResultMessageEvent(this.onOpenPetPackageResult.bind(this)));
|
||||
}
|
||||
|
||||
private onOpenPetPackageRequested(event: OpenPetPackageRequestedMessageEvent): void
|
||||
{
|
||||
if(!this.listener) return;
|
||||
|
||||
const parser = event.getParser();
|
||||
|
||||
if(!parser) return;
|
||||
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
GetEventDispatcher().dispatchEvent(new RoomSessionPetPackageEvent(RoomSessionPetPackageEvent.RSOPPE_OPEN_PET_PACKAGE_REQUESTED, session, parser.objectId, parser.figureData, 0, null));
|
||||
}
|
||||
|
||||
private onOpenPetPackageResult(event: OpenPetPackageResultMessageEvent): void
|
||||
{
|
||||
if(!this.listener) return;
|
||||
|
||||
const parser = event.getParser();
|
||||
|
||||
if(!parser) return;
|
||||
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
GetEventDispatcher().dispatchEvent(new RoomSessionPetPackageEvent(RoomSessionPetPackageEvent.RSOPPE_OPEN_PET_PACKAGE_RESULT, session, parser.objectId, null, parser.nameValidationStatus, parser.nameValidationInfo));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,114 @@
|
||||
import { IConnection, IRoomHandlerListener } from '@nitrots/api';
|
||||
import { PollContentsEvent, PollErrorEvent, PollOfferEvent, RoomPollResultEvent, StartRoomPollEvent } from '@nitrots/communication';
|
||||
import { GetEventDispatcher, RoomSessionPollEvent, RoomSessionVoteEvent } from '@nitrots/events';
|
||||
import { BaseHandler } from './BaseHandler';
|
||||
|
||||
export class PollHandler extends BaseHandler
|
||||
{
|
||||
constructor(connection: IConnection, listener: IRoomHandlerListener)
|
||||
{
|
||||
super(connection, listener);
|
||||
|
||||
connection.addMessageEvent(new PollContentsEvent(this.onPollContentsEvent.bind(this)));
|
||||
connection.addMessageEvent(new PollOfferEvent(this.onPollOfferEvent.bind(this)));
|
||||
connection.addMessageEvent(new PollErrorEvent(this.onPollErrorEvent.bind(this)));
|
||||
connection.addMessageEvent(new StartRoomPollEvent(this.onStartRoomPollEvent.bind(this)));
|
||||
connection.addMessageEvent(new RoomPollResultEvent(this.onRoomPollResultEvent.bind(this)));
|
||||
}
|
||||
|
||||
private onPollContentsEvent(event: PollContentsEvent): void
|
||||
{
|
||||
if(!this.listener) return;
|
||||
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
const parser = event.getParser();
|
||||
|
||||
if(!parser) return;
|
||||
|
||||
const pollEvent = new RoomSessionPollEvent(RoomSessionPollEvent.CONTENT, session, parser.id);
|
||||
|
||||
pollEvent.startMessage = parser.startMessage;
|
||||
pollEvent.endMessage = parser.endMessage;
|
||||
pollEvent.numQuestions = parser.numQuestions;
|
||||
pollEvent.questionArray = parser.questionArray;
|
||||
pollEvent.npsPoll = parser.npsPoll;
|
||||
|
||||
GetEventDispatcher().dispatchEvent(pollEvent);
|
||||
}
|
||||
|
||||
private onPollOfferEvent(event: PollOfferEvent): void
|
||||
{
|
||||
if(!this.listener) return;
|
||||
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
const parser = event.getParser();
|
||||
|
||||
if(!parser) return;
|
||||
|
||||
const pollEvent = new RoomSessionPollEvent(RoomSessionPollEvent.OFFER, session, parser.id);
|
||||
|
||||
pollEvent.summary = parser.headline;
|
||||
pollEvent.summary = parser.summary;
|
||||
|
||||
GetEventDispatcher().dispatchEvent(pollEvent);
|
||||
}
|
||||
|
||||
private onPollErrorEvent(event: PollErrorEvent): void
|
||||
{
|
||||
if(!this.listener) return;
|
||||
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
const parser = event.getParser();
|
||||
|
||||
if(!parser) return;
|
||||
|
||||
const pollEvent = new RoomSessionPollEvent(RoomSessionPollEvent.ERROR, session, -1);
|
||||
pollEvent.headline = '???';
|
||||
pollEvent.summary = '???';
|
||||
|
||||
GetEventDispatcher().dispatchEvent(pollEvent);
|
||||
}
|
||||
|
||||
private onStartRoomPollEvent(event: StartRoomPollEvent): void
|
||||
{
|
||||
if(!this.listener) return;
|
||||
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
const parser = event.getParser();
|
||||
|
||||
if(!parser) return;
|
||||
|
||||
const pollEvent = new RoomSessionVoteEvent(RoomSessionVoteEvent.VOTE_QUESTION, session, parser.question, parser.choices);
|
||||
|
||||
GetEventDispatcher().dispatchEvent(pollEvent);
|
||||
}
|
||||
|
||||
private onRoomPollResultEvent(event: RoomPollResultEvent): void
|
||||
{
|
||||
if(!this.listener) return;
|
||||
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
const parser = event.getParser();
|
||||
|
||||
if(!parser) return;
|
||||
|
||||
const pollEvent = new RoomSessionVoteEvent(RoomSessionVoteEvent.VOTE_RESULT, session, parser.question, parser.choices, parser.SafeStr_7651, parser.SafeStr_7654);
|
||||
|
||||
GetEventDispatcher().dispatchEvent(pollEvent);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,173 @@
|
||||
import { IConnection, IRoomHandlerListener, SystemChatStyleEnum } from '@nitrots/api';
|
||||
import { FloodControlEvent, PetRespectNoficationEvent, PetSupplementTypeEnum, PetSupplementedNotificationEvent, RemainingMuteEvent, RespectReceivedEvent, RoomUnitChatEvent, RoomUnitChatShoutEvent, RoomUnitChatWhisperEvent, RoomUnitHandItemReceivedEvent } from '@nitrots/communication';
|
||||
import { GetEventDispatcher, RoomSessionChatEvent } from '@nitrots/events';
|
||||
import { BaseHandler } from './BaseHandler';
|
||||
|
||||
export class RoomChatHandler extends BaseHandler
|
||||
{
|
||||
constructor(connection: IConnection, listener: IRoomHandlerListener)
|
||||
{
|
||||
super(connection, listener);
|
||||
|
||||
connection.addMessageEvent(new RoomUnitChatEvent(this.onRoomUnitChatEvent.bind(this)));
|
||||
connection.addMessageEvent(new RoomUnitChatShoutEvent(this.onRoomUnitChatEvent.bind(this)));
|
||||
connection.addMessageEvent(new RoomUnitChatWhisperEvent(this.onRoomUnitChatEvent.bind(this)));
|
||||
connection.addMessageEvent(new RoomUnitHandItemReceivedEvent(this.onRoomUnitHandItemReceivedEvent.bind(this)));
|
||||
connection.addMessageEvent(new RespectReceivedEvent(this.onRespectReceivedEvent.bind(this)));
|
||||
connection.addMessageEvent(new PetRespectNoficationEvent(this.onPetRespectNoficationEvent.bind(this)));
|
||||
connection.addMessageEvent(new PetSupplementedNotificationEvent(this.onPetSupplementedNotificationEvent.bind(this)));
|
||||
connection.addMessageEvent(new FloodControlEvent(this.onFloodControlEvent.bind(this)));
|
||||
connection.addMessageEvent(new RemainingMuteEvent(this.onRemainingMuteEvent.bind(this)));
|
||||
}
|
||||
|
||||
private onRoomUnitChatEvent(event: RoomUnitChatEvent): void
|
||||
{
|
||||
if(!this.listener) return;
|
||||
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
const parser = event.getParser();
|
||||
|
||||
if(!parser) return;
|
||||
|
||||
let chatType: number = RoomSessionChatEvent.CHAT_TYPE_SPEAK;
|
||||
|
||||
if(event instanceof RoomUnitChatShoutEvent) chatType = RoomSessionChatEvent.CHAT_TYPE_SHOUT;
|
||||
else if(event instanceof RoomUnitChatWhisperEvent) chatType = RoomSessionChatEvent.CHAT_TYPE_WHISPER;
|
||||
|
||||
const chatEvent = new RoomSessionChatEvent(RoomSessionChatEvent.CHAT_EVENT, session, parser.roomIndex, parser.message, chatType, parser.bubble);
|
||||
|
||||
GetEventDispatcher().dispatchEvent(chatEvent);
|
||||
}
|
||||
|
||||
private onRoomUnitHandItemReceivedEvent(event: RoomUnitHandItemReceivedEvent): void
|
||||
{
|
||||
if(!this.listener) return;
|
||||
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
const parser = event.getParser();
|
||||
|
||||
if(!parser) return;
|
||||
|
||||
GetEventDispatcher().dispatchEvent(new RoomSessionChatEvent(RoomSessionChatEvent.CHAT_EVENT, session, parser.giverUserId, '', RoomSessionChatEvent.CHAT_TYPE_HAND_ITEM_RECEIVED, SystemChatStyleEnum.GENERIC, [], parser.handItemType));
|
||||
}
|
||||
|
||||
private onRespectReceivedEvent(event: RespectReceivedEvent): void
|
||||
{
|
||||
if(!this.listener) return;
|
||||
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
const parser = event.getParser();
|
||||
|
||||
if(!parser) return;
|
||||
|
||||
const userData = session.userDataManager.getUserData(parser.userId);
|
||||
|
||||
if(!userData) return;
|
||||
|
||||
GetEventDispatcher().dispatchEvent(new RoomSessionChatEvent(RoomSessionChatEvent.CHAT_EVENT, session, userData.roomIndex, '', RoomSessionChatEvent.CHAT_TYPE_RESPECT, SystemChatStyleEnum.GENERIC));
|
||||
}
|
||||
|
||||
private onPetRespectNoficationEvent(event: PetRespectNoficationEvent): void
|
||||
{
|
||||
if(!this.listener) return;
|
||||
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
const parser = event.getParser();
|
||||
|
||||
if(!parser) return;
|
||||
|
||||
const petData = session.userDataManager.getPetData(parser.petData.id);
|
||||
|
||||
if(!petData) return;
|
||||
|
||||
let chatType = RoomSessionChatEvent.CHAT_TYPE_PETRESPECT;
|
||||
|
||||
if(parser.isTreat) chatType = RoomSessionChatEvent.CHAT_TYPE_PETTREAT;
|
||||
|
||||
GetEventDispatcher().dispatchEvent(new RoomSessionChatEvent(RoomSessionChatEvent.CHAT_EVENT, session, petData.roomIndex, '', chatType, SystemChatStyleEnum.GENERIC));
|
||||
}
|
||||
|
||||
private onPetSupplementedNotificationEvent(event: PetSupplementedNotificationEvent): void
|
||||
{
|
||||
if(!this.listener) return;
|
||||
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
const parser = event.getParser();
|
||||
|
||||
if(!parser) return;
|
||||
|
||||
const petData = session.userDataManager.getPetData(parser.petId);
|
||||
|
||||
if(!petData) return;
|
||||
|
||||
let userRoomIndex = -1;
|
||||
|
||||
const userData = session.userDataManager.getUserData(parser.userId);
|
||||
|
||||
if(userData) userRoomIndex = userData.roomIndex;
|
||||
|
||||
let chatType = RoomSessionChatEvent.CHAT_TYPE_PETREVIVE;
|
||||
|
||||
switch(parser.supplementType)
|
||||
{
|
||||
case PetSupplementTypeEnum.REVIVE:
|
||||
chatType = RoomSessionChatEvent.CHAT_TYPE_PETREVIVE;
|
||||
break;
|
||||
case PetSupplementTypeEnum.REBREED_FERTILIZER:
|
||||
chatType = RoomSessionChatEvent.CHAT_TYPE_PET_REBREED_FERTILIZE;
|
||||
break;
|
||||
case PetSupplementTypeEnum.SPEED_FERTILIZER:
|
||||
chatType = RoomSessionChatEvent.CHAT_TYPE_PET_SPEED_FERTILIZE;
|
||||
break;
|
||||
}
|
||||
|
||||
GetEventDispatcher().dispatchEvent(new RoomSessionChatEvent(RoomSessionChatEvent.CHAT_EVENT, session, petData.roomIndex, '', chatType, SystemChatStyleEnum.GENERIC, null, userRoomIndex));
|
||||
}
|
||||
|
||||
private onFloodControlEvent(event: FloodControlEvent): void
|
||||
{
|
||||
if(!this.listener) return;
|
||||
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
const parser = event.getParser();
|
||||
|
||||
if(!parser) return;
|
||||
|
||||
const seconds = parser.seconds;
|
||||
|
||||
GetEventDispatcher().dispatchEvent(new RoomSessionChatEvent(RoomSessionChatEvent.FLOOD_EVENT, session, -1, seconds.toString(), 0, 0));
|
||||
}
|
||||
|
||||
private onRemainingMuteEvent(event: RemainingMuteEvent): void
|
||||
{
|
||||
if(!this.listener) return;
|
||||
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
const parser = event.getParser();
|
||||
|
||||
if(!parser) return;
|
||||
|
||||
GetEventDispatcher().dispatchEvent(new RoomSessionChatEvent(RoomSessionChatEvent.CHAT_EVENT, session, session.ownRoomIndex, '', RoomSessionChatEvent.CHAT_TYPE_MUTE_REMAINING, SystemChatStyleEnum.GENERIC, [], parser.seconds));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
import { IConnection, IRoomHandlerListener } from '@nitrots/api';
|
||||
import { GetGuestRoomResultEvent } from '@nitrots/communication';
|
||||
import { GetEventDispatcher, RoomSessionEvent, RoomSessionPropertyUpdateEvent } from '@nitrots/events';
|
||||
import { BaseHandler } from './BaseHandler';
|
||||
|
||||
export class RoomDataHandler extends BaseHandler
|
||||
{
|
||||
constructor(connection: IConnection, listener: IRoomHandlerListener)
|
||||
{
|
||||
super(connection, listener);
|
||||
|
||||
connection.addMessageEvent(new GetGuestRoomResultEvent(this.onGetGuestRoomResultEvent.bind(this)));
|
||||
}
|
||||
|
||||
private onGetGuestRoomResultEvent(event: GetGuestRoomResultEvent): void
|
||||
{
|
||||
if(!(event instanceof GetGuestRoomResultEvent)) return;
|
||||
|
||||
const parser = event.getParser();
|
||||
|
||||
if(!parser) return;
|
||||
|
||||
if(parser.roomForward) return;
|
||||
|
||||
const roomSession = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!roomSession) return;
|
||||
|
||||
const roomData = parser.data;
|
||||
|
||||
roomSession.tradeMode = roomData.tradeMode;
|
||||
roomSession.isGuildRoom = (roomData.habboGroupId !== 0);
|
||||
roomSession.doorMode = roomData.doorMode;
|
||||
roomSession.allowPets = roomData.allowPets;
|
||||
roomSession.moderationSettings = parser.moderation;
|
||||
|
||||
GetEventDispatcher().dispatchEvent(new RoomSessionPropertyUpdateEvent(RoomSessionPropertyUpdateEvent.RSDUE_ALLOW_PETS, roomSession));
|
||||
GetEventDispatcher().dispatchEvent(new RoomSessionEvent(RoomSessionEvent.ROOM_DATA, roomSession));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
import { IConnection, IRoomHandlerListener } from '@nitrots/api';
|
||||
import { RoomDimmerPresetsEvent } from '@nitrots/communication';
|
||||
import { GetEventDispatcher, RoomSessionDimmerPresetsEvent } from '@nitrots/events';
|
||||
import { BaseHandler } from './BaseHandler';
|
||||
|
||||
export class RoomDimmerPresetsHandler extends BaseHandler
|
||||
{
|
||||
constructor(connection: IConnection, listener: IRoomHandlerListener)
|
||||
{
|
||||
super(connection, listener);
|
||||
|
||||
connection.addMessageEvent(new RoomDimmerPresetsEvent(this.onRoomDimmerPresets.bind(this)));
|
||||
}
|
||||
|
||||
private onRoomDimmerPresets(event: RoomDimmerPresetsEvent): void
|
||||
{
|
||||
if(!event) return;
|
||||
|
||||
const parser = event.getParser();
|
||||
|
||||
if(!parser) return;
|
||||
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
const presetEvent = new RoomSessionDimmerPresetsEvent(RoomSessionDimmerPresetsEvent.ROOM_DIMMER_PRESETS, session);
|
||||
|
||||
presetEvent.selectedPresetId = parser.selectedPresetId;
|
||||
|
||||
let i = 0;
|
||||
|
||||
while(i < parser.presetCount)
|
||||
{
|
||||
const preset = parser.getPreset(i);
|
||||
|
||||
if(preset) presetEvent.storePreset(preset.id, preset.type, preset.color, preset.brightness);
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
GetEventDispatcher().dispatchEvent(presetEvent);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
import { IConnection, IRoomHandlerListener } from '@nitrots/api';
|
||||
import { PresentOpenedMessageEvent } from '@nitrots/communication';
|
||||
import { GetEventDispatcher, RoomSessionPresentEvent } from '@nitrots/events';
|
||||
import { BaseHandler } from './BaseHandler';
|
||||
|
||||
export class RoomPresentHandler extends BaseHandler
|
||||
{
|
||||
constructor(connection: IConnection, listener: IRoomHandlerListener)
|
||||
{
|
||||
super(connection, listener);
|
||||
|
||||
if(!connection) return;
|
||||
|
||||
connection.addMessageEvent(new PresentOpenedMessageEvent(this.onFurnitureGiftOpenedEvent.bind(this)));
|
||||
}
|
||||
|
||||
private onFurnitureGiftOpenedEvent(event: PresentOpenedMessageEvent): void
|
||||
{
|
||||
if(!event) return;
|
||||
|
||||
const parser = event.getParser();
|
||||
|
||||
if(!parser) return;
|
||||
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
GetEventDispatcher().dispatchEvent(new RoomSessionPresentEvent(RoomSessionPresentEvent.RSPE_PRESENT_OPENED, session, parser.classId, parser.itemType, parser.productCode, parser.placedItemId, parser.placedItemType, parser.placedInRoom, parser.petFigureString));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,113 @@
|
||||
import { IConnection, IRoomHandlerListener } from '@nitrots/api';
|
||||
import { DesktopViewEvent, FlatAccessDeniedMessageEvent, GoToFlatMessageComposer, RoomDoorbellAcceptedEvent, RoomEnterEvent, RoomReadyMessageEvent, YouAreSpectatorMessageEvent } from '@nitrots/communication';
|
||||
import { GetEventDispatcher, RoomSessionDoorbellEvent, RoomSessionSpectatorModeEvent } from '@nitrots/events';
|
||||
import { BaseHandler } from './BaseHandler';
|
||||
|
||||
export class RoomSessionHandler extends BaseHandler
|
||||
{
|
||||
public static RS_CONNECTED: string = 'RS_CONNECTED';
|
||||
public static RS_READY: string = 'RS_READY';
|
||||
public static RS_DISCONNECTED: string = 'RS_DISCONNECTED';
|
||||
|
||||
constructor(connection: IConnection, listener: IRoomHandlerListener)
|
||||
{
|
||||
super(connection, listener);
|
||||
|
||||
connection.addMessageEvent(new RoomEnterEvent(this.onRoomEnterEvent.bind(this)));
|
||||
connection.addMessageEvent(new RoomReadyMessageEvent(this.onRoomReadyMessageEvent.bind(this)));
|
||||
connection.addMessageEvent(new DesktopViewEvent(this.onDesktopViewEvent.bind(this)));
|
||||
connection.addMessageEvent(new RoomDoorbellAcceptedEvent(this.onRoomDoorbellAcceptedEvent.bind(this)));
|
||||
connection.addMessageEvent(new FlatAccessDeniedMessageEvent(this.onRoomDoorbellRejectedEvent.bind(this)));
|
||||
connection.addMessageEvent(new YouAreSpectatorMessageEvent(this.onYouAreSpectatorMessageEvent.bind(this)));
|
||||
}
|
||||
|
||||
private onRoomEnterEvent(event: RoomEnterEvent): void
|
||||
{
|
||||
if(!(event instanceof RoomEnterEvent)) return;
|
||||
|
||||
if(this.listener) this.listener.sessionUpdate(this.roomId, RoomSessionHandler.RS_CONNECTED);
|
||||
}
|
||||
|
||||
private onRoomReadyMessageEvent(event: RoomReadyMessageEvent): void
|
||||
{
|
||||
if(!(event instanceof RoomReadyMessageEvent)) return;
|
||||
|
||||
const fromRoomId = this.roomId;
|
||||
const toRoomId = event.getParser().roomId;
|
||||
|
||||
if(this.listener)
|
||||
{
|
||||
this.listener.sessionReinitialize(fromRoomId, toRoomId);
|
||||
this.listener.sessionUpdate(this.roomId, RoomSessionHandler.RS_READY);
|
||||
}
|
||||
}
|
||||
|
||||
private onDesktopViewEvent(event: DesktopViewEvent): void
|
||||
{
|
||||
if(!(event instanceof DesktopViewEvent)) return;
|
||||
|
||||
if(this.listener) this.listener.sessionUpdate(this.roomId, RoomSessionHandler.RS_DISCONNECTED);
|
||||
}
|
||||
|
||||
private onRoomDoorbellAcceptedEvent(event: RoomDoorbellAcceptedEvent): void
|
||||
{
|
||||
if(!(event instanceof RoomDoorbellAcceptedEvent) || !this.listener) return;
|
||||
|
||||
const parser = event.getParser();
|
||||
|
||||
if(!parser) return;
|
||||
|
||||
const username = parser.userName;
|
||||
|
||||
if(!username || !username.length)
|
||||
{
|
||||
this.connection.send(new GoToFlatMessageComposer(this.roomId));
|
||||
}
|
||||
else
|
||||
{
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
GetEventDispatcher().dispatchEvent(new RoomSessionDoorbellEvent(RoomSessionDoorbellEvent.RSDE_ACCEPTED, session, username));
|
||||
}
|
||||
}
|
||||
|
||||
private onRoomDoorbellRejectedEvent(event: FlatAccessDeniedMessageEvent): void
|
||||
{
|
||||
if(!(event instanceof FlatAccessDeniedMessageEvent) || !this.listener) return;
|
||||
|
||||
const parser = event.getParser();
|
||||
|
||||
if(!parser) return;
|
||||
|
||||
const username = parser.userName;
|
||||
|
||||
if(!username || !username.length)
|
||||
{
|
||||
this.listener.sessionUpdate(this.roomId, RoomSessionHandler.RS_DISCONNECTED);
|
||||
}
|
||||
else
|
||||
{
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
GetEventDispatcher().dispatchEvent(new RoomSessionDoorbellEvent(RoomSessionDoorbellEvent.RSDE_REJECTED, session, username));
|
||||
}
|
||||
}
|
||||
|
||||
private onYouAreSpectatorMessageEvent(event: YouAreSpectatorMessageEvent): void
|
||||
{
|
||||
if(this.listener)
|
||||
{
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
session.isSpectator = true;
|
||||
|
||||
GetEventDispatcher().dispatchEvent(new RoomSessionSpectatorModeEvent(RoomSessionSpectatorModeEvent.SPECTATOR_MODE, session));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,475 @@
|
||||
import { IConnection, IRoomHandlerListener, IRoomUserData } from '@nitrots/api';
|
||||
import { BotErrorEvent, ConfirmBreedingRequestEvent, ConfirmBreedingResultEvent, DoorbellMessageEvent, FavoriteMembershipUpdateMessageEvent, NestBreedingSuccessEvent, NewFriendRequestEvent, PetBreedingMessageEvent, PetBreedingResultEvent, PetFigureUpdateEvent, PetInfoEvent, PetLevelUpdateMessageEvent, PetPlacingErrorEvent, PetStatusUpdateEvent, RoomUnitDanceEvent, RoomUnitEvent, RoomUnitInfoEvent, RoomUnitRemoveEvent, UserCurrentBadgesEvent, UserNameChangeMessageEvent } from '@nitrots/communication';
|
||||
import { GetEventDispatcher, RoomSessionConfirmPetBreedingEvent, RoomSessionConfirmPetBreedingResultEvent, RoomSessionDanceEvent, RoomSessionDoorbellEvent, RoomSessionErrorMessageEvent, RoomSessionFavoriteGroupUpdateEvent, RoomSessionFriendRequestEvent, RoomSessionNestBreedingSuccessEvent, RoomSessionPetBreedingEvent, RoomSessionPetBreedingResultEvent, RoomSessionPetFigureUpdateEvent, RoomSessionPetInfoUpdateEvent, RoomSessionPetLevelUpdateEvent, RoomSessionPetStatusUpdateEvent, RoomSessionUserBadgesEvent, RoomSessionUserDataUpdateEvent, RoomSessionUserFigureUpdateEvent } from '@nitrots/events';
|
||||
import { RoomPetData } from '../RoomPetData';
|
||||
import { RoomUserData } from '../RoomUserData';
|
||||
import { BaseHandler } from './BaseHandler';
|
||||
|
||||
export class RoomUsersHandler extends BaseHandler
|
||||
{
|
||||
constructor(connection: IConnection, listener: IRoomHandlerListener)
|
||||
{
|
||||
super(connection, listener);
|
||||
|
||||
connection.addMessageEvent(new RoomUnitEvent(this.onRoomUnitEvent.bind(this)));
|
||||
connection.addMessageEvent(new RoomUnitInfoEvent(this.onRoomUnitInfoEvent.bind(this)));
|
||||
connection.addMessageEvent(new RoomUnitRemoveEvent(this.onRoomUnitRemoveEvent.bind(this)));
|
||||
connection.addMessageEvent(new RoomUnitDanceEvent(this.onRoomUnitDanceEvent.bind(this)));
|
||||
connection.addMessageEvent(new UserCurrentBadgesEvent(this.onUserCurrentBadgesEvent.bind(this)));
|
||||
connection.addMessageEvent(new DoorbellMessageEvent(this.onRoomDoorbellEvent.bind(this)));
|
||||
connection.addMessageEvent(new UserNameChangeMessageEvent(this.onUserNameChangeMessageEvent.bind(this)));
|
||||
connection.addMessageEvent(new NewFriendRequestEvent(this.onNewFriendRequestEvent.bind(this)));
|
||||
connection.addMessageEvent(new PetInfoEvent(this.onPetInfoEvent.bind(this)));
|
||||
connection.addMessageEvent(new PetStatusUpdateEvent(this.onPetStatusUpdateEvent.bind(this)));
|
||||
connection.addMessageEvent(new PetBreedingMessageEvent(this.onPetBreedingMessageEvent.bind(this)));
|
||||
connection.addMessageEvent(new PetLevelUpdateMessageEvent(this.onPetLevelUpdateMessageEvent.bind(this)));
|
||||
connection.addMessageEvent(new ConfirmBreedingResultEvent(this.onConfirmBreedingResultEvent.bind(this)));
|
||||
connection.addMessageEvent(new NestBreedingSuccessEvent(this.onNestBreedingSuccessEvent.bind(this)));
|
||||
connection.addMessageEvent(new ConfirmBreedingRequestEvent(this.onConfirmBreedingRequestEvent.bind(this)));
|
||||
connection.addMessageEvent(new PetFigureUpdateEvent(this.onPetFigureUpdateEvent.bind(this)));
|
||||
connection.addMessageEvent(new PetBreedingResultEvent(this.onPetBreedingResultEvent.bind(this)));
|
||||
connection.addMessageEvent(new PetPlacingErrorEvent(this.onPetPlacingError.bind(this)));
|
||||
connection.addMessageEvent(new BotErrorEvent(this.onBotError.bind(this)));
|
||||
connection.addMessageEvent(new FavoriteMembershipUpdateMessageEvent(this.onFavoriteMembershipUpdateMessageEvent.bind(this)));
|
||||
}
|
||||
|
||||
private onRoomUnitEvent(event: RoomUnitEvent): void
|
||||
{
|
||||
if(!this.listener) return;
|
||||
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
const users = event.getParser().users;
|
||||
|
||||
const usersToAdd: IRoomUserData[] = [];
|
||||
|
||||
if(users && users.length)
|
||||
{
|
||||
for(const user of users)
|
||||
{
|
||||
if(!user) continue;
|
||||
|
||||
const userData = new RoomUserData(user.roomIndex);
|
||||
|
||||
userData.name = user.name;
|
||||
userData.custom = user.custom;
|
||||
userData.activityPoints = user.activityPoints;
|
||||
userData.figure = user.figure;
|
||||
userData.type = user.userType;
|
||||
userData.webID = user.webID;
|
||||
userData.groupId = user.groupID;
|
||||
userData.groupName = user.groupName;
|
||||
userData.groupStatus = user.groupStatus;
|
||||
userData.sex = user.sex;
|
||||
userData.ownerId = user.ownerId;
|
||||
userData.ownerName = user.ownerName;
|
||||
userData.rarityLevel = user.rarityLevel;
|
||||
userData.hasSaddle = user.hasSaddle;
|
||||
userData.isRiding = user.isRiding;
|
||||
userData.canBreed = user.canBreed;
|
||||
userData.canHarvest = user.canHarvest;
|
||||
userData.canRevive = user.canRevive;
|
||||
userData.hasBreedingPermission = user.hasBreedingPermission;
|
||||
userData.petLevel = user.petLevel;
|
||||
userData.botSkills = user.botSkills;
|
||||
userData.isModerator = user.isModerator;
|
||||
|
||||
if(!session.userDataManager.getUserData(user.roomIndex)) usersToAdd.push(userData);
|
||||
|
||||
session.userDataManager.updateUserData(userData);
|
||||
}
|
||||
}
|
||||
|
||||
GetEventDispatcher().dispatchEvent(new RoomSessionUserDataUpdateEvent(session, usersToAdd));
|
||||
}
|
||||
|
||||
private onRoomUnitInfoEvent(event: RoomUnitInfoEvent): void
|
||||
{
|
||||
if(!this.listener) return;
|
||||
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
const parser = event.getParser();
|
||||
|
||||
if(!parser) return;
|
||||
|
||||
session.userDataManager.updateFigure(parser.unitId, parser.figure, parser.gender, false, false);
|
||||
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));
|
||||
|
||||
}
|
||||
|
||||
private onRoomUnitRemoveEvent(event: RoomUnitRemoveEvent): void
|
||||
{
|
||||
if(!this.listener) return;
|
||||
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
session.userDataManager.removeUserData(event.getParser().unitId);
|
||||
}
|
||||
|
||||
private onRoomUnitDanceEvent(event: RoomUnitDanceEvent): void
|
||||
{
|
||||
if(!this.listener) return;
|
||||
|
||||
const parser = event.getParser();
|
||||
|
||||
if(!parser) return;
|
||||
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
GetEventDispatcher().dispatchEvent(new RoomSessionDanceEvent(session, parser.unitId, parser.danceId));
|
||||
}
|
||||
|
||||
private onUserCurrentBadgesEvent(event: UserCurrentBadgesEvent): void
|
||||
{
|
||||
if(!this.listener) return;
|
||||
|
||||
const parser = event.getParser();
|
||||
|
||||
if(!parser) return;
|
||||
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
session.userDataManager.setUserBadges(parser.userId, parser.badges);
|
||||
|
||||
GetEventDispatcher().dispatchEvent(new RoomSessionUserBadgesEvent(session, parser.userId, parser.badges));
|
||||
}
|
||||
|
||||
private onRoomDoorbellEvent(event: DoorbellMessageEvent): void
|
||||
{
|
||||
if(!this.listener) return;
|
||||
|
||||
const parser = event.getParser();
|
||||
|
||||
if(!parser) return;
|
||||
|
||||
const username = parser.userName;
|
||||
|
||||
if(!username || !username.length) return;
|
||||
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
GetEventDispatcher().dispatchEvent(new RoomSessionDoorbellEvent(RoomSessionDoorbellEvent.DOORBELL, session, username));
|
||||
}
|
||||
|
||||
private onUserNameChangeMessageEvent(event: UserNameChangeMessageEvent): void
|
||||
{
|
||||
if(!this.listener) return;
|
||||
|
||||
const parser = event.getParser();
|
||||
|
||||
if(!parser) return;
|
||||
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
session.userDataManager.updateName(parser.id, parser.newName);
|
||||
}
|
||||
|
||||
private onNewFriendRequestEvent(event: NewFriendRequestEvent): void
|
||||
{
|
||||
if(!this.listener) return;
|
||||
|
||||
const parser = event.getParser();
|
||||
|
||||
if(!parser) return;
|
||||
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
const request = parser.request;
|
||||
|
||||
GetEventDispatcher().dispatchEvent(new RoomSessionFriendRequestEvent(session, request.requestId, request.requesterUserId, request.requesterName));
|
||||
}
|
||||
|
||||
private onPetInfoEvent(event: PetInfoEvent): void
|
||||
{
|
||||
if(!this.listener) return;
|
||||
|
||||
const parser = event.getParser();
|
||||
|
||||
if(!parser) return;
|
||||
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
const petData = new RoomPetData();
|
||||
|
||||
petData.id = parser.id;
|
||||
petData.level = parser.level;
|
||||
petData.maximumLevel = parser.maximumLevel;
|
||||
petData.experience = parser.experience;
|
||||
petData.levelExperienceGoal = parser.levelExperienceGoal;
|
||||
petData.energy = parser.energy;
|
||||
petData.maximumEnergy = parser.maximumEnergy;
|
||||
petData.happyness = parser.happyness;
|
||||
petData.maximumHappyness = parser.maximumHappyness;
|
||||
petData.ownerId = parser.ownerId;
|
||||
petData.ownerName = parser.ownerName;
|
||||
petData.respect = parser.respect;
|
||||
petData.age = parser.age;
|
||||
petData.unknownRarity = parser.unknownRarity;
|
||||
petData.saddle = parser.saddle;
|
||||
petData.rider = parser.rider;
|
||||
petData.breedable = parser.breedable;
|
||||
petData.fullyGrown = parser.fullyGrown;
|
||||
petData.rarityLevel = parser.rarityLevel;
|
||||
petData.dead = parser.dead;
|
||||
petData.skillTresholds = parser.skillTresholds;
|
||||
petData.publiclyRideable = parser.publiclyRideable;
|
||||
petData.maximumTimeToLive = parser.maximumTimeToLive;
|
||||
petData.remainingTimeToLive = parser.remainingTimeToLive;
|
||||
petData.remainingGrowTime = parser.remainingGrowTime;
|
||||
petData.publiclyBreedable = parser.publiclyBreedable;
|
||||
|
||||
GetEventDispatcher().dispatchEvent(new RoomSessionPetInfoUpdateEvent(session, petData));
|
||||
}
|
||||
|
||||
private onPetStatusUpdateEvent(event: PetStatusUpdateEvent): void
|
||||
{
|
||||
if(!this.listener) return;
|
||||
|
||||
const parser = event.getParser();
|
||||
|
||||
if(!parser) return;
|
||||
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
session.userDataManager.updatePetBreedingStatus(parser.roomIndex, parser.canBreed, parser.canHarvest, parser.canRevive, parser.hasBreedingPermission);
|
||||
|
||||
GetEventDispatcher().dispatchEvent(new RoomSessionPetStatusUpdateEvent(session, parser.petId, parser.canBreed, parser.canHarvest, parser.canRevive, parser.hasBreedingPermission));
|
||||
}
|
||||
|
||||
private onPetBreedingMessageEvent(event: PetBreedingMessageEvent): void
|
||||
{
|
||||
if(!this.listener) return;
|
||||
|
||||
const parser = event.getParser();
|
||||
|
||||
if(!parser) return;
|
||||
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
GetEventDispatcher().dispatchEvent(new RoomSessionPetBreedingEvent(session, parser.state, parser.ownPetId, parser.otherPetId));
|
||||
}
|
||||
|
||||
private onPetLevelUpdateMessageEvent(event: PetLevelUpdateMessageEvent): void
|
||||
{
|
||||
if(!this.listener) return;
|
||||
|
||||
const parser = event.getParser();
|
||||
|
||||
if(!parser) return;
|
||||
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
session.userDataManager.updatePetLevel(parser.roomIndex, parser.level);
|
||||
|
||||
GetEventDispatcher().dispatchEvent(new RoomSessionPetLevelUpdateEvent(session, parser.petId, parser.level));
|
||||
}
|
||||
|
||||
private onConfirmBreedingResultEvent(event: ConfirmBreedingResultEvent): void
|
||||
{
|
||||
if(!this.listener) return;
|
||||
|
||||
const parser = event.getParser();
|
||||
|
||||
if(!parser) return;
|
||||
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
GetEventDispatcher().dispatchEvent(new RoomSessionConfirmPetBreedingResultEvent(session, parser.breedingNestStuffId, parser.result));
|
||||
}
|
||||
|
||||
private onNestBreedingSuccessEvent(event: NestBreedingSuccessEvent): void
|
||||
{
|
||||
if(!this.listener) return;
|
||||
|
||||
const parser = event.getParser();
|
||||
|
||||
if(!parser) return;
|
||||
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
GetEventDispatcher().dispatchEvent(new RoomSessionNestBreedingSuccessEvent(session, parser.petId, parser.rarityCategory));
|
||||
}
|
||||
|
||||
private onConfirmBreedingRequestEvent(event: ConfirmBreedingRequestEvent): void
|
||||
{
|
||||
if(!this.listener) return;
|
||||
|
||||
const parser = event.getParser();
|
||||
|
||||
if(!parser) return;
|
||||
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
GetEventDispatcher().dispatchEvent(new RoomSessionConfirmPetBreedingEvent(session, parser.nestId, parser.pet1, parser.pet2, parser.rarityCategories, parser.resultPetType));
|
||||
}
|
||||
|
||||
private onPetFigureUpdateEvent(event: PetFigureUpdateEvent): void
|
||||
{
|
||||
if(!this.listener) return;
|
||||
|
||||
const parser = event.getParser();
|
||||
|
||||
if(!parser) return;
|
||||
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
const figure = parser.figureData.figuredata;
|
||||
|
||||
session.userDataManager.updateFigure(parser.roomIndex, figure, '', parser.hasSaddle, parser.isRiding);
|
||||
|
||||
GetEventDispatcher().dispatchEvent(new RoomSessionPetFigureUpdateEvent(session, parser.petId, figure));
|
||||
}
|
||||
|
||||
private onPetBreedingResultEvent(event: PetBreedingResultEvent): void
|
||||
{
|
||||
if(!this.listener) return;
|
||||
|
||||
const parser = event.getParser();
|
||||
|
||||
if(!parser) return;
|
||||
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
GetEventDispatcher().dispatchEvent(new RoomSessionPetBreedingResultEvent(session, parser.resultData, parser.otherResultData));
|
||||
}
|
||||
|
||||
private onPetPlacingError(event: PetPlacingErrorEvent): void
|
||||
{
|
||||
if(!event) return;
|
||||
|
||||
if(!this.listener) return;
|
||||
|
||||
const parser = event.getParser();
|
||||
|
||||
if(!parser) return;
|
||||
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
let type: string = '';
|
||||
|
||||
switch(parser.errorCode)
|
||||
{
|
||||
case 0:
|
||||
type = RoomSessionErrorMessageEvent.RSEME_PETS_FORBIDDEN_IN_HOTEL;
|
||||
break;
|
||||
case 1:
|
||||
type = RoomSessionErrorMessageEvent.RSEME_PETS_FORBIDDEN_IN_FLAT;
|
||||
break;
|
||||
case 2:
|
||||
type = RoomSessionErrorMessageEvent.RSEME_MAX_PETS;
|
||||
break;
|
||||
case 3:
|
||||
type = RoomSessionErrorMessageEvent.RSEME_NO_FREE_TILES_FOR_PET;
|
||||
break;
|
||||
case 4:
|
||||
type = RoomSessionErrorMessageEvent.RSEME_SELECTED_TILE_NOT_FREE_FOR_PET;
|
||||
break;
|
||||
case 5:
|
||||
type = RoomSessionErrorMessageEvent.RSEME_MAX_NUMBER_OF_OWN_PETS;
|
||||
break;
|
||||
}
|
||||
|
||||
if(!type || type.length == 0) return;
|
||||
|
||||
GetEventDispatcher().dispatchEvent(new RoomSessionErrorMessageEvent(type, session));
|
||||
}
|
||||
|
||||
private onBotError(event: BotErrorEvent): void
|
||||
{
|
||||
if(!event) return;
|
||||
|
||||
if(!this.listener) return;
|
||||
|
||||
const parser = event.getParser();
|
||||
|
||||
if(!parser) return;
|
||||
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
let type: string = '';
|
||||
|
||||
switch(parser.errorCode)
|
||||
{
|
||||
case 0:
|
||||
type = RoomSessionErrorMessageEvent.RSEME_BOTS_FORBIDDEN_IN_HOTEL;
|
||||
break;
|
||||
case 1:
|
||||
type = RoomSessionErrorMessageEvent.RSEME_BOTS_FORBIDDEN_IN_FLAT;
|
||||
break;
|
||||
case 2:
|
||||
type = RoomSessionErrorMessageEvent.RSEME_BOT_LIMIT_REACHED;
|
||||
break;
|
||||
case 3:
|
||||
type = RoomSessionErrorMessageEvent.RSEME_SELECTED_TILE_NOT_FREE_FOR_BOT;
|
||||
break;
|
||||
case 4:
|
||||
type = RoomSessionErrorMessageEvent.RSEME_BOT_NAME_NOT_ACCEPTED;
|
||||
break;
|
||||
}
|
||||
|
||||
if(!type || type.length == 0) return;
|
||||
|
||||
GetEventDispatcher().dispatchEvent(new RoomSessionErrorMessageEvent(type, session));
|
||||
}
|
||||
|
||||
private onFavoriteMembershipUpdateMessageEvent(event: FavoriteMembershipUpdateMessageEvent): void
|
||||
{
|
||||
if(!this.listener) return;
|
||||
|
||||
const parser = event.getParser();
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
const userData = session.userDataManager.getUserDataByIndex(parser.roomIndex);
|
||||
|
||||
if(!userData) return;
|
||||
|
||||
userData.groupId = parser.groupId;
|
||||
userData.groupName = parser.groupName;
|
||||
|
||||
GetEventDispatcher().dispatchEvent(new RoomSessionFavoriteGroupUpdateEvent(session, parser.roomIndex, parser.groupId, parser.status, parser.groupName));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
import { IConnection, IRoomHandlerListener } from '@nitrots/api';
|
||||
import { QuestionAnsweredEvent, QuestionEvent, QuestionFinishedEvent } from '@nitrots/communication';
|
||||
import { GetEventDispatcher, RoomSessionWordQuizEvent } from '@nitrots/events';
|
||||
import { BaseHandler } from './BaseHandler';
|
||||
|
||||
export class WordQuizHandler extends BaseHandler
|
||||
{
|
||||
constructor(connection: IConnection, listener: IRoomHandlerListener)
|
||||
{
|
||||
super(connection, listener);
|
||||
|
||||
connection.addMessageEvent(new QuestionEvent(this.onQuestionEvent.bind(this)));
|
||||
connection.addMessageEvent(new QuestionAnsweredEvent(this.onQuestionAnsweredEvent.bind(this)));
|
||||
connection.addMessageEvent(new QuestionFinishedEvent(this.onQuestionFinishedEvent.bind(this)));
|
||||
}
|
||||
|
||||
private onQuestionEvent(event: QuestionEvent): void
|
||||
{
|
||||
if(!this.listener) return;
|
||||
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
const parser = event.getParser();
|
||||
|
||||
if(!parser) return;
|
||||
|
||||
const quizEvent = new RoomSessionWordQuizEvent(RoomSessionWordQuizEvent.QUESTION, session, parser.pollId);
|
||||
|
||||
quizEvent.question = parser.question;
|
||||
quizEvent.duration = parser.duration;
|
||||
quizEvent.pollType = parser.pollType;
|
||||
quizEvent.questionId = parser.questionId;
|
||||
quizEvent.pollId = parser.pollId;
|
||||
|
||||
GetEventDispatcher().dispatchEvent(quizEvent);
|
||||
}
|
||||
|
||||
private onQuestionAnsweredEvent(event: QuestionAnsweredEvent): void
|
||||
{
|
||||
if(!this.listener) return;
|
||||
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
const parser = event.getParser();
|
||||
|
||||
if(!parser) return;
|
||||
|
||||
const quizEvent = new RoomSessionWordQuizEvent(RoomSessionWordQuizEvent.ANSWERED, session, parser.userId);
|
||||
|
||||
quizEvent.value = parser.value;
|
||||
quizEvent.userId = parser.userId;
|
||||
quizEvent.answerCounts = parser.answerCounts;
|
||||
|
||||
GetEventDispatcher().dispatchEvent(quizEvent);
|
||||
}
|
||||
|
||||
private onQuestionFinishedEvent(event: QuestionFinishedEvent): void
|
||||
{
|
||||
if(!this.listener) return;
|
||||
|
||||
const session = this.listener.getSession(this.roomId);
|
||||
|
||||
if(!session) return;
|
||||
|
||||
const parser = event.getParser();
|
||||
|
||||
if(!parser) return;
|
||||
|
||||
const quizEvent = new RoomSessionWordQuizEvent(RoomSessionWordQuizEvent.FINISHED, session);
|
||||
quizEvent.questionId = parser.questionId;
|
||||
quizEvent.answerCounts = parser.answerCounts;
|
||||
|
||||
GetEventDispatcher().dispatchEvent(quizEvent);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
export * from './BaseHandler';
|
||||
export * from './GenericErrorHandler';
|
||||
export * from './PetPackageHandler';
|
||||
export * from './PollHandler';
|
||||
export * from './RoomChatHandler';
|
||||
export * from './RoomDataHandler';
|
||||
export * from './RoomDimmerPresetsHandler';
|
||||
export * from './RoomPermissionsHandler';
|
||||
export * from './RoomPresentHandler';
|
||||
export * from './RoomSessionHandler';
|
||||
export * from './RoomUsersHandler';
|
||||
export * from './WordQuizHandler';
|
||||
Reference in New Issue
Block a user