package se.urmo.game.entities.collectibles;

import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import se.urmo.game.entities.pacman.PacMan;
import se.urmo.game.map.GameMap;
import se.urmo.game.util.FruitType;

import java.awt.Graphics;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;

@Slf4j
public class Fruit {
    private final Point position;
    private final BufferedImage sprite;
    @Getter
    private final int score;
    private final long spawnTime;
    private final long lifetimeMs = 9000; // ~9 seconds

    public Fruit(FruitType type) {
        this.position = new Point(GameMap.colToScreen(13), GameMap.rowToScreen(16)); ;
        this.sprite = type.getSprite();
        this.score = type.getScore();
        this.spawnTime = System.currentTimeMillis();
    }

    public void draw(Graphics g) {
        g.drawImage(sprite, position.x + GameMap.MAP_TILESIZE / 2, position.y, null);
    }

    public boolean isExpired() {
        return System.currentTimeMillis() - spawnTime > lifetimeMs;
    }

    public boolean collidesWith(PacMan pacman) {
        Rectangle pacmanBounds = pacman.getBounds();
        Rectangle fruitBounds = new Rectangle(position.x, position.y, sprite.getWidth(), sprite.getHeight());
        return pacmanBounds.intersects(fruitBounds);
    }

}
