Explorar el Código

testbed: a couple of extra commands

skypjack hace 1 mes
padre
commit
2114aaaf8b

+ 3 - 1
testbed/component/input_listener_component.h

@@ -9,7 +9,9 @@ struct input_listener_component {
         DOWN,
         LEFT,
         RIGHT,
-        STOP
+        STOP,
+        PLUS,
+        MINUS
     };
 
     type command{type::NONE};

+ 17 - 7
testbed/system/command_system.cpp

@@ -1,4 +1,5 @@
 #include <component/input_listener_component.h>
+#include <component/rect_component.h>
 #include <component/velocity_component.h>
 #include <entt/entity/registry.hpp>
 #include <system/command_system.h>
@@ -6,23 +7,32 @@
 namespace testbed {
 
 void command_system(entt::registry &registry) {
-    for([[maybe_unused]] auto [entt, input, vel]: registry.view<input_listener_component, velocity_component>().each()) {
+    for([[maybe_unused]] auto [entt, input]: registry.view<input_listener_component>().each()) {
         switch(input.command) {
         case input_listener_component::type::UP:
-            vel.dy = -1.0f;
+            registry.get<velocity_component>(entt).dy = -1.0f;
             break;
         case input_listener_component::type::DOWN:
-            vel.dy = 1.0f;
+            registry.get<velocity_component>(entt).dy = 1.0f;
             break;
         case input_listener_component::type::LEFT:
-            vel.dx = -1.0f;
+            registry.get<velocity_component>(entt).dx = -1.0f;
             break;
         case input_listener_component::type::RIGHT:
-            vel.dx = 1.0f;
+            registry.get<velocity_component>(entt).dx = 1.0f;
             break;
-        case input_listener_component::type::STOP:
+        case input_listener_component::type::STOP: {
+            auto &vel = registry.get<velocity_component>(entt);
             vel.dx = vel.dy = 0.0f;
-            break;
+        } break;
+        case input_listener_component::type::PLUS: {
+            registry.get<rect_component>(entt).w *= 1.1;
+            registry.get<rect_component>(entt).h *= 1.1;
+        } break;
+        case input_listener_component::type::MINUS: {
+            registry.get<rect_component>(entt).w *= 0.9;
+            registry.get<rect_component>(entt).h *= 0.9;
+        } break;
         default:
             break;
         }

+ 6 - 0
testbed/system/input_system.cpp

@@ -40,6 +40,12 @@ void input_system(entt::registry &registry, const SDL_Event &event, bool &quit)
         case SDLK_SPACE:
             internal::update_listeners(registry, input_listener_component::type::STOP);
             break;
+        case SDLK_PLUS:
+            internal::update_listeners(registry, input_listener_component::type::PLUS);
+            break;
+        case SDLK_MINUS:
+            internal::update_listeners(registry, input_listener_component::type::MINUS);
+            break;
         }
         break;
     }