import { _decorator, Component, Label, Node, Sprite, UITransform } from "cc"; import { Config18x } from "db://assets/Scripts/Main/Config/Config18x"; import { ViewManager } from "db://assets/Scripts/Main/Manager/ViewManager"; import ResManager from "db://assets/Scripts/Main/Manager/ResManager"; import Utils from "db://assets/Scripts/Main/Common/Utils"; import { NavigationManager } from "../manager/NavigationManager"; import { Girl, PriceType } from "../../schema/schema"; import LanguageUtils from "../../Main/Common/LanguageUtils"; import { InnerMsgCode } from "../../Main/Config/InnerMsgCode"; const { ccclass, property } = _decorator; @ccclass("GirlListItem") export class GirlListItem extends Component { @property(Sprite) avatar: Sprite; @property(Label) girlName: Label; @property(Label) tags: Label; @property(Label) price: Label; @property(Node) freeNode: Node; @property(Node) tryNode: Node; @property(Node) chatBtn: Node; @property(Node) starParent: Node; id: number = -1; nameKey: string; tagKey: string; private onLanguageChangeCallback = () => { if (!this.girlName || !this.tags) return; this.girlName.string = LanguageUtils.getText(this.nameKey); let desc = ""; const tags = LanguageUtils.getText(this.tagKey).split("|"); for (let i = 0; i < tags.length; i++) { if (i != 0) desc += "\n"; desc += tags[i]; } this.tags.string = desc; }; protected onLoad(): void { Utils.addInnerEL(InnerMsgCode.LanguageChange, this, this.onLanguageChangeCallback); } protected onDestroy(): void { Utils.removeInnerEL(InnerMsgCode.LanguageChange, this, this.onLanguageChangeCallback); } baseNode: Node; refreshData(data: Girl, baseNode: Node) { this.baseNode = baseNode; this.id = data.id; this.nameKey = data.nameKey; this.girlName.string = LanguageUtils.getText(data.nameKey); this.tagKey = data.tagKey; let desc = ""; const tags = LanguageUtils.getText(data.tagKey).split("|"); for (let i = 0; i < tags.length; i++) { if (i != 0) desc += "|"; desc += tags[i]; } this.tags.string = desc; this.price.node.active = data.priceType == PriceType.pay; this.freeNode.active = data.priceType == PriceType.free; this.tryNode.active = data.priceType == PriceType.first_time_free; ResManager.I.changeBundleSpriteFrame( this.avatar, data.avatarPath, "Chat18x", () => { let sizeTran = this.avatar.node.parent.getComponent(UITransform); Utils.adjustBgPixelRatioToSize( sizeTran.contentSize, this.avatar.node, 2 ); } ); for (let i = 0; i < 5; i++) { this.starParent.children[i].active = i < data.starCount; } } onClickDetail() { NavigationManager.Instance.navigateToGirlDetail(this.id); ViewManager.I.closeView(this.baseNode); } update(deltaTime: number) {} }