nitro-renderer/src/nitro/communication/messages/incoming/catalog/NodeData.ts

100 lines
2.0 KiB
TypeScript

import { IMessageDataWrapper } from '../../../../../core';
export class NodeData
{
private _visible: boolean;
private _icon: number;
private _pageId: number;
private _pageName: string;
private _localization: string;
private _children: NodeData[];
private _offerIds: number[];
constructor(wrapper: IMessageDataWrapper)
{
if(!wrapper) throw new Error('invalid_wrapper');
this.flush();
this.parse(wrapper);
}
public flush(): boolean
{
this._visible = false;
this._icon = 0;
this._pageId = -1;
this._pageName = null;
this._localization = null;
this._children = [];
this._offerIds = [];
return true;
}
public parse(wrapper: IMessageDataWrapper): boolean
{
if(!wrapper) return false;
this._visible = wrapper.readBoolean();
this._icon = wrapper.readInt();
this._pageId = wrapper.readInt();
this._pageName = wrapper.readString();
this._localization = wrapper.readString();
let totalOffers = wrapper.readInt();
while(totalOffers > 0)
{
this._offerIds.push(wrapper.readInt());
totalOffers--;
}
let totalChildren = wrapper.readInt();
while(totalChildren > 0)
{
this._children.push(new NodeData(wrapper));
totalChildren--;
}
return true;
}
public get visible(): boolean
{
return this._visible;
}
public get icon(): number
{
return this._icon;
}
public get pageId(): number
{
return this._pageId;
}
public get pageName(): string
{
return this._pageName;
}
public get localization(): string
{
return this._localization;
}
public get children(): NodeData[]
{
return this._children;
}
public get offerIds(): number[]
{
return this._offerIds;
}
}