new arch
All checks were successful
Create and publish a Docker image 🚀 / build-and-push-image (push) Successful in 1m11s

This commit is contained in:
Smile Rex
2026-01-22 16:34:47 +03:00
parent 68ba9bb2e2
commit 4e04de5581
7 changed files with 45 additions and 31 deletions

25
main.go
View File

@@ -4,6 +4,8 @@ import (
"fmt"
"log"
"net/http"
"server/src/controllers"
"server/src/models"
"github.com/gorilla/websocket"
)
@@ -12,19 +14,19 @@ var upgrader = websocket.Upgrader{
CheckOrigin: func(r *http.Request) bool { return true },
}
func ServeWS(room *Room, w http.ResponseWriter, r *http.Request) {
func ServeWS(room *controllers.Room, w http.ResponseWriter, r *http.Request) {
conn, err := upgrader.Upgrade(w, r, nil)
if err != nil {
return
}
var auth AuthMessage
var auth models.AuthMessage
if err := conn.ReadJSON(&auth); err != nil || auth.Type != "auth" {
conn.Close()
return
}
data, err := VerifyTelegramInitData(auth.InitData, "7697757472:AAESD9HfkWwbIZe-HXR7IazUShr69hZTLmE")
data, err := controllers.VerifyTelegramInitData(auth.InitData, "7697757472:AAESD9HfkWwbIZe-HXR7IazUShr69hZTLmE")
if err != nil {
conn.Close()
return
@@ -39,7 +41,7 @@ func ServeWS(room *Room, w http.ResponseWriter, r *http.Request) {
log.Printf("Player %d connected!", userID)
player := &Player{
player := &models.Player{
ID: userID,
Username: username,
Conn: conn,
@@ -59,26 +61,31 @@ func ServeWS(room *Room, w http.ResponseWriter, r *http.Request) {
go readLoop(room, player)
}
func readLoop(room *Room, player *Player) {
func readLoop(room *controllers.Room, player *models.Player) {
defer func() {
delete(room.Players, player.ID)
player.Conn.Close()
}()
for {
var msg InputMessage
var msg models.StateMessage
err := player.Conn.ReadJSON(&msg)
if err != nil {
return
}
msg.PlayerID = player.ID
room.Input <- msg
switch msg.Type {
case models.InputMsgType:
var input models.InputMessage = msg.Payload.(models.InputMessage)
player.X = input.DX
player.Y = input.DY
room.Input <- input
}
}
}
func main() {
room := NewRoom()
room := controllers.NewRoom()
go room.Run()