Noah Petherbridge
f8a83cbad9
* Move all collision code into the pkg/collision package. * pkg/doodads/collision.go -> pkg/collision/collide_level.go * pkg/doodads/collide_actors.go for new Actor collide support * Add initial collision detection code between actors in Play Mode.
59 lines
944 B
Go
59 lines
944 B
Go
package collision
|
|
|
|
import "git.kirsle.net/apps/doodle/lib/render"
|
|
|
|
// CollisionBox holds all of the coordinate pairs to draw the collision box
|
|
// around a doodad.
|
|
type CollisionBox struct {
|
|
Top []render.Point
|
|
Bottom []render.Point
|
|
Left []render.Point
|
|
Right []render.Point
|
|
}
|
|
|
|
// GetCollisionBox returns a CollisionBox with the four coordinates.
|
|
func GetCollisionBox(box render.Rect) CollisionBox {
|
|
return CollisionBox{
|
|
Top: []render.Point{
|
|
{
|
|
X: box.X,
|
|
Y: box.Y,
|
|
},
|
|
{
|
|
X: box.X + box.W,
|
|
Y: box.Y,
|
|
},
|
|
},
|
|
Bottom: []render.Point{
|
|
{
|
|
X: box.X,
|
|
Y: box.Y + box.H,
|
|
},
|
|
{
|
|
X: box.X + box.W,
|
|
Y: box.Y + box.H,
|
|
},
|
|
},
|
|
Left: []render.Point{
|
|
{
|
|
X: box.X,
|
|
Y: box.Y + box.H - 1,
|
|
},
|
|
{
|
|
X: box.X,
|
|
Y: box.Y + 1,
|
|
},
|
|
},
|
|
Right: []render.Point{
|
|
{
|
|
X: box.X + box.W,
|
|
Y: box.Y + box.H - 1,
|
|
},
|
|
{
|
|
X: box.X + box.W,
|
|
Y: box.Y + 1,
|
|
},
|
|
},
|
|
}
|
|
}
|