package wow.doge.mygame.game.subsystems.ai

import scala.collection.immutable.ArraySeq

import com.badlogic.gdx.ai.pfa.Connection
import com.badlogic.gdx.ai.steer.Steerable
import com.badlogic.gdx.ai.steer.behaviors.Arrive
import com.badlogic.gdx.ai.utils.Location
import com.badlogic.gdx.math.Vector3
import wow.doge.mygame.game.subsystems.ai.gdx.MyIndexedGraph
// import com.badlogic.gdx.ai.pfa.indexed.IndexedGraph
// import scala.jdk.javaapi.CollectionConverters._

case class City(x: Float, y: Float, name: String, index: Int)
case class Street(fromNode: City, toNode: City, cost: Float)
    extends Connection[City] {

  override def getCost(): Float = cost

  override def getFromNode(): City = fromNode

  override def getToNode(): City = toNode

}

class CityGraph extends MyIndexedGraph[City] {

  override def getConnections(
      city: City
  ): IndexedSeq[Connection[City]] =
    ArraySeq(Street(City(0f, 0f, "egw", 0), City(0f, 0f, "egw", 0), 1))
  // or Vector(Street(City(0f, 0f, "egw", 0), City(0f, 0f, "egw", 0), 1))

  override def getIndex(city: City): Int = ???

  override def getNodeCount(): Int = ???

}

class MySteerable extends Steerable[Vector3] {
  val arrive = new Arrive[Vector3](this)

  override def getPosition(): Vector3 = ???

  override def getOrientation(): Float = ???

  override def setOrientation(x$1: Float): Unit = ???

  override def vectorToAngle(x$1: Vector3): Float = ???

  override def angleToVector(x$1: Vector3, x$2: Float): Vector3 = ???

  override def newLocation(): Location[Vector3] = ???

  override def getZeroLinearSpeedThreshold(): Float = ???

  override def setZeroLinearSpeedThreshold(x$1: Float): Unit = ???

  override def getMaxLinearSpeed(): Float = ???

  override def setMaxLinearSpeed(x$1: Float): Unit = ???

  override def getMaxLinearAcceleration(): Float = ???

  override def setMaxLinearAcceleration(x$1: Float): Unit = ???

  override def getMaxAngularSpeed(): Float = ???

  override def setMaxAngularSpeed(x$1: Float): Unit = ???

  override def getMaxAngularAcceleration(): Float = ???

  override def setMaxAngularAcceleration(x$1: Float): Unit = ???

  override def getLinearVelocity(): Vector3 = ???

  override def getAngularVelocity(): Float = ???

  override def getBoundingRadius(): Float = ???

  override def isTagged(): Boolean = ???

  override def setTagged(x$1: Boolean): Unit = ???

}
