Keep track of internal player lists

master
HimbeerserverDE 2021-09-01 12:39:36 +02:00
parent fa34fb2504
commit 02622f7a1b
No known key found for this signature in database
GPG Key ID: 1A651504791E6A8B
2 changed files with 14 additions and 0 deletions

View File

@ -16,6 +16,7 @@ func connect(conn net.Conn, name string, cc *clientConn) *serverConn {
particleSpawners: make(map[mt.ParticleSpawnerID]struct{}),
sounds: make(map[mt.SoundID]struct{}),
huds: make(map[mt.HUDID]struct{}),
playerList: make(map[string]struct{}),
}
sc.log("-->", "connect")
cc.srv = sc

View File

@ -35,6 +35,8 @@ type serverConn struct {
sounds map[mt.SoundID]struct{}
huds map[mt.HUDID]struct{}
playerList map[string]struct{}
}
func (sc *serverConn) client() *clientConn { return sc.clt }
@ -374,6 +376,17 @@ func handleSrv(sc *serverConn) {
} else if cmd.Type == mt.InitPlayers {
cmd.Type = mt.AddPlayers
}
if cmd.Type <= mt.AddPlayers {
for _, player := range cmd.Players {
sc.playerList[player] = struct{}{}
}
} else if cmd.Type == mt.RemovePlayers {
for _, player := range cmd.Players {
delete(sc.playerList, player)
}
}
sc.client().SendCmd(cmd)
case *mt.ToCltSpawnParticle:
prependTexture(sc.name, &cmd.Texture)