package elements

import (
	"image/color"
	"math/rand/v2"
	"mover/gamedata"

	"github.com/hajimehoshi/ebiten/v2"
)

type RainDrop struct {
	Sprite   *ebiten.Image
	position gamedata.Coordinates
	cycle    int
}

func NewRainDrop() *RainDrop {
	rd := &RainDrop{
		Sprite: ebiten.NewImage(2, 10),
		cycle:  rand.IntN(30),
	}
	return rd
}

func (rd *RainDrop) Update() error {
	rd.position.Y += 5
	rd.cycle++
	return nil
}

func (rd *RainDrop) Draw() {
	rd.Sprite.Clear()
	rd.Sprite.Fill(color.White)
}

func (rd *RainDrop) GetPosition() gamedata.Coordinates {
	return rd.position
}

func (rd *RainDrop) SetPosition(pos gamedata.Coordinates) {
	rd.position = pos
}

func (rd *RainDrop) Expired() bool {
	return rd.cycle > 30
}
