import { _decorator, Component, Enum, Label } from "cc"; import { EventManager } from "@max-studio/core/event/EventManager"; import UIManager from "@max-studio/core/ui/UIManager"; import LogUtils from "@max-studio/core/utils/LogUtils"; import { ShopUI } from "../../uis/ShopUI"; import { CurrencyManager } from "../CurrencyManager"; import { CurrencyEventMessage, CurrencyType } from "../Types"; import { onEvent } from "@max-studio/core/decorators"; const { ccclass, property } = _decorator; @ccclass("CurrencyItem") export class CurrencyItem extends Component { @property({ type: Enum(CurrencyType) }) public type: CurrencyType = CurrencyType.ENERGY; @property(Label) public label: Label = null!; protected onLoad(): void { this.node.onClick(this.onGotoCurrencyShop, this); } private onGotoCurrencyShop() { LogUtils.log("点击了货币商店:", this.type); void UIManager.getInstance().openUI(ShopUI, this.type); } @onEvent(CurrencyEventMessage.CURRENCY_VALUE_CHANGED) private onCurrencyValueChanged(type: CurrencyType, value: number) { if (type !== this.type) { return; } this.label.string = CurrencyManager.getInstance().formatCurrencyDisplay(this.type, value); } protected onDestroy(): void { EventManager.getInstance().off(CurrencyEventMessage.CURRENCY_VALUE_CHANGED, this.onCurrencyValueChanged, this); } protected start(): void { this.label.string = CurrencyManager.getInstance().formatCurrencyDisplay(this.type); } }