mirror of
https://github.com/HexCardGames/HexDeck.git
synced 2025-09-03 18:48:38 +02:00
feat(backend): send own cards and player states on room join
This commit is contained in:
@ -286,4 +286,6 @@ func onPlayerJoin(client *socketio.Socket, room *types.Room, player *types.Playe
|
||||
}
|
||||
game.OnPlayedCardUpdate(room, player, card)
|
||||
})
|
||||
|
||||
game.SendInitialData(room, player)
|
||||
}
|
||||
|
@ -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))
|
||||
|
@ -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}
|
||||
|
Reference in New Issue
Block a user