package conv import ( "github.com/hajimehoshi/ebiten" "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 { Width int Height int Image *ebiten.Image } type Object struct { Name string 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 } func ConvertObject(rawObj *data.Object, name string) (*Object, error) { out := &Object{ Name: name, Sprites: make([]*Sprite, len(rawObj.Sprites)), } for i, rawSpr := range rawObj.Sprites { w := int(rawSpr.Width) h := int(rawSpr.Height) ebitenImage, err := ebiten.NewImageFromImage(rawSpr.ToImage(), ebiten.FilterDefault) if err != nil { return nil, err } out.Sprites[i] = &Sprite{Width: w, Height: h, Image: ebitenImage} } return out, nil }