- commit
- 800943e65b9575aedb044f5269343ba4401e2613
- parent
- 30c1c15b0254cea0b530bed3e9c04f950d2adc42
- Author
- Tobias Bengfort <tobias.bengfort@posteo.de>
- Date
- 2024-09-25 03:40
limit player speed
Diffstat
| M | game.go | 1 | + |
| M | server.go | 18 | +++++++++++++++++- |
2 files changed, 18 insertions, 1 deletions
diff --git a/game.go b/game.go
@@ -16,6 +16,7 @@ type Player struct {
16 16 alive bool
17 17 Id int
18 18 Pos Point
-1 19 Speed float32
19 20 }
20 21
21 22 type PlayerMessage struct {
diff --git a/server.go b/server.go
@@ -18,7 +18,13 @@ import ( 18 18 var upgrader = websocket.Upgrader{} 19 19 20 20 func (player *Player) readPump() { -1 21 var timer *time.Timer = nil -1 22 var lastTime time.Time = time.UnixMicro(0) -1 23 21 24 defer func() { -1 25 if timer != nil { -1 26 timer.Stop() -1 27 } 22 28 player.Game.unregister <- player 23 29 player.conn.Close() 24 30 }() @@ -32,7 +38,16 @@ func (player *Player) readPump() { 32 38 } 33 39 return 34 40 }35 -1 player.Game.Msg <- PlayerMessage{player, msg}-1 41 -1 42 if timer != nil { -1 43 timer.Stop() -1 44 } -1 45 timeout := time.Duration(float32(time.Second) / player.Speed) -1 46 timer = time.AfterFunc(time.Until(lastTime.Add(timeout)), func() { -1 47 lastTime = time.Now() -1 48 player.Game.Msg <- PlayerMessage{player, msg} -1 49 timer = nil -1 50 }) 36 51 } 37 52 } 38 53 @@ -85,6 +100,7 @@ func serveWs(w http.ResponseWriter, r *http.Request) { 85 100 alive: true, 86 101 Id: game.createId(), 87 102 Pos: Point{0, 0}, -1 103 Speed: 20, 88 104 } 89 105 conn.SetPongHandler(func(string) error { 90 106 player.alive = true