nitro-renderer/src/nitro/avatar/actions/ActionDefinition.ts

225 lines
5.1 KiB
TypeScript

import { ActionType } from './ActionType';
import { IActionDefinition } from './IActionDefinition';
export class ActionDefinition implements IActionDefinition
{
private _id: string;
private _state: string;
private _precedence: number;
private _activePartSet: string;
private _assetPartDefinition: string;
private _lay: string;
private _geometryType: string;
private _isMain: boolean;
private _isDefault: boolean;
private _isAnimation: boolean;
private _startFromFrameZero: boolean;
private _prevents: string[];
private _preventHeadTurn: boolean;
private _types: Map<number, ActionType>;
private _params: Map<string, string>;
private _defaultParameterValue: string;
private _canvasOffsets: Map<string, Map<number, number[]>>;
constructor(data: any)
{
this._id = data.id;
this._state = data.state;
this._precedence = data.precedence;
this._activePartSet = data.activePartSet;
this._assetPartDefinition = data.assetPartDefinition;
this._lay = data.lay;
this._geometryType = data.geometryType;
this._isMain = data.main || false;
this._isDefault = data.isDefault || false;
this._isAnimation = data.animation || false;
this._startFromFrameZero = data.startFromFrameZero || false;
this._prevents = data.prevents || [];
this._preventHeadTurn = data.preventHeadTurn || false;
this._types = new Map();
this._params = new Map();
this._defaultParameterValue = '';
this._canvasOffsets = null;
if(data.params && (data.params.length > 0))
{
for(const param of data.params)
{
if(!param) continue;
if(param.id === 'default') this._defaultParameterValue = param.value;
else this._params.set(param.id, param.value);
}
}
if(data.types && (data.types.length > 0))
{
for(const type of data.types)
{
if(!type) continue;
const action = new ActionType(type);
this._types.set(action.id, action);
}
}
}
public setOffsets(k: string, _arg_2: number, _arg_3: number[]): void
{
if(!this._canvasOffsets) this._canvasOffsets = new Map();
let existing = this._canvasOffsets.get(k);
if(!existing)
{
existing = new Map();
this._canvasOffsets.set(k, existing);
}
existing.set(_arg_2, _arg_3);
}
public getOffsets(k: string, _arg_2: number): number[]
{
if(!this._canvasOffsets) return null;
const existing = this._canvasOffsets.get(k);
if(!existing) return null;
return existing.get(_arg_2);
}
public getType(id: string): ActionType
{
if(!id) return null;
const existing = this._types.get(parseInt(id));
if(!existing) return null;
return existing;
}
public getParameterValue(id: string): string
{
if(!id) return '';
const existing = this._params.get(id);
if(!existing) return this._defaultParameterValue;
return existing;
}
public getPrevents(type: string): string[]
{
return this._prevents.concat(this.getTypePrevents(type));
}
private getTypePrevents(type: string): string[]
{
if(!type) return [];
const existing = this._types.get(parseInt(type));
if(!existing) return [];
return existing.prevents;
}
public getPreventHeadTurn(k: string): boolean
{
if(!k) return this._preventHeadTurn;
const type = this.getType(k);
if(!type) return this._preventHeadTurn;
return type.preventHeadTurn;
}
public isAnimated(k: string): boolean
{
if(!k) return true;
const type = this.getType(k);
if(!type) return true;
return type.isAnimated;
}
public get id(): string
{
return this._id;
}
public get state(): string
{
return this._state;
}
public get precedence(): number
{
return this._precedence;
}
public get activePartSet(): string
{
return this._activePartSet;
}
public get assetPartDefinition(): string
{
return this._assetPartDefinition;
}
public get lay(): string
{
return this._lay;
}
public get geometryType(): string
{
return this._geometryType;
}
public get isMain(): boolean
{
return this._isMain;
}
public get isDefault(): boolean
{
return this._isDefault;
}
public get isAnimation(): boolean
{
return this._isAnimation;
}
public get startFromFrameZero(): boolean
{
return this._startFromFrameZero;
}
public get prevents(): string[]
{
return this._prevents;
}
public get preventHeadTurn(): boolean
{
return this._preventHeadTurn;
}
public get params(): Map<string, string>
{
return this._params;
}
}