/*
 *
 * Реакции
 *
 */


ЗагрузитьРесурсыКолобка= мир =>
{
    мир.сцена.load.spritesheet(
        "колобок",
        "ресурсы/колобок/колобок.png",
        {
            frameWidth: 97,
            frameHeight: 94,
        }
    );
};


// // // //


СоздатьКолобка = мир =>
{
    мир.колобок = мир.сцена.physics.add.sprite(100, 500, "колобок");
    мир.колобок.depth = 10;
    мир.колобок.body.setSize(50);
    // Портит анимацию прыжков!
    //мир.колобок.setBounceY(0.1);

    // Следить за колобком камерой.
    const камера = мир.сцена.cameras.main;
    камера.startFollow(мир.колобок, false, 0.1, 0.1);
};


// // // //


СоздатьАнимацииКолобка = мир =>
{
    var анимации = мир.сцена.anims;
    анимации.create({
        key: "колобок-неподвижен",
        frames: [{ key: "колобок", frame: 0 }],
        frameRate: 20,
    })
    анимации.create({
        key: "колобок-движение",
        frames: мир.сцена.anims.generateFrameNumbers("колобок", { start: 23, end: 1 }),
        frameRate: 20,
        repeat: -1,
    })
    анимации.create({
        key: "колобок-прыжок",
        frames: [{ key: "колобок", frame: 24 }],
        frameRate: 20,
    })
};


// // // //


НастроитьСтолкновениеКолобка = мир =>
{
    мир.сцена.physics.add.collider(мир.колобок, мир.каркас);
    мир.сцена.physics.add.collider(мир.колобок, мир.вещи);
    мир.столкновениеПлатформы = мир.сцена.physics.add.collider(мир.колобок, мир.платформы);

    var столкновениеВраги = мир.сцена.physics.add.collider(мир.колобок, мир.враги);
    столкновениеВраги.overlapOnly = true;
    столкновениеВраги.collideCallback = function(a, b) {
        мир.уведомить("столкновение с врагом");
    };
};


// // // //


ПереместитьКолобка = мир =>
{
    if (!мир.управление)
    {
        мир.колобок.setVelocityX(0);
        return;
    }

    var x = 0;
    if (мир.управление.направление == -1)
    {
        x = -200;
        мир.колобок.flipX = true;
    }
    else if (мир.управление.направление == 1)
    {
        x = 200;
        мир.колобок.flipX = false;
    }
    мир.колобок.setVelocityX(x);

    if (мир.управление.прыжок && мир.колобок.body.touching.down)
    {
        мир.колобок.setVelocityY(-570);
    }
};


// // // //


АнимироватьКолобка = мир => {
    var есть = "";
    if (мир.колобок.anims.currentAnim)
    {
        есть = мир.колобок.anims.currentAnim.key;
    }

    var надо = "колобок-неподвижен";
    if (мир.управление && мир.управление.прыжок && !мир.колобок.body.touching.down)
    {
        надо = "колобок-прыжок";
    }
    else if (мир.колобок.body.velocity.x != 0)
    {
        надо = "колобок-движение";
    }

    if (есть != надо)
    {
        мир.колобок.anims.play(надо);
        мир.уведомить("изменили анимацию колобка");
    }
};


// // // //


ОтключитьСтолкновениеСПлатформами = мир => {
    мир.столкновениеПлатформы.active = false;
};


// // // //


ВключитьСтолкновениеСПлатформами = мир => {
    мир.столкновениеПлатформы.active = true;
};


// // // //


ОстановитьПередвижениеВещей = мир => {
    var вещи = мир.вещи.getChildren();
    for (var н in вещи)
    {
        var вещь = вещи[н];
        вещь.body.stop();
    }
};


/*
 *
 * Последовательность
 *
 */


мир.разобрать(`
загрузить ресурсы сцены
    загрузить ресурсы колобка
создать сцену
    создать колобка
    создать анимации колобка
    настроить столкновение колобка
столкновение с врагом
    отключить столкновение с платформами
обновить сцену
    переместить колобка
    анимировать колобка
изменили анимацию колобка
    остановить передвижение вещей
`);