Преглед изворни кода

SFML : Better key state resolution

Eiyeron Fulmincendii пре 10 година
родитељ
комит
4aafc071ec
1 измењених фајлова са 5 додато и 21 уклоњено
  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;
     }