Improved angle adjustment for the mouse, utilizing only a single switch case.
This commit is contained in:
33
main.go
33
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"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user