import { _decorator, Component, Enum, Node } from 'cc'; import { CupHeight, WaterColors } from '../TakeGobletGlobalInstance'; import { Water } from './Water'; const { ccclass, property } = _decorator; @ccclass('TempCup') export class TempCup extends Component { @property({ type: Enum(CupHeight), displayName: '杯高度' }) cupHeight: CupHeight = CupHeight.One @property(Node) waters: Node = null!; //水节点 private _currentColor: WaterColors = WaterColors.Blue; private _isFull: boolean = false; get isFull(): boolean { return this._isFull; } get currentColor(): WaterColors { return this._currentColor; } start() { } update(deltaTime: number) { } fill(color: WaterColors) { if (this._isFull) return; const waterNode = this.waters.children[0]; if (waterNode) { const water = waterNode.getComponent(Water)!; water.color = color; waterNode.active = true; this._currentColor = color; this._isFull = true; } } reset() { this.waters.children[0].active = false; this._isFull = false; console.log('暂存杯已重置'); } public getColors(): WaterColors[] { return this.waters.children .filter(node => node.active) .map(node => node.getComponent(Water)!.color); } public getActiveWaters(): Water[] { return this.waters.children .filter(node => node.active) .map(node => node.getComponent(Water)!); } public isEmpty(): boolean { return this.waters.children.every(node => !node.active); } }