import Phaser from 'phaser';

/**
 * Classe Gift (Cadeau)
 * Représente un bonus que le joueur peut collecter
 */
export class Gift extends Phaser.Physics.Arcade.Sprite {
    constructor(scene: Phaser.Scene, x: number, y: number) {
        super(scene, x, y, 'gift');

        scene.add.existing(this);
        scene.physics.add.existing(this);

        // Créer texture temporaire si elle n'existe pas
        if (!scene.textures.exists('gift')) {
            this.createPlaceholderTexture(scene);
        }

        this.setTexture('gift');

        // Animation de rotation
        scene.tweens.add({
            targets: this,
            angle: 360,
            duration: 2000,
            repeat: -1,
        });

        // Animation de flottement vertical
        scene.tweens.add({
            targets: this,
            y: y - 10,
            duration: 1000,
            yoyo: true,
            repeat: -1,
            ease: 'Sine.easeInOut',
        });
    }

    /**
     * Crée une texture temporaire pour le cadeau
     */
    private createPlaceholderTexture(scene: Phaser.Scene): void {
        const graphics = scene.add.graphics();

        // Cadeau : boîte avec noeud
        graphics.fillStyle(0xFFEB3B, 1);
        graphics.fillRect(0, 5, 30, 25);

        graphics.fillStyle(0xFF5722, 1);
        graphics.fillRect(12, 0, 6, 30);
        graphics.fillRect(0, 13, 30, 6);

        graphics.generateTexture('gift', 30, 30);
        graphics.destroy();
    }
}
