Explorar el Código

Added Vec2.Within and maybe found a bug

I'm not sure why, but our main.go doesn't save the change to our
User.Loc ... Translate works, but not Assign? Huh?
Apollo hace 10 meses
padre
commit
67b165ee67
Se han modificado 2 ficheros con 44 adiciones y 8 borrados
  1. 17 2
      main.go
  2. 27 6
      vec2.go

+ 17 - 2
main.go

@@ -1,12 +1,15 @@
 package main
 
-import "fmt"
+import (
+	"fmt"
+	"path"
+)
 
 func main() {
 	// The UserDB would be run on the server
 	// But since most/100% of this is examples, we'll setup one up
 	db := &UserDB{}
-	err := db.Open("test_users.db3")
+	err := db.Open(path.Join("test_data", "test_users.db3"))
 	if err != nil {
 		fmt.Println("Err:", err)
 		return
@@ -38,4 +41,16 @@ func main() {
 	} else {
 		fmt.Printf("Yay, %s has logged in\r\n", dummy.Name)
 	}
+	fmt.Printf("%s is at %s\r\n", dummy.Name, dummy.Loc.String())
+	r := dummy.Loc.Assign(0, 0)
+	if r == nil {
+		fmt.Println("Assign returns nil?")
+	} else {
+		fmt.Printf("Now %s\r\n", r.String())
+	}
+	err = db.SaveUser(dummy)
+	if err != nil {
+		fmt.Println("Err:", err)
+		return
+	}
 }

+ 27 - 6
vec2.go

@@ -164,9 +164,20 @@ func SortVec2(v1, v2 *Vec2) (*Vec2, *Vec2) {
 	return v1, v2
 }
 
+func (v *Vec2) Within(v1, v2 *Vec2) bool {
+	if v == nil || v1 == nil || v2 == nil {
+		return false
+	}
+	if v1.EqualTo(v2) && !v.EqualTo(v1) {
+		return false
+	}
+	v1, v2 = SortVec2(v1, v2)
+	return v.GreaterThan(v1) && v.LessThan(v2)
+}
+
 func (v *Vec2) Distance(axis ...int64) int64 {
 	if v == nil {
-		return 0
+		return -1
 	}
 	if len(axis) == 0 {
 		return v.X + v.Y
@@ -194,11 +205,8 @@ func (v *Vec2) Distance(axis ...int64) int64 {
 }
 
 func (v *Vec2) DistanceTo(o *Vec2) int64 {
-	if v == nil {
-		return 0
-	}
-	if o == nil {
-		return v.Distance()
+	if v == nil || o == nil {
+		return -1
 	}
 	x := v.X - o.X
 	y := v.Y - o.Y
@@ -224,6 +232,19 @@ func (v *Vec2) Abs() *Vec2 {
 	return v
 }
 
+func (v *Vec2) NegAbs() *Vec2 {
+	if v == nil {
+		return nil
+	}
+	if v.X > 0 {
+		v.X = -v.X
+	}
+	if v.Y > 0 {
+		v.Y = -v.Y
+	}
+	return v
+}
+
 func (v *Vec2) Negate() *Vec2 {
 	if v == nil {
 		return nil