'use strict'
import ObjectUtils from 'es-common-core/object-utils';
import Asset from 'rpgmv-asset-manager-core/datas/asset';
import AssetFileDeserializer from 'rpgmv-asset-manager-core/datas/asset-file-deserializer';

/**
 * Asset Manager MV
 * アセットデシリアライザ
 *
 * @since 2016/01/03
 * @author RaTTiE
 */
export default class AssetDeserializer {
	/**
	 * オブジェクトのデシリアライズを行う。
	 *
	 * @param data デシリアライズに使用するデータ。
	 * @return デシリアライズしたインスタンス。
	 */
	static deserialize(data) {
		if (data == null) return null;
		var asset = new Asset();

		var files = [];
		for (var i = 0; i < data.files.length; 
i++) {
			files.push(AssetFileDeserializer.deserialize(data.files[i]));
		}

		ObjectUtils.setFields(asset, {
			name: data.name,
			type: data.type,
			files: files,
			using: data.using,
			checked: data.checked,
			selected: data.selected
		});

		return asset;
	}
}
