package controllers import com.google.inject.{Guice, Injector} import de.knockoutwhist.KnockOutWhist import de.knockoutwhist.components.Configuration import de.knockoutwhist.control.GameState.{InGame, Lobby, SelectTrump, TieBreak} import de.knockoutwhist.control.controllerBaseImpl.BaseGameLogic import di.KnockOutWebConfigurationModule import logic.PodGameManager import model.sessions.SimpleSession import play.api.mvc.* import play.api.* import play.twirl.api.Html import java.util.UUID import javax.inject.* /** * This controller creates an `Action` to handle HTTP requests to the * application's home page. */ @Singleton class HomeController @Inject()(val controllerComponents: ControllerComponents) extends BaseController { private var initial = false private val injector: Injector = Guice.createInjector(KnockOutWebConfigurationModule()) /** * Create an Action to render an HTML page. * * The configuration in the `routes` file means that this method * will be called when the application receives a `GET` request with * a path of `/`. */ def index(): Action[AnyContent] = { if (!initial) { initial = true KnockOutWhist.entry(injector.getInstance(classOf[Configuration])) } Action { implicit request => Redirect("/sessions") } } def rules(): Action[AnyContent] = { Action { implicit request => Ok(views.html.rules.apply()) } } def sessions(): Action[AnyContent] = { Action { implicit request => Ok(views.html.sessions.apply(PodGameManager.listSessions())) } } def ingame(id: String): Action[AnyContent] = { val uuid: UUID = UUID.fromString(id) Action { implicit request => NotFound(views.html.tui.apply(List(Html(s"

Session with id $id not found!

")))) } // if (PodGameManager.identify(uuid).isEmpty) { // return Action { implicit request => // NotFound(views.html.tui.apply(List(Html(s"

Session with id $id not found!

")))) // } // } else { // val session = PodGameManager.identify(uuid).get // val player = session.asInstanceOf[SimpleSession].player // val logic = BaseGameLogic(null) // if (logic.getCurrentState == Lobby) { // // } else if (logic.getCurrentState == InGame) { // return Action { implicit request => // Ok(views.html.ingame.apply(player, logic)) // } // } else if (logic.getCurrentState == SelectTrump) { // return Action { implicit request => // Ok(views.html.selecttrump.apply(player, logic)) // } // } else if (logic.getCurrentState == TieBreak) { // return Action { implicit request => // Ok(views.html.tie.apply(player, logic)) // } // } // } // Action { implicit request => // InternalServerError("Oops") // } } }