Shading is a powerful concept. The only problem with injecting a stream of extra-graphical-fanciness to our game at this point is the fact that it is simply not architected to deal with using shaders efficiently. Most, if not all of our classes that do any kind of drawing do so by having direct access to the
sf::RenderWindow class, which means they would have to pass in their own shader instances as arguments. This is not efficient, re-usable, or flexible at all. A better approach, such as a separate class dedicated to rendering, is a necessity.
In order to be able to switch from shader to shader with relative ease, we must work on storing them properly within the class:
using ShaderList = std::unordered_map<std::string, std::unique_ptr<sf::Shader>>; ...