package util;

import javafx.scene.input.KeyCode;

public final class KeyPress {

    private static int keyPressSpeed = 1000; // time difference between keypresses in ms
    private static long lastKeyEventTime = 0;
    private static KeyCode lastKeyPressedCode;

    public static boolean isDoublePress(KeyCode matchingKeyCode, KeyCode currentKeyCode) {
        long keyEventTime = System.currentTimeMillis();
        if ((keyEventTime - lastKeyEventTime) < keyPressSpeed
                && currentKeyCode.equals(lastKeyPressedCode)
                && currentKeyCode.equals(matchingKeyCode)) {
            lastKeyPressedCode = null;
            lastKeyEventTime = 0;
            return true;
        } else {
            lastKeyPressedCode = currentKeyCode;
            lastKeyEventTime = keyEventTime;
        }
        return false;
    }

    public static boolean isValidKeyCombination(KeyCode firstKeyPressed, KeyCode keyPressed) {
        long keyEventTime = System.currentTimeMillis();
        if ((keyEventTime - lastKeyEventTime) < keyPressSpeed && firstKeyPressed.equals(lastKeyPressedCode)) {
            lastKeyPressedCode = null;
            lastKeyEventTime = 0;
            return true;
        } else {
            lastKeyPressedCode = keyPressed;
            lastKeyEventTime = keyEventTime;
        }
        return false;
    }

    public static void setLastKeyPressedCodeAndTime(KeyCode code) {
        lastKeyPressedCode = code;
        lastKeyEventTime = System.currentTimeMillis();

    }

    private KeyPress() {
    }
}