diff --git a/main.go b/main.go index 31498bc..8e30831 100644 --- a/main.go +++ b/main.go @@ -148,54 +148,39 @@ func (m *neko) catchCursor(x, y int) { m.state = 0 m.min = 8 m.max = 16 - tr := 0.0 + // get mouse direction r := math.Atan2(float64(y), float64(x)) - if r <= 0 { - tr = 360 - } - - a := (r / math.Pi * 180) + tr + a := math.Mod((r/math.Pi*180)+360, 360) // Normazing angle to [0, 360) switch { case a <= 292.5 && a > 247.5: // up m.y -= cfg.Speed + m.sprite = "up" case a <= 337.5 && a > 292.5: // up right m.x += cfg.Speed m.y -= cfg.Speed + m.sprite = "upright" case a <= 22.5 || a > 337.5: // right m.x += cfg.Speed + m.sprite = "right" case a <= 67.5 && a > 22.5: // down right m.x += cfg.Speed m.y += cfg.Speed + m.sprite = "downright" case a <= 112.5 && a > 67.5: // down m.y += cfg.Speed + m.sprite = "down" case a <= 157.5 && a > 112.5: // down left m.x -= cfg.Speed m.y += cfg.Speed + m.sprite = "downleft" case a <= 202.5 && a > 157.5: // left m.x -= cfg.Speed + m.sprite = "left" case a <= 247.5 && a > 202.5: // up left m.x -= cfg.Speed m.y -= cfg.Speed - } - - switch { - case a < 292 && a > 247: - m.sprite = "up" - case a < 337 && a > 292: - m.sprite = "upright" - case a < 22 || a > 337: - m.sprite = "right" - case a < 67 && a > 22: - m.sprite = "downright" - case a < 112 && a > 67: - m.sprite = "down" - case a < 157 && a > 112: - m.sprite = "downleft" - case a < 202 && a > 157: - m.sprite = "left" - case a < 247 && a > 202: m.sprite = "upleft" } }