random ids i guess, this is bad

master
Jordan Orelli 4 years ago
parent 2a29ee6c88
commit 804943b5ab

@ -3,6 +3,7 @@ package sim
import ( import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"math/rand"
"time" "time"
"github.com/gorilla/websocket" "github.com/gorilla/websocket"
@ -137,6 +138,7 @@ func (s spawnPlayer) exec(r *room, p *player, seq int) result {
if t.here == nil { if t.here == nil {
x, y := n%r.Width, n/r.Width x, y := n%r.Width, n/r.Width
e := entity{ e := entity{
ID: rand.Intn(9000),
Position: math.Vec{x, y}, Position: math.Vec{x, y},
Glyph: '@', Glyph: '@',
behavior: doNothing{}, behavior: doNothing{},

@ -68,23 +68,7 @@ func (w *world) run(hz int) {
w.register(c) w.register(c)
case req := <-w.inbox: case req := <-w.inbox:
w.Info("read from inbox: %v", req) w.handleRequest(req)
if req.From == "" {
w.Error("request has no from: %v", req)
break
}
p, ok := w.players[req.From]
if !ok {
w.Error("received non login request of type %T from unknown player %q", req.Wants, req.From)
}
if p.pending == nil {
p.pending = &req
} else {
p.outbox <- wire.ErrorResponse(req.Seq, "you already have a request for this frame")
}
case <-ticker.C: case <-ticker.C:
w.tick(time.Since(lastTick)) w.tick(time.Since(lastTick))
@ -96,6 +80,27 @@ func (w *world) run(hz int) {
} }
} }
func (w *world) handleRequest(req Request) {
w.Info("read from inbox: %v", req)
if req.From == "" {
w.Error("request has no from: %v", req)
return
}
p, ok := w.players[req.From]
if !ok {
w.Error("received non login request of type %T from unknown player %q", req.Wants, req.From)
return
}
if p.pending == nil {
p.pending = &req
} else {
p.outbox <- wire.ErrorResponse(req.Seq, "you already have a request for this frame")
}
}
func (w *world) register(c connect) { func (w *world) register(c connect) {
w.Info("register: %#v", c.login) w.Info("register: %#v", c.login)
foyer := w.rooms["foyer"] foyer := w.rooms["foyer"]

Loading…
Cancel
Save