doodle/pkg/filesystem/embedded.go
Noah Petherbridge 640e75ba4d Custom Wallpapers for Levels
* You can now browse for a custom wallpaper image to use with your
  levels. A platform-native file picker dialog is used (no WASM support)
* In the New/Edit Level Properties dialog, the Wallpaper drop-down
  includes an option to browse for a custom map.
* When editing an existing level: the wallpaper takes effect immediately
  in your level once the file is picked. For NEW levels, the wallpaper
  will appear once the "Continue" button is pressed.
* All common image types supported: png, jpeg, gif.
* The wallpaper is embedded in the level using the filepath
  "assets/wallpapers/custom.b64img" as a Base64-encoded blob of the
  image data.
* The `doodad show` command will list the names and sizes of files
  embedded in levels. `doodad show --attachment <name>` will get an
  attachment and print it to the console window.
* To extract a wallpaper image from a level:
  `doodad show -a assets/wallpapers/custom.b64img | base64 -d > out.png`
2021-06-06 18:59:04 -07:00

21 lines
566 B
Go

package filesystem
// Embeddable file formats such as Levels or Doodads.
type Embeddable interface {
GetFile(string) ([]byte, error)
}
/*
FindFileEmbedded searches for a file in a Level or Doodad's embedded filesystem,
before searching other places (as FindFile does) -- system paths and user paths.
*/
func FindFileEmbedded(filename string, em Embeddable) (string, error) {
// Check in the embedded data.
if _, err := em.GetFile(filename); err == nil {
return filename, nil
}
// Not found in embedded, try the usual suspects.
return FindFile(filename)
}