autofish can automatic rethrow when timeout
This commit is contained in:
@ -7,7 +7,12 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
var c *bot.Client
|
const timeout = 45
|
||||||
|
|
||||||
|
var (
|
||||||
|
c *bot.Client
|
||||||
|
watch chan time.Time
|
||||||
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
c = bot.NewClient()
|
c = bot.NewClient()
|
||||||
@ -33,6 +38,10 @@ func main() {
|
|||||||
|
|
||||||
func onGameStart() error {
|
func onGameStart() error {
|
||||||
log.Println("Game start")
|
log.Println("Game start")
|
||||||
|
|
||||||
|
watch = make(chan time.Time)
|
||||||
|
go watchDog()
|
||||||
|
|
||||||
return c.UseItem(0)
|
return c.UseItem(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -46,6 +55,7 @@ func onSound(name string, category int, x, y, z float64, volume, pitch float32)
|
|||||||
if err := c.UseItem(0); err != nil { //throw
|
if err := c.UseItem(0); err != nil { //throw
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
watch <- time.Now()
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -59,3 +69,18 @@ func onDisconnect(c chat.Message) error {
|
|||||||
log.Println("Disconnect:", c)
|
log.Println("Disconnect:", c)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func watchDog() {
|
||||||
|
to := time.NewTimer(time.Second * timeout)
|
||||||
|
for {
|
||||||
|
select {
|
||||||
|
case <-watch:
|
||||||
|
case <-to.C:
|
||||||
|
log.Println("rethrow")
|
||||||
|
if err := c.UseItem(0); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
to.Reset(time.Second * timeout)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user