Under the hood I decided to go the route of using a simple linked list for a data structure. The linked list stores the data, and returns a pointer that is used by game elements to access the data. If a game element tries to re-add
the same data, the manager checks to see it is already in the list and returns the pointer that was previously assigned. Even with this approach Frost and Flames loading time is decreased significantly.
The initial texture manager that I implemented in Frost and Flame used a large struct of variables defined for each resource....while this worked rather well, adding resources was tedious and inefficient.
The second approach I took to resource management was in the form of having each game manager / element manage its own resources, this led to a lot of duplicate resources being loaded. The only advantage to this approach was that different game components could load resources on demand, but managing that process was also tiresome to implement.
So far the new resource managers seem to have solved many issues with regards to both complexity in their integration and use.
But definitely worth it!