Browse Source

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 8 months ago
parent
commit
67b165ee67
2 changed files with 44 additions and 8 deletions
  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