From c74432feabb4fbd8da7e354b1b0ce22724a3e46f Mon Sep 17 00:00:00 2001 From: Dank074 Date: Wed, 21 Jul 2021 18:17:58 -0500 Subject: [PATCH] added quest incoming messages --- src/nitro/communication/NitroMessages.ts | 24 +++ .../messages/incoming/IncomingHeader.ts | 11 ++ .../communication/messages/incoming/index.ts | 2 + .../messages/incoming/landingview/index.ts | 3 + .../incoming/landingview/votes/index.ts | 1 + .../incoming/quest/CommunityGoalData.ts | 96 +++++++++ .../CommunityGoalEarnedPrizesMessageEvent.ts | 16 ++ .../quest/CommunityGoalHallOfFameData.ts | 41 ++++ .../CommunityGoalHallOfFameMessageEvent.ts | 16 ++ .../CommunityGoalProgressMessageEvent.ts | 16 ++ ...ConcurrentUsersGoalProgressMessageEvent.ts | 16 ++ .../incoming/quest/EpicPopupMessageEvent.ts | 16 ++ .../incoming/quest/HallOfFameEntryData.ts | 45 +++++ .../incoming/quest/ILandingPageUserEntry.ts | 6 + .../messages/incoming/quest/PrizeData.ts | 51 +++++ .../quest/QuestCancelledMessageEvent.ts | 16 ++ .../quest/QuestCompletedMessageEvent.ts | 16 ++ .../incoming/quest/QuestDailyMessageEvent.ts | 16 ++ .../incoming/quest/QuestMessageData.ts | 186 ++++++++++++++++++ .../incoming/quest/QuestMessageEvent.ts | 16 ++ .../incoming/quest/QuestsMessageEvent.ts | 16 ++ .../quest/SeasonalQuestsMessageEvent.ts | 16 ++ .../messages/incoming/quest/index.ts | 17 ++ .../communication/messages/outgoing/index.ts | 1 + .../messages/outgoing/landingview/index.ts | 2 + .../outgoing/landingview/votes/index.ts | 1 + .../communication/messages/parser/index.ts | 2 + .../messages/parser/landingview/index.ts | 2 + .../parser/landingview/votes/index.ts | 1 + .../CommunityGoalEarnedPrizesMessageParser.ts | 31 +++ .../CommunityGoalHallOfFameMessageParser.ts | 27 +++ .../CommunityGoalProgressMessageParser.ts | 27 +++ ...oncurrentUsersGoalProgressMessageParser.ts | 42 ++++ .../parser/quest/EpicPopupMessageParser.ts | 26 +++ .../quest/QuestCancelledMessageParser.ts | 25 +++ .../quest/QuestCompletedMessageParser.ts | 34 ++++ .../parser/quest/QuestDailyMessageParser.ts | 45 +++++ .../parser/quest/QuestMessageParser.ts | 27 +++ .../parser/quest/QuestsMessageParser.ts | 41 ++++ .../parser/quest/SeasonalQuestsParser.ts | 33 ++++ .../messages/parser/quest/index.ts | 11 ++ 41 files changed, 1037 insertions(+) create mode 100644 src/nitro/communication/messages/incoming/landingview/index.ts create mode 100644 src/nitro/communication/messages/incoming/landingview/votes/index.ts create mode 100644 src/nitro/communication/messages/incoming/quest/CommunityGoalData.ts create mode 100644 src/nitro/communication/messages/incoming/quest/CommunityGoalEarnedPrizesMessageEvent.ts create mode 100644 src/nitro/communication/messages/incoming/quest/CommunityGoalHallOfFameData.ts create mode 100644 src/nitro/communication/messages/incoming/quest/CommunityGoalHallOfFameMessageEvent.ts create mode 100644 src/nitro/communication/messages/incoming/quest/CommunityGoalProgressMessageEvent.ts create mode 100644 src/nitro/communication/messages/incoming/quest/ConcurrentUsersGoalProgressMessageEvent.ts create mode 100644 src/nitro/communication/messages/incoming/quest/EpicPopupMessageEvent.ts create mode 100644 src/nitro/communication/messages/incoming/quest/HallOfFameEntryData.ts create mode 100644 src/nitro/communication/messages/incoming/quest/ILandingPageUserEntry.ts create mode 100644 src/nitro/communication/messages/incoming/quest/PrizeData.ts create mode 100644 src/nitro/communication/messages/incoming/quest/QuestCancelledMessageEvent.ts create mode 100644 src/nitro/communication/messages/incoming/quest/QuestCompletedMessageEvent.ts create mode 100644 src/nitro/communication/messages/incoming/quest/QuestDailyMessageEvent.ts create mode 100644 src/nitro/communication/messages/incoming/quest/QuestMessageData.ts create mode 100644 src/nitro/communication/messages/incoming/quest/QuestMessageEvent.ts create mode 100644 src/nitro/communication/messages/incoming/quest/QuestsMessageEvent.ts create mode 100644 src/nitro/communication/messages/incoming/quest/SeasonalQuestsMessageEvent.ts create mode 100644 src/nitro/communication/messages/incoming/quest/index.ts create mode 100644 src/nitro/communication/messages/outgoing/landingview/index.ts create mode 100644 src/nitro/communication/messages/outgoing/landingview/votes/index.ts create mode 100644 src/nitro/communication/messages/parser/landingview/index.ts create mode 100644 src/nitro/communication/messages/parser/landingview/votes/index.ts create mode 100644 src/nitro/communication/messages/parser/quest/CommunityGoalEarnedPrizesMessageParser.ts create mode 100644 src/nitro/communication/messages/parser/quest/CommunityGoalHallOfFameMessageParser.ts create mode 100644 src/nitro/communication/messages/parser/quest/CommunityGoalProgressMessageParser.ts create mode 100644 src/nitro/communication/messages/parser/quest/ConcurrentUsersGoalProgressMessageParser.ts create mode 100644 src/nitro/communication/messages/parser/quest/EpicPopupMessageParser.ts create mode 100644 src/nitro/communication/messages/parser/quest/QuestCancelledMessageParser.ts create mode 100644 src/nitro/communication/messages/parser/quest/QuestCompletedMessageParser.ts create mode 100644 src/nitro/communication/messages/parser/quest/QuestDailyMessageParser.ts create mode 100644 src/nitro/communication/messages/parser/quest/QuestMessageParser.ts create mode 100644 src/nitro/communication/messages/parser/quest/QuestsMessageParser.ts create mode 100644 src/nitro/communication/messages/parser/quest/SeasonalQuestsParser.ts create mode 100644 src/nitro/communication/messages/parser/quest/index.ts diff --git a/src/nitro/communication/NitroMessages.ts b/src/nitro/communication/NitroMessages.ts index 57d79fdf..6e9f2da8 100644 --- a/src/nitro/communication/NitroMessages.ts +++ b/src/nitro/communication/NitroMessages.ts @@ -113,6 +113,17 @@ import { NotificationDialogMessageEvent } from './messages/incoming/notification import { PetPlacingErrorEvent } from './messages/incoming/notifications/PetPlacingErrorEvent'; import { RespectReceivedEvent } from './messages/incoming/notifications/RespectReceivedEvent'; import { UnseenItemsEvent } from './messages/incoming/notifications/UnseenItemsEvent'; +import { CommunityGoalEarnedPrizesMessageEvent } from './messages/incoming/quest/CommunityGoalEarnedPrizesMessageEvent'; +import { CommunityGoalHallOfFameMessageEvent } from './messages/incoming/quest/CommunityGoalHallOfFameMessageEvent'; +import { CommunityGoalProgressMessageEvent } from './messages/incoming/quest/CommunityGoalProgressMessageEvent'; +import { ConcurrentUsersGoalProgressMessageEvent } from './messages/incoming/quest/ConcurrentUsersGoalProgressMessageEvent'; +import { EpicPopupMessageEvent } from './messages/incoming/quest/EpicPopupMessageEvent'; +import { QuestCancelledMessageEvent } from './messages/incoming/quest/QuestCancelledMessageEvent'; +import { QuestCompletedMessageEvent } from './messages/incoming/quest/QuestCompletedMessageEvent'; +import { QuestDailyMessageEvent } from './messages/incoming/quest/QuestDailyMessageEvent'; +import { QuestMessageEvent } from './messages/incoming/quest/QuestMessageEvent'; +import { QuestsMessageEvent } from './messages/incoming/quest/QuestsMessageEvent'; +import { SeasonalQuestsMessageEvent } from './messages/incoming/quest/SeasonalQuestsMessageEvent'; import { RoomDoorbellAcceptedEvent } from './messages/incoming/room/access/doorbell/RoomDoorbellAcceptedEvent'; import { RoomDoorbellEvent } from './messages/incoming/room/access/doorbell/RoomDoorbellEvent'; import { RoomDoorbellRejectedEvent } from './messages/incoming/room/access/doorbell/RoomDoorbellRejectedEvent'; @@ -753,6 +764,19 @@ export class NitroMessages implements IMessageConfiguration // LANDING VIEW this._events.set(IncomingHeader.COMMUNITY_GOAL_VOTE_EVENT, CommunityGoalVoteMessageEvent); this._events.set(IncomingHeader.PROMO_ARTICLES, PromoArticlesMessageEvent); + + // QUESTS + this._events.set(IncomingHeader.COMMUNITY_GOAL_EARNED_PRIZES, CommunityGoalEarnedPrizesMessageEvent); + this._events.set(IncomingHeader.COMMUNITY_GOAL_PROGRESS, CommunityGoalProgressMessageEvent); + this._events.set(IncomingHeader.CONCURRENT_USERS_GOAL_PROGRESS, ConcurrentUsersGoalProgressMessageEvent); + this._events.set(IncomingHeader.QUEST_DAILY, QuestDailyMessageEvent); + this._events.set(IncomingHeader.QUEST_CANCELLED, QuestCancelledMessageEvent); + this._events.set(IncomingHeader.QUEST_COMPLETED, QuestCompletedMessageEvent); + this._events.set(IncomingHeader.COMMUNITY_GOAL_HALL_OF_FAME, CommunityGoalHallOfFameMessageEvent); + this._events.set(IncomingHeader.EPIC_POPUP, EpicPopupMessageEvent); + this._events.set(IncomingHeader.SEASONAL_QUESTS, SeasonalQuestsMessageEvent); + this._events.set(IncomingHeader.QUESTS, QuestsMessageEvent); + this._events.set(IncomingHeader.QUEST, QuestMessageEvent); } private registerComposers(): void diff --git a/src/nitro/communication/messages/incoming/IncomingHeader.ts b/src/nitro/communication/messages/incoming/IncomingHeader.ts index eb3c98b0..247e5c3a 100644 --- a/src/nitro/communication/messages/incoming/IncomingHeader.ts +++ b/src/nitro/communication/messages/incoming/IncomingHeader.ts @@ -254,4 +254,15 @@ export class IncomingHeader public static PET_EXPERIENCE = 2156; public static COMMUNITY_GOAL_VOTE_EVENT = 1435; public static PROMO_ARTICLES = 286; + public static COMMUNITY_GOAL_EARNED_PRIZES = 3319; + public static COMMUNITY_GOAL_PROGRESS = 2525; + public static CONCURRENT_USERS_GOAL_PROGRESS = 2737; + public static QUEST_DAILY = 1878; + public static QUEST_CANCELLED = 3027; + public static QUEST_COMPLETED = 949; + public static COMMUNITY_GOAL_HALL_OF_FAME = 3005; + public static EPIC_POPUP = 3945; + public static SEASONAL_QUESTS = 1122; + public static QUESTS = 3625; + public static QUEST = 230; } diff --git a/src/nitro/communication/messages/incoming/index.ts b/src/nitro/communication/messages/incoming/index.ts index 5b2529cb..9cd40fbc 100644 --- a/src/nitro/communication/messages/incoming/index.ts +++ b/src/nitro/communication/messages/incoming/index.ts @@ -22,11 +22,13 @@ export * from './inventory/furni/gifts'; export * from './inventory/marketplace'; export * from './inventory/pets'; export * from './inventory/trading'; +export * from './landingview'; export * from './moderation'; export * from './modtool'; export * from './mysterybox'; export * from './navigator'; export * from './notifications'; +export * from './quest'; export * from './room'; export * from './room/access'; export * from './room/access/doorbell'; diff --git a/src/nitro/communication/messages/incoming/landingview/index.ts b/src/nitro/communication/messages/incoming/landingview/index.ts new file mode 100644 index 00000000..340e57ef --- /dev/null +++ b/src/nitro/communication/messages/incoming/landingview/index.ts @@ -0,0 +1,3 @@ +export * from './PromoArticleData'; +export * from './PromoArticlesMessageEvent'; +export * from './votes'; diff --git a/src/nitro/communication/messages/incoming/landingview/votes/index.ts b/src/nitro/communication/messages/incoming/landingview/votes/index.ts new file mode 100644 index 00000000..adcbb0e5 --- /dev/null +++ b/src/nitro/communication/messages/incoming/landingview/votes/index.ts @@ -0,0 +1 @@ +export * from './CommunityGoalVoteMessageEvent'; diff --git a/src/nitro/communication/messages/incoming/quest/CommunityGoalData.ts b/src/nitro/communication/messages/incoming/quest/CommunityGoalData.ts new file mode 100644 index 00000000..c61bf15c --- /dev/null +++ b/src/nitro/communication/messages/incoming/quest/CommunityGoalData.ts @@ -0,0 +1,96 @@ +import { IDisposable } from '../../../../../core/common/disposable/IDisposable'; +import { IMessageDataWrapper } from '../../../../../core/communication/messages/IMessageDataWrapper'; + +export class CommunityGoalData implements IDisposable +{ + private _hasGoalExpired: boolean; + private _personalContributionScore: number; + private _personalContributionRank: number; + private _communityTotalScore: number; + private _communityHighestAchievedLevel: number; + private _scoreRemainingUntilNextLevel: number; + private _percentCompletionTowardsNextLevel: number; + private _goalCode: string; + private _timeRemainingInSeconds: number; + private _rewardUserLimits: number[]; + + constructor(wrapper: IMessageDataWrapper) + { + this._rewardUserLimits = []; + this._hasGoalExpired = wrapper.readBoolean(); + this._personalContributionScore = wrapper.readInt(); + this._personalContributionRank = wrapper.readInt(); + this._communityTotalScore = wrapper.readInt(); + this._communityHighestAchievedLevel = wrapper.readInt(); + this._scoreRemainingUntilNextLevel = wrapper.readInt(); + this._percentCompletionTowardsNextLevel = wrapper.readInt(); + this._goalCode = wrapper.readString(); + this._timeRemainingInSeconds = wrapper.readInt(); + + const count = wrapper.readInt(); + for(let i = 0; i < count; i++) + { + this._rewardUserLimits.push(wrapper.readInt()); + } + } + + public dispose(): void + { + this._rewardUserLimits = null; + } + + public get disposed(): boolean + { + return this._rewardUserLimits == null; + } + + public get hasGoalExpired(): boolean + { + return this._hasGoalExpired; + } + + public get personalContributionScore(): number + { + return this._personalContributionScore; + } + + public get personalContributionRank(): number + { + return this._personalContributionRank; + } + + public get communityTotalScore(): number + { + return this._communityTotalScore; + } + + public get communityHighestAchievedLevel(): number + { + return this._communityHighestAchievedLevel; + } + + public get scoreRemainingUntilNextLevel(): number + { + return this._scoreRemainingUntilNextLevel; + } + + public get percentCompletionTowardsNextLevel(): number + { + return this._percentCompletionTowardsNextLevel; + } + + public get timeRemainingInSeconds(): number + { + return this._timeRemainingInSeconds; + } + + public get rewardUserLimits(): number[] + { + return this._rewardUserLimits; + } + + public get goalCode(): string + { + return this._goalCode; + } +} diff --git a/src/nitro/communication/messages/incoming/quest/CommunityGoalEarnedPrizesMessageEvent.ts b/src/nitro/communication/messages/incoming/quest/CommunityGoalEarnedPrizesMessageEvent.ts new file mode 100644 index 00000000..cba6f877 --- /dev/null +++ b/src/nitro/communication/messages/incoming/quest/CommunityGoalEarnedPrizesMessageEvent.ts @@ -0,0 +1,16 @@ +import { IMessageEvent } from '../../../../../core/communication/messages/IMessageEvent'; +import { MessageEvent } from '../../../../../core/communication/messages/MessageEvent'; +import { CommunityGoalEarnedPrizesMessageParser } from '../../parser/quest/CommunityGoalEarnedPrizesMessageParser'; + +export class CommunityGoalEarnedPrizesMessageEvent extends MessageEvent implements IMessageEvent +{ + constructor(callBack: Function) + { + super(callBack, CommunityGoalEarnedPrizesMessageParser); + } + + public getParser(): CommunityGoalEarnedPrizesMessageParser + { + return this.parser as CommunityGoalEarnedPrizesMessageParser; + } +} diff --git a/src/nitro/communication/messages/incoming/quest/CommunityGoalHallOfFameData.ts b/src/nitro/communication/messages/incoming/quest/CommunityGoalHallOfFameData.ts new file mode 100644 index 00000000..13d06d47 --- /dev/null +++ b/src/nitro/communication/messages/incoming/quest/CommunityGoalHallOfFameData.ts @@ -0,0 +1,41 @@ +import { IDisposable } from '../../../../../core/common/disposable/IDisposable'; +import { IMessageDataWrapper } from '../../../../../core/communication/messages/IMessageDataWrapper'; +import { HallOfFameEntryData } from './HallOfFameEntryData'; + +export class CommunityGoalHallOfFameData implements IDisposable +{ + private _goalCode: string; + private _hof: HallOfFameEntryData[]; + + constructor(wrapper: IMessageDataWrapper) + { + this._hof = []; + this._goalCode = wrapper.readString(); + + const count = wrapper.readInt(); + for(let i = 0; i < count; i++) + { + this._hof.push(new HallOfFameEntryData(wrapper)); + } + } + + public dispose(): void + { + this._hof = null; + } + + public get disposed(): boolean + { + return this._hof == null; + } + + public get hof(): HallOfFameEntryData[] + { + return this._hof; + } + + public get goalCode(): string + { + return this._goalCode; + } +} diff --git a/src/nitro/communication/messages/incoming/quest/CommunityGoalHallOfFameMessageEvent.ts b/src/nitro/communication/messages/incoming/quest/CommunityGoalHallOfFameMessageEvent.ts new file mode 100644 index 00000000..f742686b --- /dev/null +++ b/src/nitro/communication/messages/incoming/quest/CommunityGoalHallOfFameMessageEvent.ts @@ -0,0 +1,16 @@ +import { IMessageEvent } from '../../../../../core/communication/messages/IMessageEvent'; +import { MessageEvent } from '../../../../../core/communication/messages/MessageEvent'; +import { CommunityGoalHallOfFameMessageParser } from '../../parser/quest/CommunityGoalHallOfFameMessageParser'; + +export class CommunityGoalHallOfFameMessageEvent extends MessageEvent implements IMessageEvent +{ + constructor(callBack: Function) + { + super(callBack, CommunityGoalHallOfFameMessageParser); + } + + public getParser(): CommunityGoalHallOfFameMessageParser + { + return this.parser as CommunityGoalHallOfFameMessageParser; + } +} diff --git a/src/nitro/communication/messages/incoming/quest/CommunityGoalProgressMessageEvent.ts b/src/nitro/communication/messages/incoming/quest/CommunityGoalProgressMessageEvent.ts new file mode 100644 index 00000000..8f9519fc --- /dev/null +++ b/src/nitro/communication/messages/incoming/quest/CommunityGoalProgressMessageEvent.ts @@ -0,0 +1,16 @@ +import { IMessageEvent } from '../../../../../core/communication/messages/IMessageEvent'; +import { MessageEvent } from '../../../../../core/communication/messages/MessageEvent'; +import { CommunityGoalProgressMessageParser } from '../../parser/quest/CommunityGoalProgressMessageParser'; + +export class CommunityGoalProgressMessageEvent extends MessageEvent implements IMessageEvent +{ + constructor(callBack: Function) + { + super(callBack, CommunityGoalProgressMessageParser); + } + + public getParser(): CommunityGoalProgressMessageParser + { + return this.parser as CommunityGoalProgressMessageParser; + } +} diff --git a/src/nitro/communication/messages/incoming/quest/ConcurrentUsersGoalProgressMessageEvent.ts b/src/nitro/communication/messages/incoming/quest/ConcurrentUsersGoalProgressMessageEvent.ts new file mode 100644 index 00000000..79fc4c8f --- /dev/null +++ b/src/nitro/communication/messages/incoming/quest/ConcurrentUsersGoalProgressMessageEvent.ts @@ -0,0 +1,16 @@ +import { IMessageEvent } from '../../../../../core/communication/messages/IMessageEvent'; +import { MessageEvent } from '../../../../../core/communication/messages/MessageEvent'; +import { ConcurrentUsersGoalProgressMessageParser } from '../../parser/quest/ConcurrentUsersGoalProgressMessageParser'; + +export class ConcurrentUsersGoalProgressMessageEvent extends MessageEvent implements IMessageEvent +{ + constructor(callBack: Function) + { + super(callBack, ConcurrentUsersGoalProgressMessageParser); + } + + public getParser(): ConcurrentUsersGoalProgressMessageParser + { + return this.parser as ConcurrentUsersGoalProgressMessageParser; + } +} diff --git a/src/nitro/communication/messages/incoming/quest/EpicPopupMessageEvent.ts b/src/nitro/communication/messages/incoming/quest/EpicPopupMessageEvent.ts new file mode 100644 index 00000000..7080827a --- /dev/null +++ b/src/nitro/communication/messages/incoming/quest/EpicPopupMessageEvent.ts @@ -0,0 +1,16 @@ +import { IMessageEvent } from '../../../../../core/communication/messages/IMessageEvent'; +import { MessageEvent } from '../../../../../core/communication/messages/MessageEvent'; +import { EpicPopupMessageParser } from '../../parser/quest/EpicPopupMessageParser'; + +export class EpicPopupMessageEvent extends MessageEvent implements IMessageEvent +{ + constructor(callBack: Function) + { + super(callBack, EpicPopupMessageParser); + } + + public getParser(): EpicPopupMessageParser + { + return this.parser as EpicPopupMessageParser; + } +} diff --git a/src/nitro/communication/messages/incoming/quest/HallOfFameEntryData.ts b/src/nitro/communication/messages/incoming/quest/HallOfFameEntryData.ts new file mode 100644 index 00000000..30130b7f --- /dev/null +++ b/src/nitro/communication/messages/incoming/quest/HallOfFameEntryData.ts @@ -0,0 +1,45 @@ +import { IMessageDataWrapper } from '../../../../../core/communication/messages/IMessageDataWrapper'; +import { ILandingPageUserEntry } from './ILandingPageUserEntry'; + +export class HallOfFameEntryData implements ILandingPageUserEntry +{ + private _userId: number; + private _userName: string; + private _figure: string; + private _rank: number; + private _currentScore: number; + + constructor(wrapper: IMessageDataWrapper) + { + this._userId = wrapper.readInt(); + this._userName = wrapper.readString(); + this._figure = wrapper.readString(); + this._rank = wrapper.readInt(); + this._currentScore = wrapper.readInt(); + } + + public get userId(): number + { + return this._userId; + } + + public get userName(): string + { + return this._userName; + } + + public get figure(): string + { + return this._figure; + } + + public get rank(): number + { + return this._rank; + } + + public get currentScore(): number + { + return this._currentScore; + } +} diff --git a/src/nitro/communication/messages/incoming/quest/ILandingPageUserEntry.ts b/src/nitro/communication/messages/incoming/quest/ILandingPageUserEntry.ts new file mode 100644 index 00000000..060628d4 --- /dev/null +++ b/src/nitro/communication/messages/incoming/quest/ILandingPageUserEntry.ts @@ -0,0 +1,6 @@ +export interface ILandingPageUserEntry +{ + get userId(): number; + get userName(): string; + get figure(): string; +} diff --git a/src/nitro/communication/messages/incoming/quest/PrizeData.ts b/src/nitro/communication/messages/incoming/quest/PrizeData.ts new file mode 100644 index 00000000..092c77c8 --- /dev/null +++ b/src/nitro/communication/messages/incoming/quest/PrizeData.ts @@ -0,0 +1,51 @@ +import { IMessageDataWrapper } from '../../../../../core/communication/messages/IMessageDataWrapper'; + +export class PrizeData +{ + private _communityGoalId: number; + private _communityGoalCode: string; + private _userRank: number; + private _rewardCode: string; + private _badge: boolean; + private _localizedName: string; + + constructor(k: IMessageDataWrapper) + { + this._communityGoalId = k.readInt(); + this._communityGoalCode = k.readString(); + this._userRank = k.readInt(); + this._rewardCode = k.readString(); + this._badge = k.readBoolean(); + this._localizedName = k.readString(); + } + + public get communityGoalId(): number + { + return this._communityGoalId; + } + + public get communityGoalCode(): string + { + return this._communityGoalCode; + } + + public get userRank(): number + { + return this._userRank; + } + + public get rewardCode(): string + { + return this._rewardCode; + } + + public get badge(): boolean + { + return this._badge; + } + + public get localizedName(): string + { + return this._localizedName; + } +} diff --git a/src/nitro/communication/messages/incoming/quest/QuestCancelledMessageEvent.ts b/src/nitro/communication/messages/incoming/quest/QuestCancelledMessageEvent.ts new file mode 100644 index 00000000..487ca547 --- /dev/null +++ b/src/nitro/communication/messages/incoming/quest/QuestCancelledMessageEvent.ts @@ -0,0 +1,16 @@ +import { IMessageEvent } from '../../../../../core/communication/messages/IMessageEvent'; +import { MessageEvent } from '../../../../../core/communication/messages/MessageEvent'; +import { QuestCancelledMessageParser } from '../../parser/quest/QuestCancelledMessageParser'; + +export class QuestCancelledMessageEvent extends MessageEvent implements IMessageEvent +{ + constructor(callBack: Function) + { + super(callBack, QuestCancelledMessageParser); + } + + public getParser(): QuestCancelledMessageParser + { + return this.parser as QuestCancelledMessageParser; + } +} diff --git a/src/nitro/communication/messages/incoming/quest/QuestCompletedMessageEvent.ts b/src/nitro/communication/messages/incoming/quest/QuestCompletedMessageEvent.ts new file mode 100644 index 00000000..8dd49e75 --- /dev/null +++ b/src/nitro/communication/messages/incoming/quest/QuestCompletedMessageEvent.ts @@ -0,0 +1,16 @@ +import { IMessageEvent } from '../../../../../core/communication/messages/IMessageEvent'; +import { MessageEvent } from '../../../../../core/communication/messages/MessageEvent'; +import { QuestCompletedMessageParser } from '../../parser/quest/QuestCompletedMessageParser'; + +export class QuestCompletedMessageEvent extends MessageEvent implements IMessageEvent +{ + constructor(callBack: Function) + { + super(callBack, QuestCompletedMessageParser); + } + + public getParser(): QuestCompletedMessageParser + { + return this.parser as QuestCompletedMessageParser; + } +} diff --git a/src/nitro/communication/messages/incoming/quest/QuestDailyMessageEvent.ts b/src/nitro/communication/messages/incoming/quest/QuestDailyMessageEvent.ts new file mode 100644 index 00000000..886c4906 --- /dev/null +++ b/src/nitro/communication/messages/incoming/quest/QuestDailyMessageEvent.ts @@ -0,0 +1,16 @@ +import { IMessageEvent } from '../../../../../core/communication/messages/IMessageEvent'; +import { MessageEvent } from '../../../../../core/communication/messages/MessageEvent'; +import { QuestDailyMessageParser } from '../../parser/quest/QuestDailyMessageParser'; + +export class QuestDailyMessageEvent extends MessageEvent implements IMessageEvent +{ + constructor(callBack: Function) + { + super(callBack, QuestDailyMessageParser); + } + + public getParser(): QuestDailyMessageParser + { + return this.parser as QuestDailyMessageParser; + } +} diff --git a/src/nitro/communication/messages/incoming/quest/QuestMessageData.ts b/src/nitro/communication/messages/incoming/quest/QuestMessageData.ts new file mode 100644 index 00000000..3d142584 --- /dev/null +++ b/src/nitro/communication/messages/incoming/quest/QuestMessageData.ts @@ -0,0 +1,186 @@ +import { IMessageDataWrapper } from '../../../../../core/communication/messages/IMessageDataWrapper'; + +export class QuestMessageData +{ + private _campaignCode: string; + private _completedQuestsInCampaign: number; + private _questCountInCampaign: number; + private _activityPointType: number; + private _id: number; + private _accepted: boolean; + private _type: string; + private _imageVersion: string; + private _rewardCurrencyAmount: number; + private _localizationCode: string; + private _completedSteps: number; + private _totalSteps: number; + private _waitPeriodSeconds: number; + private _sortOrder: number; + private _catalogPageName: string; + private _chainCode: string; + private _easy: boolean; + private _receiveTime: Date; + + constructor(wrapper: IMessageDataWrapper) + { + this._receiveTime = new Date(); + this._campaignCode = wrapper.readString(); + this._completedQuestsInCampaign = wrapper.readInt(); + this._questCountInCampaign = wrapper.readInt(); + this._activityPointType = wrapper.readInt(); + this._id = wrapper.readInt(); + this._accepted = wrapper.readBoolean(); + this._type = wrapper.readString(); + this._imageVersion = wrapper.readString(); + this._rewardCurrencyAmount = wrapper.readInt(); + this._localizationCode = wrapper.readString(); + this._completedSteps = wrapper.readInt(); + this._totalSteps = wrapper.readInt(); + this._sortOrder = wrapper.readInt(); + this._catalogPageName = wrapper.readString(); + this._chainCode = wrapper.readString(); + this._easy = wrapper.readBoolean(); + } + + public static getCampaignLocalizationKeyForCode(k: string): string + { + return 'quests.' + k; + } + + public get campaignCode(): string + { + return this._campaignCode; + } + + public get localizationCode(): string + { + return this._localizationCode; + } + + public get completedQuestsInCampaign(): number + { + return this._completedQuestsInCampaign; + } + + public get questCountInCampaign(): number + { + return this._questCountInCampaign; + } + + public get activityPointType(): number + { + return this._activityPointType; + } + + public set accepted(k: boolean) + { + this._accepted = k; + } + + public get accepted(): boolean + { + return this._accepted; + } + + public set id(k: number) + { + this._id = k; + } + + public get id(): number + { + return this._id; + } + + public get type(): string + { + return this._type; + } + + public get imageVersion(): string + { + return this._imageVersion; + } + + public get rewardCurrencyAmount(): number + { + return this._rewardCurrencyAmount; + } + + public get completedSteps(): number + { + return this._completedSteps; + } + + public get totalSteps(): number + { + return this._totalSteps; + } + + public get isCompleted(): boolean + { + return this._completedSteps == this._totalSteps; + } + + public set waitPeriodSeconds(k: number) + { + this._waitPeriodSeconds = k; + } + + public get waitPeriodSeconds(): number + { + if(this._waitPeriodSeconds < 1) + { + return 0; + } + const k = new Date(); + const _local_2 = (k.getTime() - this._receiveTime.getTime()); + const _local_3 = Math.max(0, (this._waitPeriodSeconds - Math.floor((_local_2 / 1000)))); + return _local_3; + } + + public getCampaignLocalizationKey(): string + { + return QuestMessageData.getCampaignLocalizationKeyForCode(this.campaignCode); + } + + public getQuestLocalizationKey(): string + { + return (this.getCampaignLocalizationKey() + '.') + this._localizationCode; + } + + public get completedCampaign(): boolean + { + return this._id < 1; + } + + public get lastQuestInCampaign(): boolean + { + return this._completedQuestsInCampaign >= this._questCountInCampaign; + } + + public get receiveTime(): Date + { + return this._receiveTime; + } + + public get sortOrder(): number + { + return this._sortOrder; + } + + public get catalogPageName(): string + { + return this._catalogPageName; + } + + public get chainCode(): string + { + return this._chainCode; + } + + public get easy(): boolean + { + return this._easy; + } +} diff --git a/src/nitro/communication/messages/incoming/quest/QuestMessageEvent.ts b/src/nitro/communication/messages/incoming/quest/QuestMessageEvent.ts new file mode 100644 index 00000000..a92ecad2 --- /dev/null +++ b/src/nitro/communication/messages/incoming/quest/QuestMessageEvent.ts @@ -0,0 +1,16 @@ +import { IMessageEvent } from '../../../../../core/communication/messages/IMessageEvent'; +import { MessageEvent } from '../../../../../core/communication/messages/MessageEvent'; +import { QuestMessageParser } from '../../parser/quest/QuestMessageParser'; + +export class QuestMessageEvent extends MessageEvent implements IMessageEvent +{ + constructor(callBack: Function) + { + super(callBack, QuestMessageParser); + } + + public getParser(): QuestMessageParser + { + return this.parser as QuestMessageParser; + } +} diff --git a/src/nitro/communication/messages/incoming/quest/QuestsMessageEvent.ts b/src/nitro/communication/messages/incoming/quest/QuestsMessageEvent.ts new file mode 100644 index 00000000..ca737872 --- /dev/null +++ b/src/nitro/communication/messages/incoming/quest/QuestsMessageEvent.ts @@ -0,0 +1,16 @@ +import { IMessageEvent } from '../../../../../core/communication/messages/IMessageEvent'; +import { MessageEvent } from '../../../../../core/communication/messages/MessageEvent'; +import { QuestsMessageParser } from '../../parser/quest/QuestsMessageParser'; + +export class QuestsMessageEvent extends MessageEvent implements IMessageEvent +{ + constructor(callBack: Function) + { + super(callBack, QuestsMessageParser); + } + + public getParser(): QuestsMessageParser + { + return this.parser as QuestsMessageParser; + } +} diff --git a/src/nitro/communication/messages/incoming/quest/SeasonalQuestsMessageEvent.ts b/src/nitro/communication/messages/incoming/quest/SeasonalQuestsMessageEvent.ts new file mode 100644 index 00000000..f1de7034 --- /dev/null +++ b/src/nitro/communication/messages/incoming/quest/SeasonalQuestsMessageEvent.ts @@ -0,0 +1,16 @@ +import { IMessageEvent } from '../../../../../core/communication/messages/IMessageEvent'; +import { MessageEvent } from '../../../../../core/communication/messages/MessageEvent'; +import { SeasonalQuestsParser } from '../../parser/quest/SeasonalQuestsParser'; + +export class SeasonalQuestsMessageEvent extends MessageEvent implements IMessageEvent +{ + constructor(callBack: Function) + { + super(callBack, SeasonalQuestsParser); + } + + public getParser(): SeasonalQuestsParser + { + return this.parser as SeasonalQuestsParser; + } +} diff --git a/src/nitro/communication/messages/incoming/quest/index.ts b/src/nitro/communication/messages/incoming/quest/index.ts new file mode 100644 index 00000000..23e9be95 --- /dev/null +++ b/src/nitro/communication/messages/incoming/quest/index.ts @@ -0,0 +1,17 @@ +export * from './CommunityGoalData'; +export * from './CommunityGoalEarnedPrizesMessageEvent'; +export * from './CommunityGoalHallOfFameData'; +export * from './CommunityGoalHallOfFameMessageEvent'; +export * from './CommunityGoalProgressMessageEvent'; +export * from './ConcurrentUsersGoalProgressMessageEvent'; +export * from './EpicPopupMessageEvent'; +export * from './HallOfFameEntryData'; +export * from './ILandingPageUserEntry'; +export * from './PrizeData'; +export * from './QuestCancelledMessageEvent'; +export * from './QuestCompletedMessageEvent'; +export * from './QuestDailyMessageEvent'; +export * from './QuestMessageData'; +export * from './QuestMessageEvent'; +export * from './QuestsMessageEvent'; +export * from './SeasonalQuestsMessageEvent'; diff --git a/src/nitro/communication/messages/outgoing/index.ts b/src/nitro/communication/messages/outgoing/index.ts index 5379101f..b2b29f7c 100644 --- a/src/nitro/communication/messages/outgoing/index.ts +++ b/src/nitro/communication/messages/outgoing/index.ts @@ -6,6 +6,7 @@ export * from './friendlist'; export * from './group'; export * from './handshake'; export * from './inventory'; +export * from './landingview'; export * from './modtool'; export * from './navigator'; export * from './OutgoingHeader'; diff --git a/src/nitro/communication/messages/outgoing/landingview/index.ts b/src/nitro/communication/messages/outgoing/landingview/index.ts new file mode 100644 index 00000000..9adfb30d --- /dev/null +++ b/src/nitro/communication/messages/outgoing/landingview/index.ts @@ -0,0 +1,2 @@ +export * from './GetPromoArticlesComposer'; +export * from './votes'; diff --git a/src/nitro/communication/messages/outgoing/landingview/votes/index.ts b/src/nitro/communication/messages/outgoing/landingview/votes/index.ts new file mode 100644 index 00000000..ceaf9d7f --- /dev/null +++ b/src/nitro/communication/messages/outgoing/landingview/votes/index.ts @@ -0,0 +1 @@ +export * from './CommunityGoalVoteMessageComposer'; diff --git a/src/nitro/communication/messages/parser/index.ts b/src/nitro/communication/messages/parser/index.ts index 1614562a..821f7d5f 100644 --- a/src/nitro/communication/messages/parser/index.ts +++ b/src/nitro/communication/messages/parser/index.ts @@ -9,11 +9,13 @@ export * from './generic'; export * from './group'; export * from './help'; export * from './inventory'; +export * from './landingview'; export * from './moderation'; export * from './modtool'; export * from './mysterybox'; export * from './navigator'; export * from './notifications'; +export * from './quest'; export * from './room'; export * from './roomevents'; export * from './security'; diff --git a/src/nitro/communication/messages/parser/landingview/index.ts b/src/nitro/communication/messages/parser/landingview/index.ts new file mode 100644 index 00000000..40b224db --- /dev/null +++ b/src/nitro/communication/messages/parser/landingview/index.ts @@ -0,0 +1,2 @@ +export * from './PromoArticlesMessageParser'; +export * from './votes'; diff --git a/src/nitro/communication/messages/parser/landingview/votes/index.ts b/src/nitro/communication/messages/parser/landingview/votes/index.ts new file mode 100644 index 00000000..4a0e00f2 --- /dev/null +++ b/src/nitro/communication/messages/parser/landingview/votes/index.ts @@ -0,0 +1 @@ +export * from './CommunityVoteReceivedParser'; diff --git a/src/nitro/communication/messages/parser/quest/CommunityGoalEarnedPrizesMessageParser.ts b/src/nitro/communication/messages/parser/quest/CommunityGoalEarnedPrizesMessageParser.ts new file mode 100644 index 00000000..7fcbeb02 --- /dev/null +++ b/src/nitro/communication/messages/parser/quest/CommunityGoalEarnedPrizesMessageParser.ts @@ -0,0 +1,31 @@ +import { IMessageDataWrapper } from '../../../../../core/communication/messages/IMessageDataWrapper'; +import { PrizeData } from '../../incoming/quest/PrizeData'; +import { IMessageParser } from './../../../../../core/communication/messages/IMessageParser'; + +export class CommunityGoalEarnedPrizesMessageParser implements IMessageParser +{ + private _prizes: PrizeData[]; + + public flush(): boolean + { + this._prizes = []; + return true; + } + + public parse(wrapper: IMessageDataWrapper): boolean + { + if(!wrapper) return false; + + const count = wrapper.readInt(); + for(let i = 0; i < count; i++) + { + this._prizes.push(new PrizeData(wrapper)); + } + return true; + } + + public get prizes(): PrizeData[] + { + return this._prizes; + } +} diff --git a/src/nitro/communication/messages/parser/quest/CommunityGoalHallOfFameMessageParser.ts b/src/nitro/communication/messages/parser/quest/CommunityGoalHallOfFameMessageParser.ts new file mode 100644 index 00000000..f8210399 --- /dev/null +++ b/src/nitro/communication/messages/parser/quest/CommunityGoalHallOfFameMessageParser.ts @@ -0,0 +1,27 @@ +import { IMessageDataWrapper } from '../../../../../core/communication/messages/IMessageDataWrapper'; +import { CommunityGoalHallOfFameData } from '../../incoming/quest/CommunityGoalHallOfFameData'; +import { IMessageParser } from './../../../../../core/communication/messages/IMessageParser'; + +export class CommunityGoalHallOfFameMessageParser implements IMessageParser +{ + private _data: CommunityGoalHallOfFameData; + + public flush(): boolean + { + this._data = null; + return true; + } + + public parse(wrapper: IMessageDataWrapper): boolean + { + if(!wrapper) return false; + + this._data = new CommunityGoalHallOfFameData(wrapper); + return true; + } + + public get data(): CommunityGoalHallOfFameData + { + return this._data; + } +} diff --git a/src/nitro/communication/messages/parser/quest/CommunityGoalProgressMessageParser.ts b/src/nitro/communication/messages/parser/quest/CommunityGoalProgressMessageParser.ts new file mode 100644 index 00000000..5f06505a --- /dev/null +++ b/src/nitro/communication/messages/parser/quest/CommunityGoalProgressMessageParser.ts @@ -0,0 +1,27 @@ +import { IMessageDataWrapper } from '../../../../../core/communication/messages/IMessageDataWrapper'; +import { CommunityGoalData } from '../../incoming/quest/CommunityGoalData'; +import { IMessageParser } from './../../../../../core/communication/messages/IMessageParser'; + +export class CommunityGoalProgressMessageParser implements IMessageParser +{ + private _data: CommunityGoalData; + + public flush(): boolean + { + this._data = null; + return true; + } + + public parse(wrapper: IMessageDataWrapper): boolean + { + if(!wrapper) return false; + + this._data = new CommunityGoalData(wrapper); + return true; + } + + public get data(): CommunityGoalData + { + return this._data; + } +} diff --git a/src/nitro/communication/messages/parser/quest/ConcurrentUsersGoalProgressMessageParser.ts b/src/nitro/communication/messages/parser/quest/ConcurrentUsersGoalProgressMessageParser.ts new file mode 100644 index 00000000..af597b4d --- /dev/null +++ b/src/nitro/communication/messages/parser/quest/ConcurrentUsersGoalProgressMessageParser.ts @@ -0,0 +1,42 @@ +import { IMessageDataWrapper } from '../../../../../core/communication/messages/IMessageDataWrapper'; +import { IMessageParser } from './../../../../../core/communication/messages/IMessageParser'; + +export class ConcurrentUsersGoalProgressMessageParser implements IMessageParser +{ + private _state: number; + private _userCount: number; + private _userCountGoal: number; + + public flush(): boolean + { + this._state = -1; + this._userCount = -1; + this._userCountGoal = -1; + return true; + } + + public parse(wrapper:IMessageDataWrapper): boolean + { + if(!wrapper) return false; + + this._state = wrapper.readInt(); + this._userCount = wrapper.readInt(); + this._userCountGoal = wrapper.readInt(); + return true; + } + + public get state(): number + { + return this._state; + } + + public get userCount(): number + { + return this._userCount; + } + + public get userCountGoal(): number + { + return this._userCountGoal; + } +} diff --git a/src/nitro/communication/messages/parser/quest/EpicPopupMessageParser.ts b/src/nitro/communication/messages/parser/quest/EpicPopupMessageParser.ts new file mode 100644 index 00000000..a9caa21a --- /dev/null +++ b/src/nitro/communication/messages/parser/quest/EpicPopupMessageParser.ts @@ -0,0 +1,26 @@ +import { IMessageDataWrapper } from '../../../../../core/communication/messages/IMessageDataWrapper'; +import { IMessageParser } from './../../../../../core/communication/messages/IMessageParser'; + +export class EpicPopupMessageParser implements IMessageParser +{ + private _imageUri: string; + + public flush(): boolean + { + this._imageUri = ''; + return true; + } + + public parse(wrapper:IMessageDataWrapper): boolean + { + if(!wrapper) return false; + + this._imageUri = wrapper.readString(); + return true; + } + + public get imageUri():string + { + return this._imageUri; + } +} diff --git a/src/nitro/communication/messages/parser/quest/QuestCancelledMessageParser.ts b/src/nitro/communication/messages/parser/quest/QuestCancelledMessageParser.ts new file mode 100644 index 00000000..797ebaf4 --- /dev/null +++ b/src/nitro/communication/messages/parser/quest/QuestCancelledMessageParser.ts @@ -0,0 +1,25 @@ +import { IMessageDataWrapper } from '../../../../../core/communication/messages/IMessageDataWrapper'; +import { IMessageParser } from './../../../../../core/communication/messages/IMessageParser'; + +export class QuestCancelledMessageParser implements IMessageParser +{ + private _expired: boolean; + + public flush(): boolean + { + return true; + } + + public parse(wrapper:IMessageDataWrapper): boolean + { + if(!wrapper) return false; + + this._expired = wrapper.readBoolean(); + return true; + } + + public get expired(): boolean + { + return this._expired; + } +} diff --git a/src/nitro/communication/messages/parser/quest/QuestCompletedMessageParser.ts b/src/nitro/communication/messages/parser/quest/QuestCompletedMessageParser.ts new file mode 100644 index 00000000..3d3a1c01 --- /dev/null +++ b/src/nitro/communication/messages/parser/quest/QuestCompletedMessageParser.ts @@ -0,0 +1,34 @@ +import { IMessageDataWrapper } from '../../../../../core/communication/messages/IMessageDataWrapper'; +import { QuestMessageData } from '../../incoming/quest/QuestMessageData'; +import { IMessageParser } from './../../../../../core/communication/messages/IMessageParser'; + +export class QuestCompletedMessageParser implements IMessageParser +{ + private _questData: QuestMessageData; + private _showDialog: boolean; + + public flush(): boolean + { + this._questData = null; + return true; + } + + public parse(wrapper:IMessageDataWrapper): boolean + { + if(!wrapper) return false; + + this._questData = new QuestMessageData(wrapper); + this._showDialog = wrapper.readBoolean(); + return true; + } + + public get questData():QuestMessageData + { + return this._questData; + } + + public get showDialog(): boolean + { + return this._showDialog; + } +} diff --git a/src/nitro/communication/messages/parser/quest/QuestDailyMessageParser.ts b/src/nitro/communication/messages/parser/quest/QuestDailyMessageParser.ts new file mode 100644 index 00000000..64d0f911 --- /dev/null +++ b/src/nitro/communication/messages/parser/quest/QuestDailyMessageParser.ts @@ -0,0 +1,45 @@ +import { IMessageDataWrapper } from '../../../../../core/communication/messages/IMessageDataWrapper'; +import { QuestMessageData } from '../../incoming/quest/QuestMessageData'; +import { IMessageParser } from './../../../../../core/communication/messages/IMessageParser'; + +export class QuestDailyMessageParser implements IMessageParser +{ + private _quest:QuestMessageData; + private _easyQuestCount:number; + private _hardQuestCount:number; + + public flush(): boolean + { + this._quest = null; + return true; + } + + public parse(wrapper:IMessageDataWrapper): boolean + { + if(!wrapper) return false; + + const _local_2 = wrapper.readBoolean(); + if(_local_2) + { + this._quest = new QuestMessageData(wrapper); + this._easyQuestCount = wrapper.readInt(); + this._hardQuestCount = wrapper.readInt(); + } + return true; + } + + public get quest(): QuestMessageData + { + return this._quest; + } + + public get easyQuestCount(): number + { + return this._easyQuestCount; + } + + public get hardQuestCount(): number + { + return this._hardQuestCount; + } +} diff --git a/src/nitro/communication/messages/parser/quest/QuestMessageParser.ts b/src/nitro/communication/messages/parser/quest/QuestMessageParser.ts new file mode 100644 index 00000000..241c07d7 --- /dev/null +++ b/src/nitro/communication/messages/parser/quest/QuestMessageParser.ts @@ -0,0 +1,27 @@ +import { IMessageDataWrapper } from '../../../../../core/communication/messages/IMessageDataWrapper'; +import { QuestMessageData } from '../../incoming/quest/QuestMessageData'; +import { IMessageParser } from './../../../../../core/communication/messages/IMessageParser'; + +export class QuestMessageParser implements IMessageParser +{ + private _quest: QuestMessageData; + + public flush(): boolean + { + this._quest = null; + return true; + } + + public parse(wrapper:IMessageDataWrapper): boolean + { + if(!wrapper) return false; + + this._quest = new QuestMessageData(wrapper); + return true; + } + + public get quest():QuestMessageData + { + return this._quest; + } +} diff --git a/src/nitro/communication/messages/parser/quest/QuestsMessageParser.ts b/src/nitro/communication/messages/parser/quest/QuestsMessageParser.ts new file mode 100644 index 00000000..6695905c --- /dev/null +++ b/src/nitro/communication/messages/parser/quest/QuestsMessageParser.ts @@ -0,0 +1,41 @@ +import { IMessageDataWrapper } from '../../../../../core/communication/messages/IMessageDataWrapper'; +import { IMessageParser } from '../../../../../core/communication/messages/IMessageParser'; +import { QuestMessageData } from '../../incoming/quest/QuestMessageData'; + +export class QuestsMessageParser implements IMessageParser +{ + private _quests: QuestMessageData[]; + private _openWindow: boolean; + + + public flush(): boolean + { + this._quests = []; + return true; + } + + public parse(wrapper:IMessageDataWrapper): boolean + { + if(!wrapper) return false; + + const count = wrapper.readInt(); + + for(let i = 0; i < count; i++) + { + this._quests.push(new QuestMessageData(wrapper)); + } + + this._openWindow = wrapper.readBoolean(); + return true; + } + + public get quests(): QuestMessageData[] + { + return this._quests; + } + + public get openWindow(): boolean + { + return this._openWindow; + } +} diff --git a/src/nitro/communication/messages/parser/quest/SeasonalQuestsParser.ts b/src/nitro/communication/messages/parser/quest/SeasonalQuestsParser.ts new file mode 100644 index 00000000..2ddece51 --- /dev/null +++ b/src/nitro/communication/messages/parser/quest/SeasonalQuestsParser.ts @@ -0,0 +1,33 @@ +import { IMessageDataWrapper } from '../../../../../core/communication/messages/IMessageDataWrapper'; +import { QuestMessageData } from '../../incoming/quest/QuestMessageData'; +import { IMessageParser } from './../../../../../core/communication/messages/IMessageParser'; + +export class SeasonalQuestsParser implements IMessageParser +{ + private _quests: QuestMessageData[]; + + public flush(): boolean + { + this._quests = []; + return true; + } + + public parse(wrapper:IMessageDataWrapper): boolean + { + if(!wrapper) return false; + + const count = wrapper.readInt(); + + for(let i = 0; i < count; i++) + { + this._quests.push(new QuestMessageData(wrapper)); + } + + return true; + } + + public get quests(): QuestMessageData[] + { + return this._quests; + } +} diff --git a/src/nitro/communication/messages/parser/quest/index.ts b/src/nitro/communication/messages/parser/quest/index.ts new file mode 100644 index 00000000..c96e9fed --- /dev/null +++ b/src/nitro/communication/messages/parser/quest/index.ts @@ -0,0 +1,11 @@ +export * from './CommunityGoalEarnedPrizesMessageParser'; +export * from './CommunityGoalHallOfFameMessageParser'; +export * from './CommunityGoalProgressMessageParser'; +export * from './ConcurrentUsersGoalProgressMessageParser'; +export * from './EpicPopupMessageParser'; +export * from './QuestCancelledMessageParser'; +export * from './QuestCompletedMessageParser'; +export * from './QuestDailyMessageParser'; +export * from './QuestMessageParser'; +export * from './QuestsMessageParser'; +export * from './SeasonalQuestsParser';