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


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


// // // //


СоздатьГруппыСущностей = мир =>
{
    мир.каркас = мир.сцена.physics.add.staticGroup();
    мир.платформы = мир.сцена.physics.add.staticGroup();
    мир.враги = мир.сцена.add.group();
};


// // // //


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

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

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


// // // //


ОпределятьСтолкновениеКолобкаИВраговСГруппамиСущностей = мир =>
{
    мир.сцена.physics.add.collider(мир.колобок, мир.каркас);
    мир.столкновениеПлатформы = мир.сцена.physics.add.collider(мир.колобок, мир.платформы);


    мир.сцена.physics.add.collider(мир.враги, мир.каркас);
    мир.сцена.physics.add.collider(мир.враги, мир.платформы);

    var враг = мир.сцена.physics.add.sprite(750, 100, "основа");
    враг.setScale(5, 5).refreshBody();
    враг.depth = 10;
    мир.враги.add(враг);


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


// // // //


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

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

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


// // // //


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


// // // //


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


// // // //


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


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


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

