
const DWTool = require("./DWTool");

class ThemeManager {

    static setBuildItemColor(cityId, node) {

        var color;
        switch (cityId) {
            case 1:
                color = new cc.color('#41b3e9');
                break;
            case 2:
                color = new cc.color('#81f9c8');
                break;
            case 3:
                color = new cc.color('#ffffc0');
                break;
            case 4:
                color = new cc.color('#360f5a');
                break;
            case 5:
                color = new cc.color('#00ddf2');
                break;
            default:
                color = new cc.color('#41b3e9');
                break;
        }

        node.color = color;
    }

    static getSpriteFrameByPath(path) {

        let filePath = `resources/textures/building/${path}`;
        let uuid = cc.loader._getResUuid(filePath.slice(10), cc.Texture2D, true);
    
        let result = Global.buildRes.filter((item) => { return item._uuid === uuid });
        if (result != null && result.length != undefined) {
            let texture = result[0];
            return new cc.SpriteFrame(texture);
        }
        return null;
    }

    // LevelHomeItem 样式变化
    static setItemBuildSpriteFrame(roomId, buildSprite) {
        if (Global.buildRes) {
            let picId = 30100 + parseInt(roomId);
            buildSprite.spriteFrame = this.getSpriteFrameByPath(`${picId}`);
        } else {
            DWTool.loadResSpriteFrame(`./textures/building/${picId}`)
            .then((spriteFrame) => {
                buildSprite.spriteFrame = spriteFrame;
            }).catch((err) => {
                console.log(err);
            });
        }
    }

    // 外墙顶部
    static setItemPillarTopSpriteFrame(cityId, pillar) {
        if (Global.buildRes) {
            let spriteFrame = this.getSpriteFrameByPath(`30${cityId}33`);
            pillar.spriteFrame = spriteFrame;
        } else {
            DWTool.loadResSpriteFrame(`./textures/building/30${cityId}33`)
            .then((spriteFrame) => {
                pillar.spriteFrame = spriteFrame;
            }).catch((err) => {
                console.log(err);
            });
        }   
    }

    // 外墙底部
    static setItemPillarBottomSpriteFrame(cityId, pillar) {
        if (Global.buildRes) {
            let spriteFrame = this.getSpriteFrameByPath(`30${cityId}34`);
            pillar.spriteFrame = spriteFrame;
        } else {
            DWTool.loadResSpriteFrame(`./textures/building/30${cityId}34`)
            .then((spriteFrame) => {
                pillar.spriteFrame = spriteFrame;
            }).catch((err) => {
                console.log(err);
            });
        }   
    }

    // 外墙右边
    static setItemPillarRightSpriteFrame(cityId, pillar) {
        if (Global.buildRes) {
            let spriteFrame = this.getSpriteFrameByPath(`30${cityId}35`);
            pillar.spriteFrame = spriteFrame;
        } else {
            DWTool.loadResSpriteFrame(`./textures/building/30${cityId}35`)
            .then((spriteFrame) => {
                pillar.spriteFrame = spriteFrame;
            }).catch((err) => {
                console.log(err);
            });
        }   
    }

    // 外墙左边
    static setItemPillarLeftSpriteFrame(cityId, pillar) {
        if (Global.buildRes) {
            let spriteFrame = this.getSpriteFrameByPath(`30${cityId}36`);
            pillar.spriteFrame = spriteFrame;
        } else {
            DWTool.loadResSpriteFrame(`./textures/building/30${cityId}36`)
            .then((spriteFrame) => {
                pillar.spriteFrame = spriteFrame;
            }).catch((err) => {
                console.log(err);
            });
        }   
    }

    static setItemPillarSpriteFrame(cityId, pillars) {
        if (Global.buildRes) {
            let spriteFrame = this.getSpriteFrameByPath(`${cityId}_pillar`);
            for (let i = 0; i < pillars.length; i++) {
                let sprite = pillars[i];
                sprite.spriteFrame = spriteFrame;
            }
        } else {
            DWTool.loadResSpriteFrame(`./textures/building/${cityId}_pillar`)
            .then((spriteFrame) => {
                for (let i = 0; i < pillars.length; i++) {
                    let sprite = pillars[i];
                    sprite.spriteFrame = spriteFrame;
                }
            }).catch((err) => {
                console.log(err);
            });
        }   
    }

    static setItemDownSpriteFrame(cityId, lockBottomBg) {
        if (Global.buildRes) {
            lockBottomBg.spriteFrame = this.getSpriteFrameByPath(`30${cityId}16`);
        } else {
            DWTool.loadResSpriteFrame(`./textures/building/30${cityId}16`)
            .then((spriteFrame) => {
                lockBottomBg.spriteFrame = spriteFrame;
            }).catch((err) => {
                console.log(err);
            });
        }   
    }


    static setItemLockDownSpriteFrame(lockBottomBg) {
        if (Global.buildRes) {
            lockBottomBg.spriteFrame = this.getSpriteFrameByPath(`30137`);
        } else {
            DWTool.loadResSpriteFrame(`./textures/building/30137`)
            .then((spriteFrame) => {
                lockBottomBg.spriteFrame = spriteFrame;
            }).catch((err) => {
                console.log(err);
            });
        }   
    }


    // LevelHome最底层一楼样式变化
    static setBottomBuildSpriteFrame(cityId, buildSprite) {
        if (Global.buildRes) {
            buildSprite.spriteFrame = this.getSpriteFrameByPath(`30${cityId}38`);
        } else {
            DWTool.loadResSpriteFrame(`./textures/building/30${cityId}38`)
            .then((spriteFrame) => {
                buildSprite.spriteFrame = spriteFrame;
            }).catch((err) => {
                console.log(err);
            });
        } 
    }

    // LevelHome最顶层楼顶样式变化
    static setTopBgBuildSpriteFrame(cityId, buildSprite) {
        
        if (Global.buildRes) {
            buildSprite.spriteFrame = this.getSpriteFrameByPath(`30${cityId}31`);
        } else {
            DWTool.loadResSpriteFrame(`./textures/building/30${cityId}31`)
            .then((spriteFrame) => {
                buildSprite.spriteFrame = spriteFrame;
            }).catch((err) => {
                console.log(err);
            });
        } 
    }

    static setTopCoverSpriteFrame(cityId, coverSprite) {
        
        if (Global.buildRes) {
            coverSprite.spriteFrame = this.getSpriteFrameByPath(`30${cityId}32`);
        } else {
            DWTool.loadResSpriteFrame(`./textures/building/30${cityId}32`)
            .then((spriteFrame) => {
                coverSprite.spriteFrame = spriteFrame;
            }).catch((err) => {
                console.log(err);
            });
        } 
    }
}

module.exports = ThemeManager;