diff --git a/core/core.go b/core/core.go index 35599d7..f88a107 100644 --- a/core/core.go +++ b/core/core.go @@ -19,6 +19,8 @@ type AppConfig struct { Port string TickInterval time.Duration + + World *ecs.World } type App struct { @@ -46,6 +48,7 @@ func New(ac AppConfig) *App { ) world := &ecs.World{} + ac.World = world return &App{ L: l, @@ -63,7 +66,7 @@ func (a *App) Run(ctx context.Context) { } }() - s := NewServer(ctx, a.L, a.Config.Port) + s := NewServer(ctx, a.L, a.Config.Port, world) go s.Start() for { diff --git a/core/server.go b/core/server.go index 5b1ce42..8691040 100644 --- a/core/server.go +++ b/core/server.go @@ -5,6 +5,8 @@ import ( "log/slog" "net" "time" + + "github.com/EngoEngine/ecs" ) type Server struct { @@ -13,9 +15,10 @@ type Server struct { ctx context.Context Sessions chan *Session ln net.Listener + w *ecs.World } -func NewServer(ctx context.Context, l *slog.Logger, port string) *Server { +func NewServer(ctx context.Context, l *slog.Logger, port string, w *ecs.World) *Server { var s Server c := make(chan *Session) @@ -41,6 +44,7 @@ func NewServer(ctx context.Context, l *slog.Logger, port string) *Server { s.ln = ln s.l = l s.port = port + s.w = w return &s } diff --git a/core/session.go b/core/session.go index 644a7c7..7754f7e 100644 --- a/core/session.go +++ b/core/session.go @@ -7,6 +7,7 @@ import ( "log/slog" "net" + "github.com/EngoEngine/ecs" "github.com/google/uuid" ) @@ -16,15 +17,23 @@ type Session struct { p Printer l *slog.Logger - userID uint64 + w *ecs.World + + sessionID uuid.UUID + userID uint64 } -func NewSession(ctx context.Context, c net.Conn, p Printer, l *slog.Logger) *Session { +func NewSession(ctx context.Context, c net.Conn, p Printer, l *slog.Logger, w *ecs.World) *Session { sid := uuid.New() return &Session{ ctx: ctx, - l: l.With(slog.String("sid", sid.String())), - c: c, + + l: l.With(slog.String("sid", sid.String())), + c: c, + w: w, + p: p, + + sessionID: sid, } }