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.state = 0
|
||||||
m.min = 8
|
m.min = 8
|
||||||
m.max = 16
|
m.max = 16
|
||||||
tr := 0.0
|
|
||||||
// get mouse direction
|
// get mouse direction
|
||||||
r := math.Atan2(float64(y), float64(x))
|
r := math.Atan2(float64(y), float64(x))
|
||||||
if r <= 0 {
|
a := math.Mod((r/math.Pi*180)+360, 360) // Normazing angle to [0, 360)
|
||||||
tr = 360
|
|
||||||
}
|
|
||||||
|
|
||||||
a := (r / math.Pi * 180) + tr
|
|
||||||
|
|
||||||
switch {
|
switch {
|
||||||
case a <= 292.5 && a > 247.5: // up
|
case a <= 292.5 && a > 247.5: // up
|
||||||
m.y -= cfg.Speed
|
m.y -= cfg.Speed
|
||||||
|
m.sprite = "up"
|
||||||
case a <= 337.5 && a > 292.5: // up right
|
case a <= 337.5 && a > 292.5: // up right
|
||||||
m.x += cfg.Speed
|
m.x += cfg.Speed
|
||||||
m.y -= cfg.Speed
|
m.y -= cfg.Speed
|
||||||
|
m.sprite = "upright"
|
||||||
case a <= 22.5 || a > 337.5: // right
|
case a <= 22.5 || a > 337.5: // right
|
||||||
m.x += cfg.Speed
|
m.x += cfg.Speed
|
||||||
|
m.sprite = "right"
|
||||||
case a <= 67.5 && a > 22.5: // down right
|
case a <= 67.5 && a > 22.5: // down right
|
||||||
m.x += cfg.Speed
|
m.x += cfg.Speed
|
||||||
m.y += cfg.Speed
|
m.y += cfg.Speed
|
||||||
|
m.sprite = "downright"
|
||||||
case a <= 112.5 && a > 67.5: // down
|
case a <= 112.5 && a > 67.5: // down
|
||||||
m.y += cfg.Speed
|
m.y += cfg.Speed
|
||||||
|
m.sprite = "down"
|
||||||
case a <= 157.5 && a > 112.5: // down left
|
case a <= 157.5 && a > 112.5: // down left
|
||||||
m.x -= cfg.Speed
|
m.x -= cfg.Speed
|
||||||
m.y += cfg.Speed
|
m.y += cfg.Speed
|
||||||
|
m.sprite = "downleft"
|
||||||
case a <= 202.5 && a > 157.5: // left
|
case a <= 202.5 && a > 157.5: // left
|
||||||
m.x -= cfg.Speed
|
m.x -= cfg.Speed
|
||||||
|
m.sprite = "left"
|
||||||
case a <= 247.5 && a > 202.5: // up left
|
case a <= 247.5 && a > 202.5: // up left
|
||||||
m.x -= cfg.Speed
|
m.x -= cfg.Speed
|
||||||
m.y -= 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"
|
m.sprite = "upleft"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user