mirror of
https://github.com/billsonnn/nitro-renderer.git
synced 2024-11-30 11:10:52 +01:00
134 lines
3.3 KiB
TypeScript
134 lines
3.3 KiB
TypeScript
import { IActionDefinition, IPartColor } from '@nitrots/api';
|
|
import { AvatarAnimationFrame } from './structure';
|
|
|
|
export class AvatarImagePartContainer
|
|
{
|
|
private _bodyPartId: string;
|
|
private _partType: string;
|
|
private _flippedPartType: string;
|
|
private _partId: string;
|
|
private _color: IPartColor;
|
|
private _frames: AvatarAnimationFrame[];
|
|
private _action: IActionDefinition;
|
|
private _isColorable: boolean;
|
|
private _isBlendable: boolean;
|
|
private _paletteMapId: number;
|
|
|
|
constructor(bodyPartId: string, partType: string, partId: string, partColor: IPartColor, frames: AvatarAnimationFrame[], action: IActionDefinition, isColorable: boolean, paletteMapId: number, flippedPartType: string = '', isBlendable: boolean = false, _arg_11: number = 1)
|
|
{
|
|
this._bodyPartId = bodyPartId;
|
|
this._partType = partType;
|
|
this._partId = partId;
|
|
this._color = partColor;
|
|
this._frames = frames;
|
|
this._action = action;
|
|
this._isColorable = isColorable;
|
|
this._paletteMapId = paletteMapId;
|
|
this._flippedPartType = flippedPartType;
|
|
this._isBlendable = isBlendable;
|
|
|
|
if(this._partType === 'ey') this._isColorable = false;
|
|
}
|
|
|
|
public getFrameIndex(k: number): number
|
|
{
|
|
if(!this._frames || !this._frames.length) return 0;
|
|
|
|
const frameNumber = (k % this._frames.length);
|
|
|
|
if(this._frames[frameNumber] instanceof AvatarAnimationFrame)
|
|
{
|
|
return this._frames[frameNumber].number;
|
|
}
|
|
|
|
return frameNumber;
|
|
}
|
|
|
|
public getFrameDefinition(k: number): AvatarAnimationFrame
|
|
{
|
|
const frameNumber = (k % this._frames.length);
|
|
|
|
if(this._frames && (this._frames.length > frameNumber))
|
|
{
|
|
if(this._frames[frameNumber] instanceof AvatarAnimationFrame)
|
|
{
|
|
return this._frames[frameNumber];
|
|
}
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
public getCacheableKey(k: number): string
|
|
{
|
|
const frameNumber = (k % this._frames.length);
|
|
|
|
if(this._frames && (this._frames.length > frameNumber))
|
|
{
|
|
if(this._frames[frameNumber] instanceof AvatarAnimationFrame)
|
|
{
|
|
const frame = this._frames[frameNumber];
|
|
|
|
return (this.partId + ':' + frame.assetPartDefinition + ':' + frame.number);
|
|
}
|
|
}
|
|
|
|
return (this.partId + ':' + frameNumber);
|
|
}
|
|
|
|
public get bodyPartId(): string
|
|
{
|
|
return this._bodyPartId;
|
|
}
|
|
|
|
public get partType(): string
|
|
{
|
|
return this._partType;
|
|
}
|
|
|
|
public get partId(): string
|
|
{
|
|
return this._partId;
|
|
}
|
|
|
|
public get color(): IPartColor
|
|
{
|
|
return this._color;
|
|
}
|
|
|
|
public get action(): IActionDefinition
|
|
{
|
|
return this._action;
|
|
}
|
|
|
|
public get isColorable(): boolean
|
|
{
|
|
return this._isColorable;
|
|
}
|
|
|
|
public set isColorable(k: boolean)
|
|
{
|
|
this._isColorable = k;
|
|
}
|
|
|
|
public get paletteMapId(): number
|
|
{
|
|
return this._paletteMapId;
|
|
}
|
|
|
|
public get flippedPartType(): string
|
|
{
|
|
return this._flippedPartType;
|
|
}
|
|
|
|
public get isBlendable(): boolean
|
|
{
|
|
return this._isBlendable;
|
|
}
|
|
|
|
public toString(): string
|
|
{
|
|
return [this._bodyPartId, this._partType, this._partId].join(':');
|
|
}
|
|
}
|