catapult_renderer.cpp 1.2 KB

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