Improved angle adjustment for the mouse, utilizing only a single switch case.

This commit is contained in:
crgimenes
2025-06-28 17:44:56 -03:00
parent 9394d24bcc
commit 60e0487fed

33
main.go
View File

@@ -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"
}
}