equipment_registry.cpp 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #include "equipment_registry.h"
  2. #include <utility>
  3. namespace Render::GL {
  4. auto EquipmentRegistry::instance() -> EquipmentRegistry & {
  5. static EquipmentRegistry registry;
  6. return registry;
  7. }
  8. void EquipmentRegistry::register_equipment(
  9. EquipmentCategory category, const std::string &id,
  10. std::shared_ptr<IEquipmentRenderer> renderer) {
  11. if (renderer == nullptr) {
  12. return;
  13. }
  14. m_renderers[category][id] = std::move(renderer);
  15. }
  16. auto EquipmentRegistry::get(EquipmentCategory category, const std::string &id)
  17. const -> std::shared_ptr<IEquipmentRenderer> {
  18. auto category_it = m_renderers.find(category);
  19. if (category_it == m_renderers.end()) {
  20. return nullptr;
  21. }
  22. auto renderer_it = category_it->second.find(id);
  23. if (renderer_it == category_it->second.end()) {
  24. return nullptr;
  25. }
  26. return renderer_it->second;
  27. }
  28. auto EquipmentRegistry::has(EquipmentCategory category,
  29. const std::string &id) const -> bool {
  30. auto category_it = m_renderers.find(category);
  31. if (category_it == m_renderers.end()) {
  32. return false;
  33. }
  34. return category_it->second.find(id) != category_it->second.end();
  35. }
  36. } // namespace Render::GL