@@ -129,13 +129,11 @@ func (s *LobbyServer) findGameServer(port int) (string, *gameserver.GameServer)
129129 return "" , nil
130130}
131131
132- func (s * LobbyServer ) findRoomCreator (g * gameserver.GameServer ) * gameserver. Client {
133- var c * gameserver. Client
132+ func (s * LobbyServer ) findRoomCreatorSocket (g * gameserver.GameServer ) * websocket. Conn {
133+ var c * websocket. Conn
134134 g .Players .Range (func (k , v any ) bool {
135- if client , ok := v .(gameserver.Client ); ok {
136- if client .Number == 0 {
137- c = & client
138- }
135+ if v .(* gameserver.Client ).Number == 0 {
136+ c = v .(* gameserver.Client ).Socket
139137 }
140138 return true
141139 })
@@ -151,17 +149,17 @@ func (s *LobbyServer) updatePlayers(g *gameserver.GameServer) {
151149 sendMessage .Type = TypeReplyPlayers
152150
153151 g .Players .Range (func (k , v any ) bool {
154- if v .(gameserver.Client ).InLobby {
155- sendMessage .PlayerNames [v .(gameserver.Client ).Number ] = k .(string )
152+ if v .(* gameserver.Client ).InLobby {
153+ sendMessage .PlayerNames [v .(* gameserver.Client ).Number ] = k .(string )
156154 }
157155 return true
158156 })
159157
160158 // send the updated player list to all connected players
161159 g .Players .Range (func (k , v any ) bool {
162- if v .(gameserver.Client ).InLobby {
163- if err := s .sendData (v .(gameserver.Client ).Socket , sendMessage ); err != nil {
164- s .Logger .Error (err , "failed to send message" , "message" , sendMessage , "address" , v .(gameserver.Client ).Socket .RemoteAddr ())
160+ if v .(* gameserver.Client ).InLobby {
161+ if err := s .sendData (v .(* gameserver.Client ).Socket , sendMessage ); err != nil {
162+ s .Logger .Error (err , "failed to send message" , "message" , sendMessage , "address" , v .(* gameserver.Client ).Socket .RemoteAddr ())
165163 }
166164 }
167165 return true
@@ -183,9 +181,9 @@ func (s *LobbyServer) updateRoom(g *gameserver.GameServer, name string) {
183181
184182 // send the updated room to all connected players
185183 g .Players .Range (func (k , v any ) bool {
186- if v .(gameserver.Client ).InLobby {
187- if err := s .sendData (v .(gameserver.Client ).Socket , sendMessage ); err != nil {
188- s .Logger .Error (err , "failed to send message" , "message" , sendMessage , "address" , v .(gameserver.Client ).Socket .RemoteAddr ())
184+ if v .(* gameserver.Client ).InLobby {
185+ if err := s .sendData (v .(* gameserver.Client ).Socket , sendMessage ); err != nil {
186+ s .Logger .Error (err , "failed to send message" , "message" , sendMessage , "address" , v .(* gameserver.Client ).Socket .RemoteAddr ())
189187 }
190188 }
191189 return true
@@ -314,16 +312,13 @@ func (s *LobbyServer) wsHandler(w http.ResponseWriter, r *http.Request) {
314312 if err != nil {
315313 for i , v := range s .gameServers {
316314 v .Players .Range (func (k , w any ) bool {
317- if w .(gameserver.Client ).Socket == ws {
315+ if w .(* gameserver.Client ).Socket == ws {
318316 v .Logger .Info ("Player has left lobby" , "reason" , err .Error (), "player" , k , "address" , ws .RemoteAddr ())
319317
320318 if ! v .Running {
321319 v .Players .Delete (k )
322320 } else {
323- if client , ok := w .(gameserver.Client ); ok {
324- client .InLobby = false
325- v .Players .Store (k , client )
326- }
321+ w .(* gameserver.Client ).InLobby = false
327322 }
328323 s .updatePlayers (v )
329324 }
@@ -402,7 +397,7 @@ func (s *LobbyServer) wsHandler(w http.ResponseWriter, r *http.Request) {
402397 if err != nil {
403398 g .Logger .Error (err , "could not parse IP" , "IP" , ws .RemoteAddr ())
404399 }
405- g .Players .Store (receivedMessage .PlayerName , gameserver.Client {
400+ g .Players .Store (receivedMessage .PlayerName , & gameserver.Client {
406401 IP : net .ParseIP (ip ),
407402 Number : 0 ,
408403 Socket : ws ,
@@ -433,9 +428,9 @@ func (s *LobbyServer) wsHandler(w http.ResponseWriter, r *http.Request) {
433428 roomName , g := s .findGameServer (receivedMessage .Room .Port )
434429
435430 if g != nil {
436- roomCreator := s .findRoomCreator (g )
431+ roomCreatorSocket := s .findRoomCreatorSocket (g )
437432
438- if roomCreator . Socket != ws {
433+ if roomCreatorSocket != ws {
439434 sendMessage .Accept = BadPlayer
440435 sendMessage .Message = "Player must be room creator"
441436 if err := s .sendData (ws , sendMessage ); err != nil {
@@ -553,7 +548,7 @@ func (s *LobbyServer) wsHandler(w http.ResponseWriter, r *http.Request) {
553548 for number = range 4 {
554549 goodNumber = true
555550 g .Players .Range (func (k , v any ) bool {
556- if v .(gameserver.Client ).Number == number {
551+ if v .(* gameserver.Client ).Number == number {
557552 goodNumber = false
558553 }
559554 return true
@@ -567,7 +562,7 @@ func (s *LobbyServer) wsHandler(w http.ResponseWriter, r *http.Request) {
567562 if err != nil {
568563 g .Logger .Error (err , "could not parse IP" , "IP" , ws .RemoteAddr ())
569564 }
570- g .Players .Store (receivedMessage .PlayerName , gameserver.Client {
565+ g .Players .Store (receivedMessage .PlayerName , & gameserver.Client {
571566 IP : net .ParseIP (ip ),
572567 Socket : ws ,
573568 Number : number ,
@@ -616,8 +611,8 @@ func (s *LobbyServer) wsHandler(w http.ResponseWriter, r *http.Request) {
616611 _ , g := s .findGameServer (receivedMessage .Room .Port )
617612 if g != nil {
618613 g .Players .Range (func (k , v any ) bool {
619- if v .(gameserver.Client ).InLobby {
620- if err := s .sendData (v .(gameserver.Client ).Socket , sendMessage ); err != nil {
614+ if v .(* gameserver.Client ).InLobby {
615+ if err := s .sendData (v .(* gameserver.Client ).Socket , sendMessage ); err != nil {
621616 s .Logger .Error (err , "failed to send message" , "message" , sendMessage , "address" , ws .RemoteAddr ())
622617 }
623618 }
@@ -634,9 +629,9 @@ func (s *LobbyServer) wsHandler(w http.ResponseWriter, r *http.Request) {
634629 sendMessage .Type = TypeReplyBeginGame
635630 roomName , g := s .findGameServer (receivedMessage .Room .Port )
636631 if g != nil {
637- roomCreator := s .findRoomCreator (g )
632+ roomCreatorSocket := s .findRoomCreatorSocket (g )
638633
639- if roomCreator . Socket != ws {
634+ if roomCreatorSocket != ws {
640635 sendMessage .Accept = BadPlayer
641636 sendMessage .Message = "Player must be room creator"
642637 if err := s .sendData (ws , sendMessage ); err != nil {
@@ -652,7 +647,7 @@ func (s *LobbyServer) wsHandler(w http.ResponseWriter, r *http.Request) {
652647 if g .BufferTarget == 0 {
653648 privateNetwork := true
654649 g .Players .Range (func (k , v any ) bool {
655- if ! v .(gameserver.Client ).IP .IsPrivate () {
650+ if ! v .(* gameserver.Client ).IP .IsPrivate () {
656651 privateNetwork = false
657652 }
658653 return true
@@ -671,7 +666,7 @@ func (s *LobbyServer) wsHandler(w http.ResponseWriter, r *http.Request) {
671666 sendMessage .Accept = Accepted
672667 go s .watchGameServer (roomName , g )
673668 g .Players .Range (func (k , v any ) bool {
674- if err := s .sendData (v .(gameserver.Client ).Socket , sendMessage ); err != nil {
669+ if err := s .sendData (v .(* gameserver.Client ).Socket , sendMessage ); err != nil {
675670 s .Logger .Error (err , "failed to send message" , "message" , sendMessage , "address" , ws .RemoteAddr ())
676671 }
677672 return true
0 commit comments