Refactor gravity parsing

This commit is contained in:
DarthSim
2024-11-21 21:27:33 +03:00
parent 700617403f
commit f7433303e6

View File

@@ -220,19 +220,27 @@ func isGravityOffcetValid(gravity GravityType, offset float64) bool {
func parseGravity(g *GravityOptions, args []string, allowedTypes []GravityType) error { func parseGravity(g *GravityOptions, args []string, allowedTypes []GravityType) error {
nArgs := len(args) nArgs := len(args)
if nArgs > 3 {
return fmt.Errorf("Invalid gravity arguments: %v", args)
}
if t, ok := gravityTypes[args[0]]; ok && slices.Contains(allowedTypes, t) { if t, ok := gravityTypes[args[0]]; ok && slices.Contains(allowedTypes, t) {
g.Type = t g.Type = t
} else { } else {
return fmt.Errorf("Invalid gravity: %s", args[0]) return fmt.Errorf("Invalid gravity: %s", args[0])
} }
if g.Type == GravitySmart && nArgs > 1 { switch g.Type {
case GravitySmart:
if nArgs > 1 {
return fmt.Errorf("Invalid gravity arguments: %v", args) return fmt.Errorf("Invalid gravity arguments: %v", args)
} else if g.Type == GravityFocusPoint && nArgs != 3 { }
g.X, g.Y = 0.0, 0.0
case GravityFocusPoint:
if nArgs != 3 {
return fmt.Errorf("Invalid gravity arguments: %v", args)
}
fallthrough
default:
if nArgs > 3 {
return fmt.Errorf("Invalid gravity arguments: %v", args) return fmt.Errorf("Invalid gravity arguments: %v", args)
} }
@@ -251,6 +259,7 @@ func parseGravity(g *GravityOptions, args []string, allowedTypes []GravityType)
return fmt.Errorf("Invalid gravity Y: %s", args[2]) return fmt.Errorf("Invalid gravity Y: %s", args[2])
} }
} }
}
return nil return nil
} }