import * as Phaser from 'phaser';
export class HeartsManager extends Phaser.GameObjects.Container {
private heartKey: string;
private maxHearts: number;
private hearts: Phaser.GameObjects.Image[] = [];
// ハート1つの横幅や間隔(ピクセル)
private spacing: number = 32;
constructor(scene: Phaser.Scene, x: number, y: number, maxHearts: number, heartKey: string) {
super(scene, x, y);
this.maxHearts = maxHearts;
this.heartKey = heartKey;
// シーンの更新リストと表示リストに追加
scene.add.existing(this);
// 初期ハートの生成
this.createHearts();
}
// 指定された最大数分のハート画像を生成してコンテナに格納
private createHearts(): void {
for (let i = 0; i < this.maxHearts; i++) {
const heart = this.scene.add.image(i * this.spacing, 0, this.heartKey);
heart.setOrigin(0, 0);
heart.setScale(0.1);// 左上原点にすると並べやすい
this.add(heart);
this.hearts.push(heart);
}
}
// 現在のライフに応じてハートの表示・非表示(またはテクスチャ)を切り替える
public updateHearts(currentLife: number): void {
this.hearts.forEach((heart, index) => {
if (index < currentLife) {
heart.setActive(true).setVisible(true);
} else {
heart.setActive(false).setVisible(false);
// heart.setTexture('empty_heart_key');
}
});
}
}