laneya2

cave exploration game
git clone https://git.ce9e.org/laneya2.git

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