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