feat(ui): Implement countless feature using the SJWP #89

Merged
Janis merged 11 commits from feat/implement-events into main 2025-11-27 08:53:38 +01:00
17 changed files with 298 additions and 51 deletions
Showing only changes of commit 998308d140 - Show all commits

View File

@@ -59,9 +59,6 @@ class GameLobby private(
if (event.oldState == MainMenu && event.newState == Lobby) { if (event.oldState == MainMenu && event.newState == Lobby) {
return return
} }
if (event.oldState == Lobby && event.newState == InGame) {
println("RECEIVED GAMESTATEEVENT")
}
users.values.foreach(session => session.updatePlayer(event)) users.values.foreach(session => session.updatePlayer(event))
case event: SimpleEvent => case event: SimpleEvent =>
users.values.foreach(session => session.updatePlayer(event)) users.values.foreach(session => session.updatePlayer(event))
@@ -74,7 +71,6 @@ class GameLobby private(
* @param user the user who wants to start the game. * @param user the user who wants to start the game.
*/ */
def startGame(user: User): Unit = { def startGame(user: User): Unit = {
println("STARTED GAME IN LOGIC")
val sessionOpt = users.get(user.id) val sessionOpt = users.get(user.id)
if (sessionOpt.isEmpty) { if (sessionOpt.isEmpty) {
throw new NotInThisGameException("You are not in this game!") throw new NotInThisGameException("You are not in this game!")

View File

@@ -28,7 +28,7 @@ class UserSession(val user: User, val host: Boolean, val gameLobby: GameLobby) e
else canInteract = Some(InteractionType.Card) else canInteract = Some(InteractionType.Card)
case _ => case _ =>
} }
websocketActor.foreach(_.transmitEventToClient(event, gameLobby, user)) websocketActor.foreach(_.transmitEventToClient(event))
} }
override def id: UUID = user.id override def id: UUID = user.id
@@ -47,7 +47,6 @@ class UserSession(val user: User, val host: Boolean, val gameLobby: GameLobby) e
// No action needed for Ping // No action needed for Ping
() ()
case "Start Game" => case "Start Game" =>
println("INSIDE HANDLE WEB RESPONSE" + data)
gameLobby.startGame(user) gameLobby.startGame(user)
case "play Card" => case "play Card" =>
println("PLAYING CARD..." + data) println("PLAYING CARD..." + data)

View File

@@ -99,8 +99,7 @@ class UserWebsocketActor(
transmitTextToClient(jsonObj.toString()) transmitTextToClient(jsonObj.toString())
} }
def transmitEventToClient(event: SimpleEvent, gameLobby: GameLobby, user: User): Unit = { def transmitEventToClient(event: SimpleEvent): Unit = {
val session = gameLobby.getUserSession(user.id)
transmitJsonToClient(WebsocketEventMapper.toJson(event, session)) transmitJsonToClient(WebsocketEventMapper.toJson(event, session))
} }

View File

@@ -69,7 +69,7 @@
} }
</div> </div>
<div class="col-12 text-center mb-5"> <div class="col-12 text-center mb-5">
<div class="btn btn-success" onclick="startGame('@gamelobby.id', '@user.get.id', '@user.get.name','@user.get.passwordHash', @user.get.internalId)">Start Game</div> <div class="btn btn-success" onclick="startGame()">Start Game</div>
</div> </div>
} else { } else {
<div id="players" class="justify-content-center align-items-center d-flex"> <div id="players" class="justify-content-center align-items-center d-flex">

View File

@@ -27,7 +27,6 @@ function handlePlayCard(cardIndex, dog) {
).catch( ).catch(
(err) => { (err) => {
const cardslide = $('#card-slide') const cardslide = $('#card-slide')
console.log("EERROOOORRR PLAYING CARD" + (err.toString() === "You can't play this card!") + err.message)
console.warn("play card was not successful") console.warn("play card was not successful")
if (err.message === "You can't play this card!") { if (err.message === "You can't play this card!") {
cardslide.removeClass("inactive") cardslide.removeClass("inactive")