"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.SimpleParse = void 0;
const BaseComParse_1 = require("./BaseComParse");
class SimpleParse extends BaseComParse_1.BaseComParse {
    constructor() {
        super(...arguments);
        this._simpleKeys = [
            //cc.Sprite
            '_customMaterial',
            '_atlas',
            '_spriteFrame',
            //cc.Label
            '_font',
            //cc.Button
            '_normalSprite',
            '_hoverSprite',
            '_pressedSprite',
            '_disabledSprite',
            //meshrender
            '_mesh',
            //animation
            '_defaultClip',
            //audioSources
            '_clip',
            //richText
            '_imageAtlas',
            //dragonBones.ArmatureDisplay
            '_dragonAsset',
            '_dragonAtlasAsset',
            //cc.Billboard
            '_texture',
            //particleSystem2D
            '_file',
            //BoxCollider
            '_material',
            //spine
            '_skeletonData',
            //tiledMap
            '_tmxFile',
            //editBox
            '_backgroundImage',
            // CCPropertyOverrideInfo
            'value',
        ];
        this._arrayKeys = [
            '_materials',
            '_clips',
        ];
        this.comName = '';
    }
    /**
    * 解析预制件数组里的单个项目
    * @param json 预制件数组里的一个项目
    * @param uuidSeekedMap 已经找到了的uuid的名字
    * @returns 返回丢失了uuid的属性的名字
   */
    async parse(json, uuidSeekedMap, fatherJson) {
        this.comName = json.__type__;
        let ret = [];
        //检测单个Key
        for (let simpleKey of this._simpleKeys) {
            if (json[simpleKey]) {
                let uuid = json[simpleKey].__uuid__;
                if (uuid) {
                    if (!uuidSeekedMap.has(uuid)) {
                        let url = await Editor.Message.request('asset-db', 'query-url', uuid);
                        if (url) {
                            uuidSeekedMap.set(uuid, true);
                        }
                        else {
                            ret.push(simpleKey);
                        }
                    }
                }
            }
        }
        for (let arrayKey of this._arrayKeys) {
            if (json[arrayKey]) {
                let i = -1;
                for (let ele of json[arrayKey]) {
                    i++;
                    if (!ele)
                        continue;
                    let uuid = ele.__uuid__;
                    if (!uuid)
                        continue;
                    if (!uuidSeekedMap.has(uuid)) {
                        let url = await Editor.Message.request('asset-db', 'query-url', uuid);
                        if (url) {
                            uuidSeekedMap.set(uuid, true);
                        }
                        else {
                            ret.push(arrayKey + '[' + i + ']');
                        }
                    }
                }
            }
        }
        return ret;
    }
}
exports.SimpleParse = SimpleParse;