Преглед на файлове

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 преди 10 месеца
родител
ревизия
67b165ee67
променени са 2 файла, в които са добавени 44 реда и са изтрити 8 реда
  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