command_system.cpp 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #include <component/input_listener_component.h>
  2. #include <component/rect_component.h>
  3. #include <component/velocity_component.h>
  4. #include <entt/entity/registry.hpp>
  5. #include <system/command_system.h>
  6. namespace testbed {
  7. void command_system(entt::registry &registry) {
  8. for([[maybe_unused]] auto [entt, input]: registry.view<input_listener_component>().each()) {
  9. switch(input.command) {
  10. case input_listener_component::type::UP:
  11. registry.get<velocity_component>(entt).dy = -1.0f;
  12. break;
  13. case input_listener_component::type::DOWN:
  14. registry.get<velocity_component>(entt).dy = 1.0f;
  15. break;
  16. case input_listener_component::type::LEFT:
  17. registry.get<velocity_component>(entt).dx = -1.0f;
  18. break;
  19. case input_listener_component::type::RIGHT:
  20. registry.get<velocity_component>(entt).dx = 1.0f;
  21. break;
  22. case input_listener_component::type::STOP: {
  23. auto &vel = registry.get<velocity_component>(entt);
  24. vel.dx = vel.dy = 0.0f;
  25. } break;
  26. case input_listener_component::type::PLUS: {
  27. registry.get<rect_component>(entt).w *= 1.1;
  28. registry.get<rect_component>(entt).h *= 1.1;
  29. } break;
  30. case input_listener_component::type::MINUS: {
  31. registry.get<rect_component>(entt).w *= 0.9;
  32. registry.get<rect_component>(entt).h *= 0.9;
  33. } break;
  34. default:
  35. break;
  36. }
  37. input.command = input_listener_component::type::NONE;
  38. }
  39. }
  40. } // namespace testbed