Files
ordoor/internal/conv/object.go

60 lines
1.1 KiB
Go
Raw Normal View History

package conv
import (
2019-12-29 15:38:49 +00:00
"github.com/hajimehoshi/ebiten"
2019-12-31 01:55:58 +00:00
"code.ur.gs/lupine/ordoor/internal/data"
)
// Important conversions:
//
// * Width & height now stored using int
// * Colour data is now 32-bit rather than using a palette
type Sprite struct {
XOffset int
YOffset int
Width int
Height int
2019-12-29 15:38:49 +00:00
Image *ebiten.Image
}
type Object struct {
Name string
2018-10-13 01:37:44 +01:00
Sprites []*Sprite
}
func MapByName(objects []*Object) map[string]*Object {
out := make(map[string]*Object, len(objects))
for _, obj := range objects {
out[obj.Name] = obj
}
return out
}
2019-12-29 15:38:49 +00:00
func ConvertObject(rawObj *data.Object, name string) (*Object, error) {
out := &Object{
Name: name,
2018-10-13 01:37:44 +01:00
Sprites: make([]*Sprite, len(rawObj.Sprites)),
}
for i, rawSpr := range rawObj.Sprites {
ebitenImage, err := ebiten.NewImageFromImage(rawSpr.ToImage(), ebiten.FilterDefault)
2019-12-29 15:38:49 +00:00
if err != nil {
return nil, err
}
2019-12-29 15:38:49 +00:00
out.Sprites[i] = &Sprite{
XOffset: int(rawSpr.XOffset),
YOffset: int(rawSpr.YOffset),
Width: int(rawSpr.Width),
Height: int(rawSpr.Height),
Image: ebitenImage,
}
}
2019-12-29 15:38:49 +00:00
return out, nil
}