new server
This commit is contained in:
55
controllers/connection.go
Normal file
55
controllers/connection.go
Normal file
@@ -0,0 +1,55 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"log"
|
||||
"server/models"
|
||||
|
||||
"github.com/gorilla/websocket"
|
||||
)
|
||||
|
||||
func (h *Hub) readLoop(conn *websocket.Conn) {
|
||||
handMessage := models.Message{Type: MSG_WELCOME}
|
||||
_ = conn.WriteMessage(websocket.BinaryMessage, handMessage.Encode())
|
||||
|
||||
var player *models.Player
|
||||
|
||||
defer func() {
|
||||
if player != nil {
|
||||
h.removePlayer(player.ID)
|
||||
log.Println("Player left:", player.ID)
|
||||
}
|
||||
conn.Close()
|
||||
}()
|
||||
|
||||
for {
|
||||
_, bytes, err := conn.ReadMessage()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
msg, err := models.Decode(bytes)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
continue
|
||||
}
|
||||
|
||||
switch msg.Type {
|
||||
|
||||
case MSG_WELCOME:
|
||||
if player != nil {
|
||||
continue
|
||||
}
|
||||
player = h.handShake(msg.Payload, conn)
|
||||
log.Println("Player joined:", player.ID)
|
||||
|
||||
case MSG_INPUT:
|
||||
if player == nil {
|
||||
continue
|
||||
}
|
||||
reader := models.NewReader(msg.Payload)
|
||||
x := reader.ReadF32()
|
||||
y := reader.ReadF32()
|
||||
h.updatePosition(x, y, player)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user