import { isValid, Sprite, SpriteAtlas, SpriteFrame } from "cc"
import { AssetType, resLoader } from "../res/ResLoader"
import { AsyncQueue, NextFunction } from "../queue/AsyncQueue";


//头像类型
export enum HeadSpriteType{
    //圆形
    Critical = 0,
    //方块
    Square,
    //圆角
    Round,
}

export class MaterialUtil {

    static iconGame: SpriteAtlas = null;
    static iconFilter: SpriteAtlas = null;
    //头像
    static iconHead: SpriteFrame = null;

    static Restart() {

    }

    static init(callback) {
        let queue = new AsyncQueue();
        queue.pushMulti("InitPool", async (next: NextFunction, params: any, args: any) => {
            resLoader.load('package', 'texture/head/end_0_1/spriteFrame', SpriteFrame, (error: Error, res: SpriteFrame) => {
                if (!error) {
                    this.iconHead = res;
                    if(callback) callback();
                    next()
                    console.log('头像图标加载完成');
                }
            });
        // }, async (next: NextFunction, params: any, args: any) => {
        //     resLoader.load('package', 'texture/hall/Games/Icon_Filter', SpriteAtlas, (error: Error, res: SpriteAtlas) => {
        //         if (!error) {
        //             this.iconFilter = res;
        //             if(callback) callback();
        //             next()
        //             console.log('游戏筛选图标加载完成');
        //         }
        //     });
        });

        queue.complete = () => {
            console.log('materialUtil初始化完成');
        };
        
        queue.play();
    }

    _loadRes(LoadType: AssetType, Url, Back) {
        resLoader.load('package', Url, LoadType, (error: Error, res) => {
            if (!error) {
                Back(res)
            }
        });
    }

    // /** 游戏入口图标 */
    // static getIconGameByID(id) {
    //     return this.iconGame.spriteFrames[id];
    // }

    // /** 游戏筛选图标 */
    // static getIconFilterByName(name) {
    //     return this.iconFilter.spriteFrames[name];
    // }

     /** 游戏入口图标 */
     static getHeadByID(id,sprite:Sprite,headType:HeadSpriteType = HeadSpriteType.Critical) {
        
        resLoader.load('package', 'texture/head/end_0_'+id+"/spriteFrame", SpriteFrame, (error: Error, res: SpriteFrame) => {
            if (!error && isValid(sprite)) {

                sprite.spriteFrame = res;
            }
        })
        //return this.iconGame.spriteFrames[id];
    }
}