SDL2lazy
SlManager.h
Go to the documentation of this file.
1 // part of SDL2lazy
2 // author: Ulrike Hager
3 
8 #ifndef SLMANAGER_H
9 #define SLMANAGER_H
10 
11 #include <memory>
12 #include <string>
13 #include <vector>
14 
15 #include <SDL2/SDL.h>
16 #include <SDL2/SDL_image.h>
17 
18 #include "SlTextureManager.h"
19 #include "SlSpriteManager.h"
20 #include "SlValueParser.h"
21 #include "SlEventHandler.h"
22 
23 class SlTexture;
24 class SlSprite;
25 class SlRenderItem;
26 class SlManipulation;
27 
28 
29 class SlManager
30 {
31  public:
34  SlManager();
37  SlManager(const std::string& name, int width, int height);
38 
39  ~SlManager(void);
40 
43  SlManager(const SlManager&) = delete;
46  SlManager& operator=(const SlManager&) = delete;
47 
51  bool appendToRenderQueue(const std::string& name, unsigned int destination = 0);
55  SlRenderItem* createRenderItem(const std::string& name, unsigned int destination);
59  void deleteRenderItem(const std::string& name);
62  void deleteSprite(const std::string& name);
65  void deleteTexture(const std::string& name);
68  std::shared_ptr<SlSprite> findSprite(const std::string& name);
72  SlTexture* findTexture(const std::string& name);
75  inline void handleEvent(const SDL_Event& event);
78  void insertInRenderQueueAfter(const std::string& toAdd, const std::string& afterThis, unsigned int destToAdd = 0, unsigned int destAfterThis = 0);
81  void insertInRenderQueueBefore(const std::string& toAdd, const std::string& beforeThis, unsigned int destToAdd = 0, unsigned int destBeforeThis = 0);
84  bool moveInRenderQueueBefore(const std::string& toAdd, const std::string& beforeThis, unsigned int destToAdd = 0, unsigned int destBeforeThis = 0);
87  bool moveInRenderQueueAfter(const std::string& toAdd, const std::string& afterThis, unsigned int destToAdd = 0, unsigned int destAfterThis = 0);
92  void manipulateRenderQueue(const std::string& name, unsigned int destination, const std::string& whatToDo, const std::vector<std::string>& parameters );
95  void parseRenderQueueManipulation( std::ifstream& input );
99  bool parseConfigurationFile(const std::string& filename = "SlTextureConfig.ini");
102  void parseIniFile(const std::string& filename = "SlApplication.ini");
106  void render();
109  SDL_Renderer* renderer(){return renderer_;}
112  void run();
115  int screenWidth(){ return screen_width_; }
118  int screenHeight(){ return screen_height_; }
123  inline void setSpriteColor(const std::string& name, uint8_t red, uint8_t green, uint8_t blue, uint8_t alpha = 0xFF, unsigned int destination = 0);
128  inline void setSpriteDestinationOrigin(const std::string& name, int x, int y, unsigned int destination = 0);
132  inline void setSpriteRenderOptions(const std::string& name, uint32_t renderOptions, unsigned int destination = 0);
136  void swapInRenderQueue(const std::string& toAdd, const std::string& toRemove, unsigned int destToAdd = 0, unsigned int destToRemove = 0);
140  void swapInRenderQueueAtPosition(const std::string& toAdd, unsigned int destToAdd, unsigned int position );
143  void swapInRenderQueueLastPosition(const std::string& toAdd, unsigned int destToAdd = 0 );
147  void toggleRender(const std::string& toToggle, unsigned int destination = 0, int onOrOff = -1);
150  inline void toggleRenderOff(const std::string& toToggle, unsigned int destination = 0);
153  inline void toggleRenderOn(const std::string& toToggle, unsigned int destination = 0);
154 
155  protected:
158  SDL_Window* window_ = nullptr;
161  SDL_Renderer* renderer_ = nullptr;
164  void clear();
167  void initialize();
170  void initializeWindow(const std::string& name, int width, int height);
175  bool moveInRenderQueue(const std::string& toMoveName, const std::string& targetName, unsigned int destToMove = 0, unsigned int targetDest = 0, int beforeOrAfter = 0);
176 
177  private:
180  std::vector<SlRenderItem*> renderQueue_;
183  std::unique_ptr<SlTextureManager> tmngr_ = nullptr;
186  std::shared_ptr<SlSpriteManager> smngr_ = nullptr;
189  std::unique_ptr<SlEventHandler> eventHandler_ = nullptr;
202  std::map<std::string, SlManipulation*> renderManip_;
203 
204 };
205 
206 
207 
208 
209 #endif // SLMANAGER_H
void parseRenderQueueManipulation(std::ifstream &input)
Definition: SlManager.cc:477
void handleEvent(const SDL_Event &event)
Definition: SlManager.cc:171
Definition: SlManipulation.h:22
void insertInRenderQueueAfter(const std::string &toAdd, const std::string &afterThis, unsigned int destToAdd=0, unsigned int destAfterThis=0)
Definition: SlManager.cc:260
void deleteSprite(const std::string &name)
Definition: SlManager.cc:137
void swapInRenderQueueLastPosition(const std::string &toAdd, unsigned int destToAdd=0)
Definition: SlManager.cc:618
std::vector< SlRenderItem * > renderQueue_
Definition: SlManager.h:180
void swapInRenderQueueAtPosition(const std::string &toAdd, unsigned int destToAdd, unsigned int position)
Definition: SlManager.cc:600
SlEventHandler class.
Definition: SlRenderItem.h:21
void toggleRender(const std::string &toToggle, unsigned int destination=0, int onOrOff=-1)
Definition: SlManager.cc:627
std::shared_ptr< SlSprite > findSprite(const std::string &name)
Definition: SlManager.cc:155
bool appendToRenderQueue(const std::string &name, unsigned int destination=0)
Definition: SlManager.cc:61
SlValueParser helper object to translate file input into values.
void initializeWindow(const std::string &name, int width, int height)
Definition: SlManager.cc:201
SlValueParser valParser_
Definition: SlManager.h:198
std::unique_ptr< SlEventHandler > eventHandler_
Definition: SlManager.h:189
SDL_Renderer * renderer_
Definition: SlManager.h:161
void render()
Definition: SlManager.cc:521
int screen_width_
Definition: SlManager.h:192
int screenWidth()
Definition: SlManager.h:115
std::unique_ptr< SlTextureManager > tmngr_
Definition: SlManager.h:183
bool moveInRenderQueueAfter(const std::string &toAdd, const std::string &afterThis, unsigned int destToAdd=0, unsigned int destAfterThis=0)
Definition: SlManager.cc:362
Definition: SlValueParser.h:21
void clear()
Definition: SlManager.cc:80
Definition: SlSprite.h:59
void insertInRenderQueueBefore(const std::string &toAdd, const std::string &beforeThis, unsigned int destToAdd=0, unsigned int destBeforeThis=0)
Definition: SlManager.cc:281
SlTexture * findTexture(const std::string &name)
Definition: SlManager.cc:163
std::shared_ptr< SlSpriteManager > smngr_
Definition: SlManager.h:186
void setSpriteColor(const std::string &name, uint8_t red, uint8_t green, uint8_t blue, uint8_t alpha=0xFF, unsigned int destination=0)
Definition: SlManager.cc:553
void swapInRenderQueue(const std::string &toAdd, const std::string &toRemove, unsigned int destToAdd=0, unsigned int destToRemove=0)
Definition: SlManager.cc:578
void deleteRenderItem(const std::string &name)
Definition: SlManager.cc:122
SDL_Window * window_
Definition: SlManager.h:158
void run()
Definition: SlManager.cc:542
void toggleRenderOff(const std::string &toToggle, unsigned int destination=0)
Definition: SlManager.cc:657
void manipulateRenderQueue(const std::string &name, unsigned int destination, const std::string &whatToDo, const std::vector< std::string > &parameters)
Definition: SlManager.cc:303
int screen_height_
Definition: SlManager.h:195
SlRenderItem * createRenderItem(const std::string &name, unsigned int destination)
Definition: SlManager.cc:97
void toggleRenderOn(const std::string &toToggle, unsigned int destination=0)
Definition: SlManager.cc:665
std::map< std::string, SlManipulation * > renderManip_
Definition: SlManager.h:202
void deleteTexture(const std::string &name)
Definition: SlManager.cc:146
void initialize()
Definition: SlManager.cc:179
int screenHeight()
Definition: SlManager.h:118
SlManager & operator=(const SlManager &)=delete
void parseIniFile(const std::string &filename="SlApplication.ini")
Definition: SlManager.cc:431
void setSpriteRenderOptions(const std::string &name, uint32_t renderOptions, unsigned int destination=0)
Definition: SlManager.cc:570
SlSpriteManager class, has a vector of sprites and various methods to manipulate them.
Definition: SlManager.h:29
bool parseConfigurationFile(const std::string &filename="SlTextureConfig.ini")
Definition: SlManager.cc:380
Definition: SlTexture.h:27
SlManager()
Definition: SlManager.cc:29
SlTextureManager class creates and stores textures.
bool moveInRenderQueue(const std::string &toMoveName, const std::string &targetName, unsigned int destToMove=0, unsigned int targetDest=0, int beforeOrAfter=0)
Definition: SlManager.cc:315
bool moveInRenderQueueBefore(const std::string &toAdd, const std::string &beforeThis, unsigned int destToAdd=0, unsigned int destBeforeThis=0)
Definition: SlManager.cc:371
void setSpriteDestinationOrigin(const std::string &name, int x, int y, unsigned int destination=0)
Definition: SlManager.cc:562
SDL_Renderer * renderer()
Definition: SlManager.h:109