diff --git a/src/device/input/parse/v01/server.go b/src/device/input/parse/v01/server.go index c7c0730..dd3e74a 100644 --- a/src/device/input/parse/v01/server.go +++ b/src/device/input/parse/v01/server.go @@ -199,19 +199,30 @@ func (v01 *V01) serveGM(w http.ResponseWriter, r *http.Request) { } func (v01 *V01) serveGMStatus(w io.Writer) { - users := map[string]struct { + type user struct { Lag time.Duration `yaml:"lag,omitempty"` Player int `yaml:"player,omitempty"` IdleFor time.Duration `yaml:"idle_for,omitempty"` - }{} + } + + users := map[string]string{} for k, v := range v01.cfg.Users { - v2 := users[k] - v2.Lag = time.Duration(v.Meta.LastLag) * time.Millisecond - v2.Player = v.State.Player - if v.Meta.LastTSMS > 0 { - v2.IdleFor = time.Since(time.Unix(0, v.Meta.LastTSMS*int64(time.Millisecond))) + player := "" + if v.State.Player > 0 { + player = fmt.Sprintf("Player %v", v.State.Player) } - users[k] = v2 + + lag := "" + if v.Meta.LastLag > 0 && v.Meta.LastLag < 100000 { + lag = (time.Duration(v.Meta.LastLag) * time.Millisecond).String() + } + + last := "" + if v.Meta.LastTSMS > 0 { + last = fmt.Sprintf("no activity for %s", time.Since(time.Unix(0, v.Meta.LastTSMS*int64(time.Millisecond)))) + } + + users[k] = fmt.Sprintf("%s %s %s", player, lag, last) } yaml.NewEncoder(w).Encode(map[string]interface{}{ "Players": len(v01.cfg.Players),