мир.игрок = {
    задано: {},
    прыжок: {
        статус: 0,
        время: new Date(),
        скоростьОтсутствия: 0.0001,
    },
    тело: null,
};


// // // //


мир.ключники.push(function(ключ, путь, значение){
    if (!ключ.startsWith("игрок"))
    {
        return;
    }

    var свойство = путь.slice(1).join(".");
    мир.игрок.задано[свойство] = значение;
});


// // // //


мир.игрок.обновить = function() {
    мир.игрок.тело = мир.объекты.тела[мир.игрок.задано.объект];
    if (!мир.игрок.тело)
    {
        return;
    }

    мир.игрок.переместить();
    мир.игрок.задатьМаскуСтолкновения();
    мир.игрок.отслеживатьПрыжкиПриземления();
};


// // // //


мир.игрок.переместить = function()
{
    var к = [
        мир.игрок.задано["клавиши.0"],
        мир.игрок.задано["клавиши.1"],
        //мир.игрок.задано["клавиши.2"],
    ];
    var влево = (мир.ввод.клавиши[к[0]] == true);
    var вправо = (мир.ввод.клавиши[к[1]] == true);

    var скоростьГ = мир.игрок.задано["скорость.0"];
    var скоростьX = 0;

        //var вверх = (мир.ввод.клавиши[к[2]] == true);
        //var скоростьY = (вверх && Math.abs(тело.velocity.y) <= 0.00001) ? -скоростьВ : тело.velocity.y;
    var скоростьВ = мир.игрок.задано["скорость.1"];
    var скоростьY = (мир.игрок.прыжок.статус == 1) ? -скоростьВ : мир.игрок.тело.velocity.y;

    if (влево)
    {
        скоростьX = -скоростьГ;
    }
    else if (вправо)
    {
        скоростьX = скоростьГ;
    }

    Matter.Sleeping.set(мир.игрок.тело, false);
    Matter.Body.setVelocity(мир.игрок.тело, { x: скоростьX, y: скоростьY });
};


// // // //


мир.игрок.задатьМаскуСтолкновения = function()
{
    var прыжок = мир.игрок.тело.velocity.y < -1;
    var маска = прыжок ? 1 : (1 | 2);
    мир.игрок.тело.collisionFilter.mask = маска;

/*
if (тело.velocity.y < мир.игрок.minv)
{
    мир.игрок.minv = тело.velocity.y;
}
if (тело.velocity.y > мир.игрок.maxv)
{
    мир.игрок.maxv = тело.velocity.y;
}
document.getElementById("отладка").innerHTML = `min: ${мир.игрок.minv} max: ${мир.игрок.maxv}`;

if (Math.abs(мир.игрок.было - тело.velocity.y) > 0.001)
{
    мир.игрок.было = тело.velocity.y;
    console.debug("vel", мир.игрок.было);
}
*/

};


// // // /


мир.игрок.отслеживатьПрыжкиПриземления = function()
{
    if (мир.игрок.прыжок.статус == 1)
    {
        мир.игрок.прыжок.статус = 2;
console.debug("в прыжке");
    }
    var нетДвижения = (Math.abs(мир.игрок.тело.velocity.y) < мир.игрок.прыжок.скоростьОтсутствия);
    var клавиша = мир.игрок.задано["клавиши.2"];
    var вверх = (мир.ввод.клавиши[клавиша] == true);
document.getElementById("отладка").innerHTML = `!статус/вверх/нетДвижения: '${!мир.игрок.прыжок.статус}'/'${вверх}'/'${нетДвижения}'`;
    if (
        мир.игрок.прыжок.статус == 0 &&
        вверх &&
        нетДвижения
    ) {
        мир.игрок.прыжок.статус = 1;
console.debug("начали прыжок");
    }

    if (мир.игрок.прыжок.статус != 2)
    {
        return;
    }

    var сейчас = new Date();
    var прошло = сейчас - мир.игрок.прыжок.время;
    if (
        (прошло > 20) &&
        нетДвижения
    ) {
      мир.игрок.прыжок.время = сейчас;
      мир.игрок.прыжок.статус = 0;
console.debug("закончили прыжок");
    }
};
