@ -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 {
@ -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
@ -7,6 +7,7 @@ import (
"github.com/google/uuid"
@ -16,15 +17,23 @@ type Session struct {
p Printer
l *slog.Logger
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,
w: w,
p: p,
sessionID: sid,