package floor

import "gitlab.univ-nantes.fr/jezequel-l/quadtree/quadtree"

/// EXTENSION : Terre ronde ///

// noVoidInit duplique f.fullContent jusqu'à ce que ses dimensions dépassent celles de l'écran (f.content),
// de sorte à ne pas pouvoir apercevoir de vide. Après cela, le quadtree f.quadtreeContent est mis à jour
// à partir du f.fullContent élargi.
func (f *Floor) noVoidInit() {

	f.QuadtreeContent.GetContent(0, 0, f.fullContent)

	boucleur := 0
	width := len(f.fullContent)
	height := len(f.fullContent[0])

	for len(f.fullContent) < len(f.content) {
		for i := 0; i < width; i++ {
			f.fullContent = append(f.fullContent, f.fullContent[boucleur])
			boucleur = (boucleur + 1) % len(f.fullContent)
		}
	}

	for len(f.fullContent[0]) < len(f.content[0]) {
		for i := 0; i < len(f.fullContent); i++ {
			for j := 0; j < height; j++ {
				f.fullContent[i] = append(f.fullContent[i], f.fullContent[i][j])
			}
		}
	}

	f.QuadtreeContent = quadtree.MakeFromArray(f.fullContent)
}

// noVoidUpdate fait appel à la méthode NoVoidGetContent du fichier extented_get.go pour
// mettre à jour un terrain paraissant se répéter continuellement
func (f *Floor) noVoidUpdate(topLeftX, topLeftY int) {
	f.QuadtreeContent.NoVoidGetContent(topLeftX, topLeftY, f.content)
}
