elephant_renderer.cpp 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #include "elephant_renderer.h"
  2. #include "../../game/core/component.h"
  3. #include "../../game/systems/nation_id.h"
  4. #include "nations/carthage/elephant_renderer.h"
  5. #include "registry.h"
  6. namespace Render::GL {
  7. void register_elephant_renderer(EntityRendererRegistry &registry) {
  8. Carthage::register_elephant_renderer(registry);
  9. registry.register_renderer(
  10. "elephant", [&registry](const DrawContext &p, ISubmitter &out) {
  11. if (p.entity == nullptr) {
  12. return;
  13. }
  14. auto *unit = p.entity->get_component<Engine::Core::UnitComponent>();
  15. if (unit == nullptr) {
  16. return;
  17. }
  18. std::string renderer_key;
  19. switch (unit->nation_id) {
  20. case Game::Systems::NationID::Carthage:
  21. renderer_key = "troops/carthage/elephant";
  22. break;
  23. case Game::Systems::NationID::RomanRepublic:
  24. renderer_key = "troops/carthage/elephant";
  25. break;
  26. default:
  27. renderer_key = "troops/carthage/elephant";
  28. break;
  29. }
  30. auto renderer = registry.get(renderer_key);
  31. if (renderer) {
  32. renderer(p, out);
  33. }
  34. });
  35. }
  36. } // namespace Render::GL