package floor

import (
	"image"

	"github.com/hajimehoshi/ebiten/v2"
	"gitlab.univ-nantes.fr/jezequel-l/quadtree/assets"
	"gitlab.univ-nantes.fr/jezequel-l/quadtree/configuration"
)

/// EXTENSION 3 : monde mouvant ///

// Anime s'occupe d'animer les tuiles d'eau et d'herbe (pour un monde plus vivant :) )
func (f Floor) Anime(screen *ebiten.Image) {

	for y := range f.content {
		for x := range f.content[y] {

			// Animation de l'eau //
			if f.content[y][x] == 4 {
				op := &ebiten.DrawImageOptions{}
				op.GeoM.Translate(float64(x*configuration.Global.TileSize), float64(y*configuration.Global.TileSize))
				shiftY := f.animation * configuration.Global.TileSize
				screen.DrawImage(assets.WaterImage.SubImage(
					image.Rect(0, shiftY, 0+configuration.Global.TileSize, shiftY+configuration.Global.TileSize),
				).(*ebiten.Image), op)

			// Animation de l'herbe //
			} else if f.content[y][x] == 0 {
				op := &ebiten.DrawImageOptions{}
				op.GeoM.Translate(float64(x*configuration.Global.TileSize), float64(y*configuration.Global.TileSize))
				shiftY := f.animation / 15 * configuration.Global.TileSize
				screen.DrawImage(assets.GrassImage.SubImage(
					image.Rect(0, shiftY, 0+configuration.Global.TileSize, shiftY+configuration.Global.TileSize),
				).(*ebiten.Image), op)

			// Dessin des autres blocs (inchangés comparé à draw.go) //
			} else if f.content[y][x] != -1 {
				op := &ebiten.DrawImageOptions{}
				op.GeoM.Translate(float64(x*configuration.Global.TileSize), float64(y*configuration.Global.TileSize))

				shiftX := f.content[y][x] * configuration.Global.TileSize

				screen.DrawImage(assets.FloorImage.SubImage(
					image.Rect(shiftX, 0, shiftX+configuration.Global.TileSize, configuration.Global.TileSize),
				).(*ebiten.Image), op)
			}
		}
	}
}
