Fix bugs in KeepAlive
This commit is contained in:
@ -32,7 +32,7 @@ type KeepAlive struct {
|
||||
keepAliveID int64
|
||||
|
||||
//onPlayerExpire func(p *Player)
|
||||
//updatePlayerDelay func(p *Player, delay time.Duration)
|
||||
updatePlayerDelay func(p *Player, delay time.Duration)
|
||||
}
|
||||
|
||||
func NewKeepAlive() (k *KeepAlive) {
|
||||
@ -49,6 +49,14 @@ func NewKeepAlive() (k *KeepAlive) {
|
||||
}
|
||||
}
|
||||
|
||||
func (k *KeepAlive) AddPlayerDelayUpdateHandler(f func(p *Player, delay time.Duration)) *KeepAlive {
|
||||
if k.updatePlayerDelay != nil {
|
||||
panic("add player update handler twice")
|
||||
}
|
||||
k.updatePlayerDelay = f
|
||||
return k
|
||||
}
|
||||
|
||||
// Init implement Component for KeepAlive
|
||||
func (k *KeepAlive) Init(g *Game) {
|
||||
g.AddHandler(&PacketHandler{
|
||||
@ -145,9 +153,11 @@ func (k *KeepAlive) tickPlayer(p *Player) {
|
||||
defer keepAliveSetTimer(k.waitList, k.waitTimer, keepAliveWaitInterval)
|
||||
}
|
||||
// update delay of player
|
||||
//t := k.waitList.Remove(elem).(keepAliveItem).t
|
||||
t := k.waitList.Remove(elem).(keepAliveItem).t
|
||||
now := time.Now()
|
||||
//k.updatePlayerDelay(p, now.Sub(t))
|
||||
if k.updatePlayerDelay != nil {
|
||||
k.updatePlayerDelay(p, now.Sub(t))
|
||||
}
|
||||
// move the player to ping list
|
||||
k.listIndex[p.UUID] = k.pingList.PushBack(
|
||||
keepAliveItem{player: p, t: now},
|
||||
|
Reference in New Issue
Block a user