Skip to content

Commit 73f19d1

Browse files
committed
Implement handler for when player now has multiplayer map
1 parent c36224a commit 73f19d1

File tree

5 files changed

+55
-0
lines changed

5 files changed

+55
-0
lines changed

handlers/ClientGamePlayerHasMap.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package handlers
2+
3+
import (
4+
"example.com/Quaver/Z/multiplayer"
5+
"example.com/Quaver/Z/packets"
6+
"example.com/Quaver/Z/sessions"
7+
)
8+
9+
// Handles when the client states that they now have the multiplayer map
10+
func handleClientGamePlayerHasMap(user *sessions.User, packet *packets.ClientGamePlayerHasMap) {
11+
if packet == nil {
12+
return
13+
}
14+
15+
game := multiplayer.GetGameById(user.GetMultiplayerGameId())
16+
17+
if game == nil {
18+
return
19+
}
20+
21+
game.SetPlayerHasMap(user.Info.Id)
22+
}

handlers/packets.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ func HandleIncomingPackets(conn net.Conn, msg string) {
5454
handleClientChangeGameMap(user, unmarshalPacket[packets.ClientChangeGameMap](msg))
5555
case packets.PacketIdClientGamePlayerNoMap:
5656
handleClientGamePlayerNoMap(user, unmarshalPacket[packets.ClientGamePlayerNoMap](msg))
57+
case packets.PacketIdClientGamePlayerHasMap:
58+
handleClientGamePlayerHasMap(user, unmarshalPacket[packets.ClientGamePlayerHasMap](msg))
5759
default:
5860
log.Println(fmt.Errorf("unknown packet: %v", msg))
5961
}

multiplayer/game.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,19 @@ func (game *Game) SetPlayerDoesntHaveMap(userId int) {
182182
sendLobbyUsersGameInfoPacket(game, true)
183183
}
184184

185+
// SetPlayerHasMap Sets that a player now has the currently played map
186+
func (game *Game) SetPlayerHasMap(userId int) {
187+
game.mutex.Lock()
188+
defer game.mutex.Unlock()
189+
190+
game.Data.PlayersWithoutMap = utils.Filter(game.Data.PlayersWithoutMap, func(x int) bool {
191+
return x != userId
192+
})
193+
194+
game.sendPacketToPlayers(packets.NewServerGamePlayerHasMap(userId))
195+
sendLobbyUsersGameInfoPacket(game, true)
196+
}
197+
185198
// Sends a packet to all players in the game.
186199
func (game *Game) sendPacketToPlayers(packet interface{}) {
187200
for _, id := range game.Data.PlayerIds {

packets/ClientGamePlayerHasMap.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package packets
2+
3+
type ClientGamePlayerHasMap struct {
4+
Packet
5+
}

packets/ServerGamePlayerHasMap.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package packets
2+
3+
type ServerGamePlayerHasMap struct {
4+
Packet
5+
UserId int `json:"uid"`
6+
}
7+
8+
func NewServerGamePlayerHasMap(userId int) *ServerGamePlayerHasMap {
9+
return &ServerGamePlayerHasMap{
10+
Packet: Packet{Id: PacketIdServerGamePlayerHasMap},
11+
UserId: userId,
12+
}
13+
}

0 commit comments

Comments
 (0)