Kaynağa Gözat

SFML : Better key state resolution

Eiyeron Fulmincendii 10 yıl önce
ebeveyn
işleme
4aafc071ec
1 değiştirilmiş dosya ile 5 ekleme ve 21 silme
  1. 5 21
      platform/sfml/Input.cpp

+ 5 - 21
platform/sfml/Input.cpp

@@ -43,33 +43,17 @@ void INPUT::key_poll()
         KeyState resulting_key_state = KS_RELEASED;
         if(current_key_state)
         {
-            switch(current_key_state)
-            {
-                case KS_RELEASED:
-                case KS_JUST_RELEASED:
+            if(previous_key_state == KS_RELEASED || previous_key_state == KS_JUST_RELEASED)
                     resulting_key_state = KS_JUST_PRESSED;
-                    break;
-
-                case KS_JUST_PRESSED:
-                case KS_PRESSED:
+            else if(previous_key_state == KS_JUST_PRESSED || previous_key_state == KS_PRESSED)
                     resulting_key_state = KS_PRESSED;
-                    break;
-            }
         }
         else
         {
-            switch(current_key_state)
-            {
-                case KS_RELEASED:
-                case KS_JUST_RELEASED:
-                    resulting_key_state = KS_RELEASED;
-                    break;
-
-                case KS_JUST_PRESSED:
-                case KS_PRESSED:
+            if(previous_key_state == KS_PRESSED || previous_key_state == KS_JUST_PRESSED)
                     resulting_key_state = KS_JUST_RELEASED;
-                    break;
-            }
+            else if(previous_key_state == KS_JUST_RELEASED || previous_key_state == KS_RELEASED)
+                    resulting_key_state = KS_RELEASED;
         }
         key_states[i] = resulting_key_state;
     }