
const Style = require('../utils/GameEnum').LevelHomeFriendItemStyle;
const Api = require('../net/Api');
const NotiKey = require('../utils/GameEnum').GameNotificationKey;
var WeChat = require("../net/WeChat");
const DWTool = require('../utils/DWTool');
const AlertManager = require('../utils/AlertManager');

cc.Class({
    extends: cc.Component,

    properties: {

        itemBg: cc.Node,

        allFriendNode: cc.Node,
        friendInfoNode: cc.Node,

        talentNode: cc.Node,
        identityNode: cc.Node,

        identitySpriteFrames: [cc.SpriteFrame],

        headSprite: cc.Sprite,
        nickLabel: cc.Label,

        starsLabel: cc.Label,

        noticeNode: cc.Node,

        style: {
            get: function () {
                if (!this._style) {
                    this._style = Style.Friend;
                }
                return this._style;
            },
            set: function (value) {
                this._style = value;
                this.setEvent();
                this.layout();
            }
        },
    },

    // LIFE-CYCLE CALLBACKS:

    onLoad() {

    },

    setEvent() {

        switch (this.style) {
            case Style.AllFriend:
                this.allFriendNode.on(cc.Node.EventType.TOUCH_END, _.debounce(() => {
                    GameEvent.fire(NotiKey.ShowFriendSystem);
                }, 1000, true), this);
                break;
            case Style.Friend:
                this.friendInfoNode.on(cc.Node.EventType.TOUCH_END, _.debounce(() => {
                    GameEvent.fire(NotiKey.VisitFriendHome, this.info.uid);
                }, 1000, true), this);
                break;
            case Style.Artist:
                this.friendInfoNode.on(cc.Node.EventType.TOUCH_END, _.debounce(() => {
                    GameEvent.fire(NotiKey.ShowUserInfomation, this.info.uid);
                }, 1000, true), this);
                break;
            case Style.Talent:
                this.talentNode.on(cc.Node.EventType.TOUCH_END, function () {
                    AlertManager.showTalentAlert();
                }, this);
                break;
        }
    },

    setFriendInfo(info) {

        this.info = info;
        this.starsLabel.string = info.stars;
        this.nickLabel.string = info.nick;
        Api.createImageFromUrl(info.head, (spriteFrame) => {
            this.headSprite.spriteFrame = spriteFrame;
        }, null);

        if (info.role === 1) { // 我的老板
            this.identityNode.getComponent(cc.Sprite).spriteFrame = this.identitySpriteFrames[0];
        } else { // 我的艺人
            this.identityNode.getComponent(cc.Sprite).spriteFrame = this.identitySpriteFrames[1];
        }

        // 显示消息提示节点
        if (this.style === Style.Friend && info.isStationed) {
            this.noticeNode.active = true
        } else {
            this.noticeNode.active = false
        }
    },

    layout() {
        switch (this.style) {
            case Style.AllFriend:
                this.allFriendNode.active = true;
                this.friendInfoNode.active = false;
                this.talentNode.active = false;
                this.itemBg.active = false;
                this.noticeNode.active = false
                break;
            case Style.Friend:
                this.friendInfoNode.active = true;
                this.allFriendNode.active = false;
                this.talentNode.active = false;
                this.identityNode.active = false;
                this.itemBg.active = true;
                break;
            case Style.Invite:
                this.friendInfoNode.active = false;
                this.allFriendNode.active = false;
                this.talentNode.active = false;
                this.itemBg.active = true;
                this.noticeNode.active = false
                break;
            case Style.Talent:
                this.friendInfoNode.active = false;
                this.allFriendNode.active = false;
                this.talentNode.active = true;
                this.itemBg.active = false;
                this.noticeNode.active = false
                break;
            case Style.Artist:
                this.friendInfoNode.active = true;
                this.allFriendNode.active = false;
                this.talentNode.active = false;
                this.identityNode.active = true;
                this.itemBg.active = true;
                this.noticeNode.active = false
                break;
            default:
                break;
        }
    },

    // update (dt) {},
});
