package character

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

/// EXTENSION 4 : téléportation ///

func (c *Character) teleport() (teleported bool) {

	// Variable indiquant si on s'est téléporté //
	teleported = false

	// Défini les positions des portails //
	if ebiten.IsKeyPressed(ebiten.KeyT) {
		if c.Portail_actif == 0 {
			c.Portail_depart_x = c.X
			c.Portail_depart_y = c.Y
			c.Portail_actif = 1
		} else if c.Portail_actif == 1 && (c.Portail_depart_x != c.X || c.Portail_depart_y != c.Y) {
			c.Portail_arrivee_x = c.X
			c.Portail_arrivee_y = c.Y
			c.Portail_actif++
		} else if c.Portail_actif == 2 && (c.Portail_arrivee_x != c.X || c.Portail_arrivee_y != c.Y) {
			c.Portail_depart_x = c.Portail_arrivee_x
			c.Portail_depart_y = c.Portail_arrivee_y
			c.Portail_arrivee_x = c.X
			c.Portail_arrivee_y = c.Y
			c.tp_autorise = false
		}
	}

	// Si tous les portails sont déjà posés et qu'on ne vient pas d'en poser un juste avant, autorise la téléportation //
	if c.Portail_actif < 2 {
		c.tp_autorise = false
	} else if (c.Portail_arrivee_x != c.X || c.Portail_arrivee_y != c.Y) && (c.Portail_depart_x != c.X || c.Portail_depart_y != c.Y) {
		c.tp_autorise = true
	}

	// Gère la téléportation d'un portail à l'autre //
	if (c.X == c.Portail_arrivee_x) && (c.Y == c.Portail_arrivee_y) && c.tp_autorise {
		c.X = c.Portail_depart_x
		c.Y = c.Portail_depart_y
		c.tp_autorise = false
		teleported = true
	} else if (c.X == c.Portail_depart_x) && (c.Y == c.Portail_depart_y) && c.tp_autorise {
		c.X = c.Portail_arrivee_x
		c.Y = c.Portail_arrivee_y
		c.tp_autorise = false
		teleported = true
	}

	return teleported
}
