Eiyeron Fulmincendii 10 anni fa
parent
commit
885d41b46f
1 ha cambiato i file con 44 aggiunte e 0 eliminazioni
  1. 44 0
      src/engine/StateMachine.cpp

+ 44 - 0
src/engine/StateMachine.cpp

@@ -10,9 +10,52 @@ using namespace WalrusRPG::Graphics;
 using namespace WalrusRPG::States;
 using namespace WalrusRPG::Timing;
 using WalrusRPG::Input::Key;
+using WalrusRPG::Input::KeyState;
 
 #define STATEMACHINE WalrusRPG::StateMachine
 
+namespace  {
+    void draw_button(unsigned x, unsigned y, KeyState state)
+    {
+        put_horizontal_line(x+1, x+5, y, Gray);
+        put_horizontal_line(x+1, x+5, y+6, Gray);
+        put_vertical_line(x, y+1, y+5, Gray);
+        put_vertical_line(x+6, y+1, y+5, Gray);
+        switch(state)
+        {
+            case KeyState::KS_RELEASED:
+                put_rectangle({x+1, y+1, 5, 5}, White);
+                break;
+            case KeyState::KS_JUST_RELEASED:
+                put_rectangle({x+1, y+1, 5, 5}, Magenta);
+                break;
+            case KeyState::KS_JUST_PRESSED:
+                put_rectangle({x+1, y+1, 5, 5}, Cyan);
+                break;
+            case KeyState::KS_PRESSED:
+                put_rectangle({x+1, y+1, 5, 5}, Black);
+                break;
+        }
+    }
+    void draw_buttons()
+    {
+        draw_button(0, 24, key_get_state(Key::K_L));
+        draw_button(56, 24, key_get_state(Key::K_R));
+
+        draw_button(8, 32, key_get_state(Key::K_UP));
+        draw_button(0, 40, key_get_state(Key::K_LEFT));
+        draw_button(16, 40, key_get_state(Key::K_RIGHT));
+        draw_button(8, 48, key_get_state(Key::K_DOWN));
+
+        draw_button(28, 48, key_get_state(Key::K_SELECT));
+        draw_button(36, 48, key_get_state(Key::K_START));
+
+        draw_button(48, 44, key_get_state(Key::K_B));
+        draw_button(56, 36, key_get_state(Key::K_A));
+
+    }
+} /* namespace  */
+
 STATEMACHINE::StateMachine(State *state)
 {
     push(state);
@@ -64,6 +107,7 @@ void STATEMACHINE::run()
                 Text::print_format(0, 240 - 8, "%ufps, %uups", TIMER_FREQ / frame_time,
                                    TIMER_FREQ / update_time);
             }
+            draw_buttons();
             Graphics::frame_end();
         }