4#include "tables/itable_loader.h"
6#include "sound/isound_manager.h"
7#include "render/ivideo_player.h"
9#include "texture_cache.h"
10#include "video_player_cache.h"
11#include "title_renderer.h"
22 AssetManager(SDL_Renderer* playfield, SDL_Renderer* backglass, SDL_Renderer* dmd, SDL_Renderer* topper, TTF_Font* f,
ISoundManager* soundManager);
27 if (renderer == playfieldRenderer)
return playfieldWheelTexture;
28 if (renderer == backglassRenderer)
return backglassWheelTexture;
29 if (renderer == dmdRenderer)
return dmdWheelTexture;
30 if (renderer == topperRenderer)
return topperWheelTexture;
37 if (renderer == playfieldRenderer)
return playfieldTitleTexture;
38 if (renderer == backglassRenderer)
return backglassTitleTexture;
39 if (renderer == dmdRenderer)
return dmdTitleTexture;
40 if (renderer == topperRenderer)
return topperTitleTexture;
48 SDL_Rect
getTitleRect()
override {
return titleRenderer_->getTitleRect(); }
49 void setTitlePosition(
int x,
int y)
override { titleRenderer_->setTitlePosition(x, y); }
50 void setFont(TTF_Font* font)
override { titleRenderer_->setFont(font); }
51 void reloadTitleTexture(
const std::string& title, SDL_Color color, SDL_Rect& titleRect)
override;
54 void loadTableAssets(
size_t index,
const std::vector<TableData>& tables)
override;
58 void playTableMusic(
size_t index,
const std::vector<TableData>& tables)
override;
60 void clearVideoCache();
61 void clearTextureCache();
66 SDL_Renderer* getPlayfieldRenderer() {
return playfieldRenderer; }
67 SDL_Renderer* getBackglassRenderer() {
return backglassRenderer; }
68 SDL_Renderer* getDMDRenderer() {
return dmdRenderer; }
69 SDL_Renderer* getTopperRenderer() {
return topperRenderer; }
70 void setPlayfieldRenderer(SDL_Renderer* renderer) { playfieldRenderer = renderer; }
71 void setBackglassRenderer(SDL_Renderer* renderer) { backglassRenderer = renderer; }
72 void setDMDRenderer(SDL_Renderer* renderer) { dmdRenderer = renderer; }
73 void setTopperRenderer(SDL_Renderer* renderer) { topperRenderer = renderer; }
76 struct WindowAssetInfo {
77 SDL_Renderer* renderer;
78 SDL_Texture*& texture;
79 SDL_Texture*& wheelTexture;
80 SDL_Texture*& titleTexture;
81 std::unique_ptr<IVideoPlayer>& videoPlayer;
82 std::string& imagePath;
83 std::string& wheelImagePath;
84 std::string& videoPath;
89 const std::string& tableImage;
90 const std::string& tableVideo;
93 SDL_Texture* playfieldTexture;
94 SDL_Texture* playfieldWheelTexture;
95 SDL_Texture* playfieldTitleTexture;
96 SDL_Texture* backglassTexture;
97 SDL_Texture* backglassWheelTexture;
98 SDL_Texture* backglassTitleTexture;
99 SDL_Texture* dmdTexture;
100 SDL_Texture* dmdWheelTexture;
101 SDL_Texture* dmdTitleTexture;
102 SDL_Texture* topperTexture;
103 SDL_Texture* topperWheelTexture;
104 SDL_Texture* topperTitleTexture;
105 std::unique_ptr<IVideoPlayer> playfieldVideoPlayer;
106 std::unique_ptr<IVideoPlayer> backglassVideoPlayer;
107 std::unique_ptr<IVideoPlayer> dmdVideoPlayer;
108 std::unique_ptr<IVideoPlayer> topperVideoPlayer;
109 SDL_Renderer* playfieldRenderer;
110 SDL_Renderer* backglassRenderer;
111 SDL_Renderer* dmdRenderer;
112 SDL_Renderer* topperRenderer;
114 std::string currentPlayfieldVideoPath_;
115 std::string currentBackglassVideoPath_;
116 std::string currentDmdVideoPath_;
117 std::string currentTopperVideoPath_;
119 std::unique_ptr<ITableLoader> tableLoader_;
120 std::string currentPlayfieldImagePath_;
121 std::string currentPlayfieldWheelImagePath_;
122 std::string currentBackglassImagePath_;
123 std::string currentBackglassWheelImagePath_;
124 std::string currentDmdImagePath_;
125 std::string currentDmdWheelImagePath_;
126 std::string currentTopperImagePath_;
127 std::string currentTopperWheelImagePath_;
128 int currentPlayfieldMediaWidth_ = 0;
129 int currentPlayfieldMediaHeight_ = 0;
130 int currentBackglassMediaWidth_ = 0;
131 int currentBackglassMediaHeight_ = 0;
132 int currentDmdMediaWidth_ = 0;
133 int currentDmdMediaHeight_ = 0;
134 int currentTopperMediaWidth_ = 0;
135 int currentTopperMediaHeight_ = 0;
137 std::unique_ptr<TextureCache> textureCache_;
138 std::unique_ptr<VideoPlayerCache> videoPlayerCache_;
139 std::unique_ptr<TitleRenderer> titleRenderer_;
Definition asset_manager.h:20
void setTitlePosition(int x, int y) override
Sets the title's position on the display.
Definition asset_manager.h:49
SDL_Texture * getTopperTexture() override
Retrieves the texture used for the topper display.
Definition asset_manager.h:35
SDL_Texture * getBackglassTexture() override
Retrieves the texture used for the backglass.
Definition asset_manager.h:33
void setSoundManager(ISoundManager *soundManager) override
Sets the sound manager for audio playback.
Definition asset_manager.cpp:50
IVideoPlayer * getDmdVideoPlayer() override
Retrieves the video player associated with the dot matrix display (DMD).
Definition asset_manager.h:45
void reloadTitleTexture(const std::string &title, SDL_Color color, SDL_Rect &titleRect) override
Reloads the title texture using a new title string and color, updating the title rectangle accordingl...
Definition asset_manager.cpp:77
SDL_Texture * getWheelTexture(SDL_Renderer *renderer) override
Retrieves the texture used for the wheel for a specific renderer.
Definition asset_manager.h:26
void setFont(TTF_Font *font) override
Sets the current font for text rendering.
Definition asset_manager.h:50
void playTableMusic(size_t index, const std::vector< TableData > &tables) override
Plays table-specific music.
Definition asset_manager.cpp:55
IConfigService * getSettingsManager() override
Retrieves the configuration service that manages application settings.
Definition asset_manager.h:47
void processVlcFallbackEvent(void *data)
Process an application-level VLC fallback event posted by a monitor thread.
Definition asset_manager.cpp:485
void cleanupVideoPlayers() override
Cleans up video players, releasing allocated resources appropriately.
Definition asset_manager.cpp:451
IVideoPlayer * getTopperVideoPlayer() override
Retrieves the video player associated with the topper display.
Definition asset_manager.h:46
IVideoPlayer * getBackglassVideoPlayer() override
Retrieves the video player associated with the backglass.
Definition asset_manager.h:44
void reloadAssets(IWindowManager *windowManager, TTF_Font *font, const std::vector< TableData > &tables, size_t index) override
Reloads all relevant assets with updated settings, fonts, and table data.
Definition asset_manager.cpp:86
SDL_Rect getTitleRect() override
Retrieves the rectangle that specifies the title's position and dimensions (x, y, width,...
Definition asset_manager.h:48
void setSettingsManager(IConfigService *cm) override
Sets the configuration service (settings manager) responsible for application settings.
Definition asset_manager.cpp:69
SDL_Texture * getDmdTexture() override
Retrieves the texture used for the dot matrix display (DMD).
Definition asset_manager.h:34
void loadTableAssets(size_t index, const std::vector< TableData > &tables) override
Loads assets for a specific table based on its index and associated table data.
Definition asset_manager.cpp:206
IVideoPlayer * getPlayfieldVideoPlayer() override
Retrieves the video player associated with the playfield.
Definition asset_manager.h:43
void applyVideoAudioSettings() override
Applies audio settings to all active video players.
Definition asset_manager.cpp:169
SDL_Texture * getTitleTexture(SDL_Renderer *renderer) override
Retrieves the texture used for the title for a specific renderer.
Definition asset_manager.h:36
void clearOldVideoPlayers() override
Clears any existing video players to free resources before initializing new ones.
Definition asset_manager.cpp:446
SDL_Texture * getPlayfieldTexture() override
Retrieves the texture used for the playfield.
Definition asset_manager.h:25
The IAssetManager interface provides methods to manage and access various assets used in the applicat...
Definition iasset_manager.h:36
Interface for configuration services (forward declaration).
Definition iconfig_service.h:30
Interface for managing sound operations.
Definition isound_manager.h:14
Interface for a video player.
Definition ivideo_player.h:19
Interface for managing SDL windows and renderers.
Definition iwindow_manager.h:27
Defines the IAssetManager interface for managing assets in ASAPCabinetFE.
Defines the TableData struct for storing VPX table metadata and media paths.