ActivitiesNoticeItem.ts 1.51 KB
import { DummyNode, DummyRichText, DummySprite } from "../../common/CCDummyObjects";
import { ResUtils } from "../../common/utils/ResUtils";
import { ActivitiesItemModelManager } from "../model/ActivitiesItemModelManager";

const { ccclass, property } = cc._decorator;

@ccclass
export default class ActivitiesNoticeItem extends cc.Component {

    @property({ type: cc.Sprite, displayName: "Background sprite" })
    backgroundSprite: cc.Sprite = DummySprite;
    @property({ type: cc.Node, displayName: "Click node" })
    clickNode: cc.Node = DummyNode;
    @property({ type: cc.Node, displayName: "RedDot node" })
    redDotNode: cc.Node = DummyNode;
    @property({ type: cc.RichText, displayName: "Background richText" })
    describeRichText: cc.RichText = DummyRichText;

    private _activityId: number;
    private _callFunc: () => void;

    async setData(activityId: number, canClick: boolean, describe: string, callback: () => void) {
        this._activityId = activityId;
        this._callFunc = callback;
        this.backgroundSprite.spriteFrame = await ResUtils.loadRes(`textures/notice/activitiesItem/${activityId}`, cc.SpriteFrame);
        this.clickNode.active = canClick;
        this.describeRichText.string = describe;
        this.refreshRedDot();
    }

    refreshRedDot() {
        let isReaded = ActivitiesItemModelManager.getActivitiesReaded(this._activityId);
        this.redDotNode.active = !isReaded;
    }

    onItemButtonClick() {
        if (this._callFunc) {
            this._callFunc();
        }
    }
}