feat(backend): send own cards and player states on room join

This commit is contained in:
2025-03-11 12:39:22 +01:00
parent ba44508f00
commit 14aeb21772
3 changed files with 17 additions and 1 deletions

View File

@ -286,4 +286,6 @@ func onPlayerJoin(client *socketio.Socket, room *types.Room, player *types.Playe
}
game.OnPlayedCardUpdate(room, player, card)
})
game.SendInitialData(room, player)
}

View File

@ -132,6 +132,16 @@ func BroadcastInRoom(room *types.Room, topic string, data interface{}) {
}
}
func SendInitialData(room *types.Room, targetPlayer *types.Player) {
if targetPlayer.Connection.Socket == nil {
return
}
targetPlayer.Connection.Socket.Emit("OwnCards", types.BuildOwnCardsPacket(room, targetPlayer))
for _, player := range room.Players {
targetPlayer.Connection.Socket.Emit("PlayerState", types.BuildPlayerStatePacket(room, player))
}
}
func OnRoomUpdate(room *types.Room) {
db.Conn.UpdateRoom(room)
BroadcastInRoom(room, "RoomInfo", types.BuildRoomInfoPacket(room))

View File

@ -103,7 +103,11 @@ func BuildOwnCardsPacket(room *Room, player *Player) S2C_OwnCards {
}
func BuildPlayerStatePacket(room *Room, player *Player) S2C_PlayerState {
return S2C_PlayerState{PlayerId: player.PlayerId, NumCards: len(player.Cards), Active: room.CardDeck.IsPlayerActive(player)}
isActivePlayer := false
if room.CardDeck != nil && room.CardDeck.IsPlayerActive(player) {
isActivePlayer = true
}
return S2C_PlayerState{PlayerId: player.PlayerId, NumCards: len(player.Cards), Active: isActivePlayer}
}
func BuildCardPlayedPacket(player *Player, cardIndex int, card Card) S2C_CardPlayed {
return S2C_CardPlayed{Card: card, CardIndex: cardIndex, PlayedBy: player.PlayerId}