@@ -17,6 +17,16 @@ import (
1717
1818var kidModeEnabled atomic.Bool
1919
20+ type AdditionalDownloads struct {
21+ Marquee artutil.ArtKind `json:"marquee,omitempty"`
22+ Video bool `json:"video,omitempty"`
23+ Thumbnail artutil.ArtKind `json:"thumbnail,omitempty"`
24+ Bezel bool `json:"bezel,omitempty"`
25+ Manual bool `json:"manual,omitempty"`
26+ BoxBack bool `json:"box_back,omitempty"`
27+ Fanart bool `json:"fanart,omitempty"`
28+ }
29+
2030// DurationSeconds is a time.Duration that marshals to/from JSON as whole seconds.
2131// Existing configs with nanosecond values are handled by detecting large values on unmarshal.
2232type DurationSeconds time.Duration
@@ -54,8 +64,8 @@ type Config struct {
5464 ShowSmartCollections bool `json:"show_smart_collections"`
5565 ShowVirtualCollections bool `json:"show_virtual_collections"`
5666 DownloadedGames DownloadedGamesMode `json:"downloaded_games,omitempty"`
57- ApiTimeout DurationSeconds `json:"api_timeout"`
58- DownloadTimeout DurationSeconds `json:"download_timeout"`
67+ ApiTimeout DurationSeconds `json:"api_timeout"`
68+ DownloadTimeout DurationSeconds `json:"download_timeout"`
5969 LogLevel LogLevel `json:"log_level,omitempty"`
6070 Language string `json:"language,omitempty"`
6171 CollectionView CollectionView `json:"collection_view,omitempty"`
@@ -64,6 +74,7 @@ type Config struct {
6474 ArtKind artutil.ArtKind `json:"art_kind,omitempty"`
6575 DownloadArtScreenshotPreview bool `json:"download_art_screenshot_preview,omitempty"`
6676 DownloadSplashArt artutil.ArtKind `json:"download_splash_art,omitempty"`
77+ AdditionalDownloads AdditionalDownloads `json:"additional_downloads,omitempty"`
6778
6879 SwapFaceButtons bool `json:"swap_face_buttons,omitempty"`
6980 PlatformOrder []string `json:"platform_order,omitempty"`
@@ -142,6 +153,14 @@ func LoadConfig() (*Config, error) {
142153 config .ArtKind = artutil .ArtKindDefault
143154 }
144155
156+ if config .AdditionalDownloads .Thumbnail == "" {
157+ config .AdditionalDownloads .Thumbnail = artutil .ArtKindNone
158+ }
159+
160+ if config .AdditionalDownloads .Marquee == "" {
161+ config .AdditionalDownloads .Marquee = artutil .ArtKindNone
162+ }
163+
145164 // Load slot preferences from dedicated file
146165 config .SlotPreferences = LoadSlotPreferences ()
147166
@@ -173,6 +192,14 @@ func SaveConfig(config *Config) error {
173192 config .ArtKind = artutil .ArtKindDefault
174193 }
175194
195+ if config .AdditionalDownloads .Thumbnail == "" {
196+ config .AdditionalDownloads .Thumbnail = artutil .ArtKindNone
197+ }
198+
199+ if config .AdditionalDownloads .Marquee == "" {
200+ config .AdditionalDownloads .Marquee = artutil .ArtKindNone
201+ }
202+
176203 gaba .SetRawLogLevel (string (config .LogLevel ))
177204
178205 if err := i18n .SetWithCode (config .Language ); err != nil {
@@ -337,6 +364,41 @@ func (c Config) GetArtSplashDirectory(platform romm.Platform) string {
337364 return cfw .GetArtSplashDirectory (romDir , platform .FSSlug , platform .Name )
338365}
339366
367+ func (c Config ) GetArtMarqueeDirectory (platform romm.Platform ) string {
368+ romDir := c .GetPlatformRomDirectory (platform )
369+ return cfw .GetArtMarqueeDirectory (romDir , platform .FSSlug , platform .Name )
370+ }
371+
372+ func (c Config ) GetArtVideoDirectory (platform romm.Platform ) string {
373+ romDir := c .GetPlatformRomDirectory (platform )
374+ return cfw .GetArtVideoDirectory (romDir , platform .FSSlug , platform .Name )
375+ }
376+
377+ func (c Config ) GetArtThumbnailDirectory (platform romm.Platform ) string {
378+ romDir := c .GetPlatformRomDirectory (platform )
379+ return cfw .GetArtThumbnailDirectory (romDir , platform .FSSlug , platform .Name )
380+ }
381+
382+ func (c Config ) GetArtBezelDirectory (platform romm.Platform ) string {
383+ romDir := c .GetPlatformRomDirectory (platform )
384+ return cfw .GetArtBezelDirectory (romDir , platform .FSSlug , platform .Name )
385+ }
386+
387+ func (c Config ) GetManualDirectory (platform romm.Platform ) string {
388+ romDir := c .GetPlatformRomDirectory (platform )
389+ return cfw .GetManualDirectory (romDir , platform .FSSlug , platform .Name )
390+ }
391+
392+ func (c Config ) GetFanartDirectory (platform romm.Platform ) string {
393+ romDir := c .GetPlatformRomDirectory (platform )
394+ return cfw .GetFanartDirectory (romDir , platform .FSSlug , platform .Name )
395+ }
396+
397+ func (c Config ) GetBoxbackDirectory (platform romm.Platform ) string {
398+ romDir := c .GetPlatformRomDirectory (platform )
399+ return cfw .GetBoxbackDirectory (romDir , platform .FSSlug , platform .Name )
400+ }
401+
340402func (c Config ) ShowCollections (host romm.Host ) bool {
341403 if ! c .ShowRegularCollections && ! c .ShowSmartCollections && ! c .ShowVirtualCollections {
342404 return false
0 commit comments