i think i'm making it worse now
parent
5ad36dbe69
commit
cd96c66e6b
@ -0,0 +1,8 @@
|
||||
package math
|
||||
|
||||
func Abs(n int) int {
|
||||
if n >= 0 {
|
||||
return n
|
||||
}
|
||||
return -n
|
||||
}
|
@ -0,0 +1,35 @@
|
||||
package math
|
||||
|
||||
import "encoding/json"
|
||||
|
||||
type Bounds struct {
|
||||
Min Vec `json:"min"`
|
||||
Max Vec `json:"max"`
|
||||
}
|
||||
|
||||
func CreateBounds(width, height int) Bounds {
|
||||
return Bounds{
|
||||
Min: Vec{0, 0},
|
||||
Max: Vec{width - 1, height - 1},
|
||||
}
|
||||
}
|
||||
|
||||
func (b Bounds) Width() int { return Abs(b.Max.X - b.Min.X) }
|
||||
func (b Bounds) Height() int { return Abs(b.Max.Y - b.Min.Y) }
|
||||
func (b Bounds) Area() int { return b.Width() * b.Height() }
|
||||
|
||||
func (b Bounds) Contains(v Vec) bool {
|
||||
return v.X >= b.Min.X && v.X <= b.Max.X && v.Y >= b.Min.Y && v.Y <= b.Max.Y
|
||||
}
|
||||
|
||||
func (b Bounds) MarshalJSON() ([]byte, error) { return json.Marshal([2]Vec{b.Min, b.Max}) }
|
||||
|
||||
func (b *Bounds) UnmarshalJSON(buf []byte) error {
|
||||
var raw [2]Vec
|
||||
if err := json.Unmarshal(buf, &raw); err != nil {
|
||||
return err
|
||||
}
|
||||
b.Min = raw[0]
|
||||
b.Max = raw[1]
|
||||
return nil
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
package wire
|
||||
|
||||
type Player struct {
|
||||
Name string `json:"name"`
|
||||
Room string `json:"room"`
|
||||
Avatar int `json:"avatar"`
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
package wire
|
||||
|
||||
import (
|
||||
"github.com/jordanorelli/astro-domu/internal/math"
|
||||
)
|
||||
|
||||
// Room represents a 2-dimensional coordinate space.
|
||||
type Room struct {
|
||||
Name string `json:"name"`
|
||||
Bounds math.Bounds `json:"bounds"`
|
||||
Entities map[int]Entity `json:"entities"`
|
||||
}
|
||||
|
||||
func (r Room) Width() int { return r.Bounds.Width() }
|
||||
func (r Room) Height() int { return r.Bounds.Height() }
|
Loading…
Reference in New Issue