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