89 lines
2.8 KiB
Scala
89 lines
2.8 KiB
Scala
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"<p>Session with id $id not found!</p>"))))
|
|
}
|
|
// if (PodGameManager.identify(uuid).isEmpty) {
|
|
// return Action { implicit request =>
|
|
// NotFound(views.html.tui.apply(List(Html(s"<p>Session with id $id not found!</p>"))))
|
|
// }
|
|
// } 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")
|
|
// }
|
|
}
|
|
} |