From ce866028078207fdecfa15e44f1e76ffc701a25f Mon Sep 17 00:00:00 2001 From: filips123 Date: Thu, 19 Aug 2021 18:02:32 +0200 Subject: [PATCH] Add server message handler skeleton --- server/internal/game/logic.go | 37 +++++++++++++++++++++++++++++++++++ server/internal/ws/server.go | 5 +++++ 2 files changed, 42 insertions(+) create mode 100644 server/internal/game/logic.go diff --git a/server/internal/game/logic.go b/server/internal/game/logic.go new file mode 100644 index 0000000..2019209 --- /dev/null +++ b/server/internal/game/logic.go @@ -0,0 +1,37 @@ +package game + +import ( + "go.uber.org/zap" + + "github.com/ptr-geeks/ptrun/server/internal/events" + "github.com/ptr-geeks/ptrun/server/internal/messages" +) + +type GameLogic struct { + Logger *zap.SugaredLogger +} + +func (logic *GameLogic) handleJoin(from int32, msg *messages.Join) { + // TODO: Handle join message +} + +func (logic *GameLogic) handleMove(from int32, msg *messages.Move) { + // TODO: Handle move message +} + +func (logic *GameLogic) handleMsg(from int32, msg *messages.Message) { + logic.Logger.Debugw("received message", "from", from, "msg", msg) + + switch msgTyped := msg.Data.(type) { + case *messages.Message_Join: + logic.handleJoin(from, msgTyped.Join) + case *messages.Message_Move: + logic.handleMove(from, msgTyped.Move) + default: + logic.Logger.Warn("unknown message type") + } +} + +func (logic *GameLogic) Subscribe() { + events.Subscribe("server.broadcast", logic.handleMsg) +} diff --git a/server/internal/ws/server.go b/server/internal/ws/server.go index dded0b3..1526c68 100644 --- a/server/internal/ws/server.go +++ b/server/internal/ws/server.go @@ -8,6 +8,7 @@ import ( "github.com/ptr-geeks/ptrun/server/internal/consts" "github.com/ptr-geeks/ptrun/server/internal/events" + "github.com/ptr-geeks/ptrun/server/internal/game" "github.com/ptr-geeks/ptrun/server/internal/messages" ) @@ -60,6 +61,10 @@ func NewServer(logger *zap.Logger) Server { func (s *serverImpl) Run() { s.logger.Debug("server started and listening for events") s.handleBroadcast() + + gameLogic := game.GameLogic{Logger: s.logger} + gameLogic.Subscribe() + for { select { case connect := <-s.connect: