91 lines
2.0 KiB
TypeScript
91 lines
2.0 KiB
TypeScript
import { IAssetManager } from '../../../core/asset/IAssetManager';
|
|
import { IGraphicAsset } from '../../../room/object/visualization/utils/IGraphicAsset';
|
|
import { AvatarRenderManager } from '../AvatarRenderManager';
|
|
import { AssetAlias } from './AssetAlias';
|
|
|
|
export class AssetAliasCollection
|
|
{
|
|
private _assets: IAssetManager;
|
|
private _aliases: Map<string, AssetAlias>;
|
|
private _avatarRenderManager: AvatarRenderManager;
|
|
private _missingAssetNames: string[];
|
|
|
|
constructor(k: AvatarRenderManager, _arg_2: IAssetManager)
|
|
{
|
|
this._avatarRenderManager = k;
|
|
this._aliases = new Map();
|
|
this._assets = _arg_2;
|
|
this._missingAssetNames = [];
|
|
}
|
|
|
|
public dispose(): void
|
|
{
|
|
this._assets = null;
|
|
this._aliases = null;
|
|
}
|
|
|
|
public reset(): void
|
|
{
|
|
this.init();
|
|
}
|
|
|
|
public init(): void
|
|
{
|
|
for(const collection of this._assets.collections.values())
|
|
{
|
|
if(!collection) continue;
|
|
|
|
const aliases = collection.data && collection.data.aliases;
|
|
|
|
if(!aliases) continue;
|
|
|
|
for(const name in aliases)
|
|
{
|
|
const alias = aliases[name];
|
|
|
|
if(!alias) continue;
|
|
|
|
this._aliases.set(name, new AssetAlias(name, alias));
|
|
}
|
|
}
|
|
}
|
|
|
|
public hasAlias(k: string): boolean
|
|
{
|
|
const alias = this._aliases.get(k);
|
|
|
|
if(alias) return true;
|
|
|
|
return false;
|
|
}
|
|
|
|
public getAssetName(k: string): string
|
|
{
|
|
let _local_2 = k;
|
|
let _local_3 = 5;
|
|
|
|
while(this.hasAlias(_local_2) && (_local_3 >= 0))
|
|
{
|
|
const _local_4 = this._aliases.get(_local_2);
|
|
|
|
_local_2 = _local_4.link;
|
|
_local_3--;
|
|
}
|
|
|
|
return _local_2;
|
|
}
|
|
|
|
public getAsset(name: string): IGraphicAsset
|
|
{
|
|
if(!this._assets) return null;
|
|
|
|
name = this.getAssetName(name);
|
|
|
|
const asset = this._assets.getAsset(name);
|
|
|
|
if(!asset) return null;
|
|
|
|
return asset;
|
|
}
|
|
}
|