Pet updates

This commit is contained in:
Bill 2021-07-09 13:29:20 -04:00
parent 4490edde13
commit a62df1f59a
14 changed files with 153 additions and 9 deletions

View File

@ -1,5 +1,5 @@
import { IMessageConfiguration } from '../../core/communication/messages/IMessageConfiguration';
import { ApproveNameMessageComposer, CatalogApproveNameResultEvent, FurnitureGuildInfoComposer, PetMountComposer, PetSupplementComposer, RoomUnitGiveHandItemPetComposer, RoomWidgetCameraPublishedEvent, RoomWidgetCameraPurchaseComposer, SellablePetPalettesEvent } from './messages';
import { ApproveNameMessageComposer, CatalogApproveNameResultEvent, FurnitureGuildInfoComposer, PetMountComposer, PetSupplementComposer, RemovePetSaddleComposer, RoomUnitGiveHandItemPetComposer, RoomWidgetCameraPublishedEvent, RoomWidgetCameraPurchaseComposer, SellablePetPalettesEvent, TogglePetBreedingComposer, TogglePetRidingComposer, UsePetProductComposer } from './messages';
import { AvailabilityStatusMessageEvent } from './messages/incoming/availability/AvailabilityStatusMessageEvent';
import { CatalogClubEvent } from './messages/incoming/catalog/CatalogClubEvent';
import { CatalogClubGiftsEvent } from './messages/incoming/catalog/CatalogClubGiftsEvent';
@ -859,7 +859,11 @@ export class NitroMessages implements IMessageConfiguration
this._composers.set(OutgoingHeader.PET_MOUNT, PetMountComposer);
this._composers.set(OutgoingHeader.PET_RESPECT, PetRespectComposer);
this._composers.set(OutgoingHeader.PET_SUPPLEMENT, PetSupplementComposer);
this._composers.set(OutgoingHeader.REMOVE_PET_SADDLE, RemovePetSaddleComposer);
this._composers.set(OutgoingHeader.PET_INFO, RequestPetInfoComposer);
this._composers.set(OutgoingHeader.TOGGLE_PET_BREEDING, TogglePetBreedingComposer);
this._composers.set(OutgoingHeader.TOGGLE_PET_RIDING, TogglePetRidingComposer);
this._composers.set(OutgoingHeader.USE_PET_PRODUCT, UsePetProductComposer);
// ROOM
this._composers.set(OutgoingHeader.ROOM_CREATE, RoomCreateComposer);

View File

@ -240,4 +240,8 @@ export class OutgoingHeader
public static PET_SUPPLEMENT = 749;
public static FURNITURE_GUILD_INFO = 2651;
public static ACHIEVEMENT_RESOLUTION_OPEN = 359;
public static USE_PET_PRODUCT = 1328;
public static REMOVE_PET_SADDLE = 186;
public static TOGGLE_PET_RIDING = 1472;
public static TOGGLE_PET_BREEDING = 3379;
}

View File

@ -0,0 +1,21 @@
import { IMessageComposer } from '../../../../../core/communication/messages/IMessageComposer';
export class RemovePetSaddleComposer implements IMessageComposer<ConstructorParameters<typeof RemovePetSaddleComposer>>
{
private _data: ConstructorParameters<typeof RemovePetSaddleComposer>;
constructor(petId: number)
{
this._data = [ petId ];
}
public getMessageArray()
{
return this._data;
}
public dispose(): void
{
return;
}
}

View File

@ -0,0 +1,21 @@
import { IMessageComposer } from '../../../../../core/communication/messages/IMessageComposer';
export class TogglePetBreedingComposer implements IMessageComposer<ConstructorParameters<typeof TogglePetBreedingComposer>>
{
private _data: ConstructorParameters<typeof TogglePetBreedingComposer>;
constructor(petId: number)
{
this._data = [ petId ];
}
public getMessageArray()
{
return this._data;
}
public dispose(): void
{
return;
}
}

View File

@ -0,0 +1,21 @@
import { IMessageComposer } from '../../../../../core/communication/messages/IMessageComposer';
export class TogglePetRidingComposer implements IMessageComposer<ConstructorParameters<typeof TogglePetRidingComposer>>
{
private _data: ConstructorParameters<typeof TogglePetRidingComposer>;
constructor(petId: number)
{
this._data = [ petId ];
}
public getMessageArray()
{
return this._data;
}
public dispose(): void
{
return;
}
}

View File

@ -0,0 +1,21 @@
import { IMessageComposer } from '../../../../../core/communication/messages/IMessageComposer';
export class UsePetProductComposer implements IMessageComposer<ConstructorParameters<typeof UsePetProductComposer>>
{
private _data: ConstructorParameters<typeof UsePetProductComposer>;
constructor(itemId: number, petId: number)
{
this._data = [ itemId, petId ];
}
public getMessageArray()
{
return this._data;
}
public dispose(): void
{
return;
}
}

View File

@ -1,4 +1,8 @@
export * from './PetMountComposer';
export * from './PetRespectComposer';
export * from './PetSupplementComposer';
export * from './RemovePetSaddleComposer';
export * from './RequestPetInfoComposer';
export * from './TogglePetBreedingComposer';
export * from './TogglePetRidingComposer';
export * from './UsePetProductComposer';

View File

@ -58,7 +58,7 @@ export class PetData
return this._figureData.figuredata;
}
public get figureData():PetFigureDataParser
public get figureData(): PetFigureDataParser
{
return this._figureData;
}

View File

@ -1,5 +1,6 @@
import { DisplayObject, Point, Rectangle } from 'pixi.js';
import { INitroManager } from '../../core/common/INitroManager';
import { IRoomObject } from '../../room';
import { IRoomManager } from '../../room/IRoomManager';
import { IRoomObjectController } from '../../room/object/IRoomObjectController';
import { IRoomObjectLogicFactory } from '../../room/object/logic/IRoomObjectLogicFactory';
@ -46,6 +47,7 @@ export interface IRoomEngine extends INitroManager
removeRoomObjectFloor(roomId: number, objectId: number, userId?: number, _arg_4?: boolean): void;
removeRoomObjectWall(roomId: number, objectId: number, userId?: number): void;
removeRoomObjectUser(roomId: number, objectId: number): void;
getRoomObjects(roomId: number, category: number): IRoomObject[];
getRoomObjectCount(roomId: number, categoryId: number): number;
getRoomObjectBoundingRectangle(roomId: number, objectId: number, category: number, canvasId: number): Rectangle;
getRoomObjectScreenLocation(roomId: number, objectId: number, objectType: number, canvasId?: number): Point;

View File

@ -3366,15 +3366,15 @@ export class RoomEngine extends NitroManager implements IRoomEngine, IRoomCreato
return null;
}
public getRoomObjects(k: number, _arg_2: number): IRoomObject[]
public getRoomObjects(roomId: number, category: number): IRoomObject[]
{
if(this._ready)
{
const _local_3 = this.getRoomId(k);
const _local_3 = this.getRoomId(roomId);
const _local_4 = this._roomManager.getRoomInstance(_local_3);
if(_local_4) return _local_4.getRoomObjectsForCategory(_arg_2);
if(_local_4) return _local_4.getRoomObjectsForCategory(category);
}
return [];

View File

@ -35,6 +35,10 @@ export interface IRoomSession extends IDisposable
requestMoodlightSettings(): void;
mountPet(id: number): void;
dismountPet(id: number): void;
usePetProduct(itemId: number, petId: number): void;
removePetSaddle(id: number): void;
togglePetBreeding(id: number): void;
togglePetRiding(id: number): void;
connection: IConnection;
userDataManager: UserDataManager;
roomId: number;

View File

@ -1,6 +1,6 @@
import { Disposable } from '../../core/common/disposable/Disposable';
import { IConnection } from '../../core/communication/connections/IConnection';
import { PetMountComposer } from '../communication';
import { PetMountComposer, RemovePetSaddleComposer, TogglePetBreedingComposer, TogglePetRidingComposer, UsePetProductComposer } from '../communication';
import { RoomDoorbellAccessComposer } from '../communication/messages/outgoing/room/access/RoomDoorbellAccessComposer';
import { RoomEnterComposer } from '../communication/messages/outgoing/room/access/RoomEnterComposer';
import { RoomAmbassadorAlertComposer } from '../communication/messages/outgoing/room/action/RoomAmbassadorAlertComposer';
@ -273,6 +273,26 @@ export class RoomSession extends Disposable implements IRoomSession
this._connection.send(new PetMountComposer(id, false));
}
public usePetProduct(itemId: number, petId: number): void
{
this._connection.send(new UsePetProductComposer(itemId, petId));
}
public removePetSaddle(id: number): void
{
this._connection.send(new RemovePetSaddleComposer(id));
}
public togglePetBreeding(id: number): void
{
this._connection.send(new TogglePetBreedingComposer(id));
}
public togglePetRiding(id: number): void
{
this._connection.send(new TogglePetRidingComposer(id));
}
public get connection(): IConnection
{
return this._connection;

View File

@ -8,9 +8,9 @@ export class RoomSessionPetFigureUpdateEvent extends RoomSessionEvent
private _petId: number;
private _figure: string;
constructor(k: IRoomSession, id: number, figure: string)
constructor(roomSession: IRoomSession, id: number, figure: string)
{
super(RoomSessionPetFigureUpdateEvent.PET_FIGURE_UPDATE, k);
super(RoomSessionPetFigureUpdateEvent.PET_FIGURE_UPDATE, roomSession);
this._petId = id;
this._figure = figure;
@ -25,4 +25,4 @@ export class RoomSessionPetFigureUpdateEvent extends RoomSessionEvent
{
return this._figure;
}
}
}

View File

@ -1,4 +1,5 @@
import { IConnection } from '../../../core/communication/connections/IConnection';
import { PetFigureUpdateEvent } from '../../communication';
import { NewFriendRequestEvent } from '../../communication/messages/incoming/friendlist/NewFriendRequestEvent';
import { BotErrorEvent } from '../../communication/messages/incoming/notifications/BotErrorEvent';
import { PetPlacingErrorEvent } from '../../communication/messages/incoming/notifications/PetPlacingErrorEvent';
@ -10,6 +11,7 @@ import { RoomUnitInfoEvent } from '../../communication/messages/incoming/room/un
import { RoomUnitRemoveEvent } from '../../communication/messages/incoming/room/unit/RoomUnitRemoveEvent';
import { UserCurrentBadgesEvent } from '../../communication/messages/incoming/user/data/UserCurrentBadgesEvent';
import { UserNameChangeMessageEvent } from '../../communication/messages/incoming/user/data/UserNameChangeMessageEvent';
import { RoomSessionPetFigureUpdateEvent } from '../events';
import { RoomSessionDanceEvent } from '../events/RoomSessionDanceEvent';
import { RoomSessionDoorbellEvent } from '../events/RoomSessionDoorbellEvent';
import { RoomSessionErrorMessageEvent } from '../events/RoomSessionErrorMessageEvent';
@ -37,6 +39,7 @@ export class RoomUsersHandler extends BaseHandler
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 PetFigureUpdateEvent(this.onPetFigureUpdateEvent.bind(this)));
connection.addMessageEvent(new PetPlacingErrorEvent(this.onPetPlacingError.bind(this)));
connection.addMessageEvent(new BotErrorEvent(this.onBotError.bind(this)));
}
@ -247,6 +250,25 @@ export class RoomUsersHandler extends BaseHandler
this.listener.events.dispatchEvent(new RoomSessionPetInfoUpdateEvent(session, petData));
}
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);
this.listener.events.dispatchEvent(new RoomSessionPetFigureUpdateEvent(session, parser.petId, figure));
}
private onPetPlacingError(event: PetPlacingErrorEvent): void
{
if(!event) return;