/**
 * @overview Life of German Reallife - Player Keys keys.js
 * @author VegaZ
 * @copyright (c) 2008 - 2018 Life of German
 */

//https://docs.microsoft.com/de-de/windows/desktop/inputdev/virtual-key-codes


const player = mp.players.local;

export default function keys(globalData: GlobalData) {

    var showInventory = false;
    var showGui = true;
    var showInv = false;

    //ENTER
    mp.keys.bind(0x0D, false, function () {
        if (globalData.InChat) {
            globalData.InChat = false;
        }
    });

    //LEFT ARROW (Interaktion mit anderen Spielern)
    mp.keys.bind(0x25, false, function () {
        if (!globalData.InChat && !showInv && !globalData.InMenu) {
            mp.events.callRemote("keyPress:LEFT_ARROW");
        }
    });

    //UP ARROW (Interaktion mit Spielwelt)
    mp.keys.bind(0x26, false, function () {
        if (!globalData.InChat && !showInv && !globalData.InMenu) {
            mp.events.callRemote("keyPress:UP_ARROW");
        }
    });

    //RIGHT ARROW (Fraktionsinteraktion)
    mp.keys.bind(0x27, false, function () {
        if (!globalData.InChat && !showInv && !globalData.InMenu) {
            mp.events.callRemote("keyPress:RIGHT_ARROW");
        }
    });

    //DOWN ARROW (Eigeninteraktion)
    mp.keys.bind(0x28, false, function () {
        if (!globalData.InChat && !showInv && !globalData.InMenu && !globalData.InInput && !globalData.InTuning) {
            mp.events.callRemote("keyPress:DOWN_ARROW");
        }
    });
    //F7 //Unshowalles
    mp.keys.bind(0x76, false, function () {
        if (showGui === true) {
            showGui = false;
            mp.events.call("toggleUi", false);
        } else {
            showGui = true;
            mp.events.call("toggleUi", true);
        }
    });

    //NUM2 //Save Blips in Edit Mode
    mp.keys.bind(0x62, false, function () {
        if (!globalData.InChat) {
            mp.events.callRemote("keyPress:NUM2");
        }
    });

    //NUM5 //Fraktionsinteraktion (Tasks sortieren)
    //mp.keys.bind(0x65, false, function () {
    //    if (!globalData.InChat && globalData.Interaction) {
    //        mp.events.call("sortFactionTasks", true);
    //    }
    //});

    //E
    mp.keys.bind(0x45, false, function () {
        if (!globalData.InChat) {
            mp.events.callRemote("keyPress:E");
        }
    });


    //I //Inventar
    mp.keys.bind(0x49, false, function () {
        if (!globalData.InChat && !globalData.InTuning && !globalData.InMenu) {
            if (showInv === false) {
                showInv = true;
            } else {
                showInv = false;
            }
            mp.events.callRemote("keyPress:I");
        }
    });

    //O //Spielerliste
    mp.keys.bind(0x4F, false, function () {
        if (!globalData.InChat) {
            mp.events.callRemote("keyPress:O");
            //mp.events.call("showPlayerlist"); 
        }
    });

    //K //Dienstkleidung
    mp.keys.bind(0x4B, false, function () {
        if (!globalData.InChat) {
            mp.events.callRemote("keyPress:K");
        }
    });

    //L //Türen auf / zuschließen
    mp.keys.bind(0x4C, false, function () {
        if (!globalData.InChat) {
            mp.events.callRemote("keyPress:L");
        }
    });

    //N //Motor Starten
    mp.keys.bind(0x4E, false, function () {
        if (!globalData.InChat) {
            if (!player.vehicle) return;
            if (player.vehicle.getSpeed() > 5) return;
            mp.events.callRemote("keyPress:N");
        }
    });

    //T
    mp.keys.bind(0x54, false, function () {
        if (!globalData.InChat) {
            globalData.InChat = true;
        }
    });

    //X // Fahrzeug Verwaltung - Menü
    mp.keys.bind(0x58, false, function () {
        if (!globalData.InChat) {
            mp.events.callRemote("keyPress:X");
        }
    });

    //2 // Job Starten
    mp.keys.bind(0x4A, false, () => {
        if (!globalData.InChat && !globalData.InInput && !globalData.InMenu && globalData.LoggedIn) {
            mp.events.callRemote("CLIENT:JobManager_ShowJobMenu");
        }
    })
}